20200229——Spring基于注解的IOC以及IOC的案例 二

注解配置
学习基于注解的ioc配置,注解与xml配置实现的功能都是一样的,都是降低程序间的耦合,只是形式不一样

在这里插入图片描述

@Component

@Component

把当前类对象存入spring容器中

属性 value用于指定唯一id,默认值是当前类名,首字母小写

当我们把注释好的对象放在spring容器中,还有一个最最最重要的事情。
告知spring在创建容器时要扫描包,配置所需要的标签不是在beans的约束中,而是一个名称为context名称空间和约束中

在这里插入图片描述

Controller 表现层
Service 业务层
Repository 持久层
以上三个注解于Component一模一样的,它们三个是Spring框架是Spring为我们提供明确的注解,使我们的三层对象更加清晰

用于注入数据
它们的作用就和在xml中配置文件中的bean标签中写的property标签的作用是一样 的
Autowired 作用 自动按照类型注入,只要容器中有唯一的一个bean对象类型和要
注入的变量类型匹配,就可以注入成功
如果ioc容器中没有任何bean类型和要注入的变量类型匹配,则报错
如果ioc容器有多个匹配的情况

用注解注入的时候,set方法就不是必须得了

qualifier
在按照类中注入的基础之上再按照名称注入,它给类成员注入时不能单独使用,但是给方法参数注入时可以

value指定注入bean的id value =

resource
相同于qualifier注解,但是他可以单独使用,直接按照bean的id注入 name=

小总结
以上三个注入都只能注入其他bean类型的数据,而基本类型和String类型无法使用上述注解实现
另外,集合的注入只能通过xml实现

@Scope
相同于xml注入
分为多例单例
在这里插入图片描述

我们不想使用xml文件进行配置,有没有方法能代替这个xml里面的文件呢
答案是我们需要创建一个配置类
@Configuration
指定当前类是一个配置类

在这里插入图片描述
想把这些内容都存放到配置类中

@ComponentScans()  指定要扫描的包

value作为属性,与basePackage作用一样,都是指定用于创建容器要扫描的包
我们使用此注解等同于在xml中配置了

在这个配置类里面,我们需要创建我们所需要的对象

 <bean id="runner" class="org.apache.commons.dbutils.QueryRunner" scope="prototype">
        <!--注入数据源-->
        <constructor-arg name="ds" ref="dataSource"></constructor-arg>
    </bean>

在这里插入图片描述
但是,下面这个方法不会生成对象存入到Spring的容器中
那么有一个注解会让这个方法生成的对象直接存放到Spring的ioc容器中
就是 @Bean
bean 作用 用于把当前方法的返回值作为bean对象存入ioc的容器中
其属性 name:用于指定bean的id,默认值是当前方法的名称
key = 方法名称 value = 返回值

在这里插入图片描述
这样就完成了

细节
当我们用注解配置方法时,方法有参数时,Spring框架会自动从ioc容器中查找有没有可用的bean对象
查找的方式和Autowired注解的作用是一样的

在这里插入图片描述
我们原来都是在bean.xml中配置这个文件,然后通过Application获取顶级容器,在从容器中getBean 获取到bean对象

在这里插入图片描述用到了另一实体类 注解
以前构造方法中是“bean.xml”
现在改成配置类

配置类加载配置类
如果一个配置类只想进行关于数据库的配置
就可以在另一个配置类中 引入这个配置类
有Import注解的类就是配置类,而导入的都是子配置类

@PropertySource
在这里插入图片描述
用于指定properties文件的位置
value 指定文件的名称
关键字 classpath 表示类路径

@Qualifier 补充
在这里插入图片描述
有两个数据源,用注解注释一下判断用哪个数据源

关于junit与spring
程序的入口是main方法
junit单元测试,没有main方法也能执行
该方法就会判断当前测试类哪些方法有@Test
junit就让有注解的方法执行

junit不知道我们是否采用了spring框架,所以也不会从ioc容器取出
所以测试方法就算有写了autowired注解,也无法注入

在这里插入图片描述
@Runwith()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值