1>IOC操作Bean管理:基于注解方式介绍
1.注解概念
⑴注解是代码特殊标记,格式:@注解名称(属性名称=属性值···)
⑵注解标记范围,类、方法、属性
⑶使用注解目的:简化XML配置
2.Spring针对Bean管理中创建对象提供的注解
⑴@Conponent:通用注解
⑵@Service:通常用于业务层注释
⑶@Contruller:通常用于Web层注释
⑷@Repository:通常用于持久层(Dao层)注释
⑸四个注释的功能是一样的,都可以用来创建对象
2>基于注解方式:创建对象的步骤
1.引入依赖spring-aop-5.2.6.RELEASE.jarpring-aop.jar
2.开启组件扫描,XML文件识别规定路径下的注释内容
⑴如果扫描多个包,多个包使用逗号隔开,也可以直接扫描包的上层目录。
<!--12.1组件扫描-->
<context:component-scan base-package="com.company"></context:component-scan>
⑵在需要用注解方式创建的类上面加上可被XML解析识别的注解
⑶Spring针对Bean管理中创建对象提供的注解的value属性是用来标识当前类(相当于bean标签中的id值),默认值是类名称的第一个字母小写
//注解value的值不写也可以,默认是当前类的第一个字母小写
@Service(value = "userService")
public class UserService {
⑷组件扫描其他配置详情分析
①user-default-filters="false"表示现在不使用默认的filter,使用自己配置的filter,context:include-filter,是指需要扫描的注释
<!--12.2组件扫描其他分析-->
<context:component-scan base-package="com.company" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
</context:component-scan>
② context:exclude-filter,设置不进行扫描的注释内容
<context:component-scan base-package="com.company">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
</context:component-scan>
3>基于注解方式:注入属性
1.可以注入属性的标签@Autowired,@Qualifier,@Resource,@Value
2.@Autowired:使用在字段上用于根据类型依赖注入,使用该注解定义属性,不需要添加该属性的Set方法
3.@Qualifier:结合@Autowired一起使用用于根据名称进行依赖注入
⑴@Qualifier注解用来标识是调用哪一个Bean类
⑵注意:需要加载的Bean类也要加上注解,XML加载时才会扫描到他,进行加载
⑶注意:Value值填的是Bean类的注解的唯一标识值,如果未指定,是其Bean类的首字母小写
4.@Resource:相当于@autowired+@Qualifier,按照名称进行注入
⑴用name属性来标识调用的Bean类
@Qualifier(value = "daoImpl2")
private Dao dao;
5.@Value:注入普通类型属性
@Value(value="abc")
private String name;
4>完全注解开发
1.创建配置类,完全替代XML配置文件
⑴为该类添加注解@Configuration,以示是注解配置类
⑵添加注解@ComponentScan,设置注解扫描路径
@Configuration //作为配置类,替代XML配置文件
@ComponentScan(basePackages = "com.compony")//扫描路径
public class AnnotationConfig {
}
2.测试类获取IOC容器的语句
ApplicationContext context
=new AnnotationConfigApplicationContext(AnnotationConfig.class);