目录
之前,我们一直在配置文件里写bean标签,用DI注入的方式,将实现类交给spring工厂去管理,然后通过spring工厂去创建实现类的对象
下面我们来看一种新的将实现类交给spring工厂去管理的方式:IOC注解
好处:不用再写配置文件,进行注入
首先我们来看
半注解形式:
使用注解进行注解扫描,但是仍然存在配置文件,最后加载类创建实例对象的时候仍然使用配置文件去加载和创建。
用法:
1、在配置文件里面加上注解扫描:
<context:component-scan base-package="com.qcby.service"/>
可以把范围写大一点
2、在需要交给IOC容器管理的类上加上注解:
比如:
@Component("us") 任何地方 通用的
@Controller("us") 只使用于表现层
@Repository("us") 持久层
@Service("us") 业务层
里面的参数:可以自己指定参数作为名称
如果没有指定名称,则默认使用首字母小写的类名
注解实现DI注入:
常用的注解:
@Value 用于注入普通类型(String,int,double等类型)
@Autowired 默认按类型进行自动装配(引用类型,对象) 注意,此时引用类型注入仍需在配置文件书写
举例:
@Qualifier 和@Autowired一起使用,强制使用名称注入
@Resource Java提供的注解,也被支持。使用name属性,按名称注入,可以代替上面的两个注解
@Scope 生命周期注解,取值singleton(默认值,单实例)和prototype(多例)
放在类的上面
全注解形式:(详见笔记)
使用注解进行注解扫描,编写配置类完全替换配置文件,在配置类上加扫描器
1、在实体类上加注解
2、编写配置类:
此时即可实现与配置文件相同的功能
3、测试类进行测试的方法
拿到对象:
现在有一个问题,不写配置文件,可以通过在实体类或者属性上加注解来进行扫码或注入
那么下面这个dataSource,如何加注解扫描注入?
可以在配置类写一个方法加上@bean注解,效果与上面配置类书写的bean标签效果一致
@Bean注解 只能写在方法上,表明使用此方法创建一个对象,对象创建完成保存到IOC容器中
如果有多个配置类,可以在主配置类加注解导入另一个配置类