3、Spring之入门案例

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。3、Spring之入门案例,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

3.1、创建module

3.1.1、右击project,创建新module

image

3.1.2、选择maven

image

3.1.3、设置module名称和路径

image

image

3.1.4、module初始状态

image

3.1.5、配置打包方式和依赖

image

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.rain</groupId>
    <artifactId>spring_helloword</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>
        <!-- 基于Maven依赖传递性,导入spring-context依赖即可导入当前所需所有jar包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.1</version>
        </dependency>
        <!-- junit测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

3.2、示例

3.2.1、创建组件类

image

package org.rain.spring.component;

/**
 * @author liaojy
 * @date 2023/7/25 - 19:17
 */
public class HelloWord {

    public void sayHello(){
        System.out.println("Hello,Spring!");
    }
}

3.2.2、创建Sprig配置文件

image

++++++++++++++++++++++++++++++++++++分割线++++++++++++++++++++++++++++++++++++

image

注意:因为会通过自定义代码指定Spring配置文件,所以Spring配置文件名可以是任意的;
但当整合ssm后,就不能通过通过自定义代码指定Spring配置文件,因此文件名有硬性要求。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--
        bean标签:配置交给Spring的IOC容器管理的对象
            id属性:设置bean的唯一标识
            class属性:设置bean所对应类型的全类名
    -->
    <bean id="helloWord" class="org.rain.spring.component.HelloWord"></bean>

</beans>

3.2.3、创建测试类

image

如图所示,获取到了IOC容器和容器中对应的bean组件,并成功调用了该bean组件的方法

package org.rain.spring.test;

import org.junit.Test;
import org.rain.spring.component.HelloWord;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author liaojy
 * @date 2023/7/25 - 19:39
 */
public class HelloWordTest {

    @Test
    public void testHelloWord(){
        //获取IOC容器
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取IOC容器中的bean
        HelloWord helloWord = (HelloWord)applicationContext.getBean("helloWord");
        helloWord.sayHello();
    }
}


3.3、获取bean的三种方式

3.3.1、根据id获取

由于 id 属性是 bean 的唯一标识,所以根据 bean 标签的 id 属性可以精确获取到一个组件对象;但也存在类型转换问题,具体见上一小节。

3.3.2、根据类型获取(最常用)

image

如图所示,根据类型获取bean,则不存在类型转换问题

    @Test
    public void testHelloWord(){
        //获取IOC容器
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取IOC容器中的bean
        HelloWord helloWord = applicationContext.getBean(HelloWord.class);
        helloWord.sayHello();
    }

注意:如下图所示,当根据类型获取bean时,要求IOC容器中指定类型的bean有且只能有一个;否则会报错

org.springframework.beans.factory.NoUniqueBeanDefinitionException: 
No qualifying bean of type 'org.rain.spring.component.HelloWord' available: 
expected single matching bean but found 2: helloWord,helloWordtwo

image

+++++++++++++++++++++++++++++++++++分割线+++++++++++++++++++++++++++++++++++

image

3.3.3、根据id和类型获取

image

    @Test
    public void testHelloWord(){
        //获取IOC容器
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取IOC容器中的bean
        HelloWord helloWord = applicationContext.getBean("helloWord",HelloWord.class);
        helloWord.sayHello();
    }

3.3.4、重要扩展

如果组件类实现了接口,则根据接口类型可以获取 bean,前提是IOC容器中实现该接口的组件类型的bean有且只能有一个

image

+++++++++++++++++++++++++++++++++++分割线+++++++++++++++++++++++++++++++++++

image

+++++++++++++++++++++++++++++++++++分割线+++++++++++++++++++++++++++++++++++

image

+++++++++++++++++++++++++++++++++++分割线+++++++++++++++++++++++++++++++++++

image

    @Test
    public void testHelloWord(){
        //获取IOC容器
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        //根据接口类型获取IOC容器中的bean
        HelloWord helloWord = (HelloWord) applicationContext.getBean(Hello.class);
        helloWord.sayHello();
    }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/194538.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!