目录
文章内容基于B站视频教程,这里做下总结,方便复习查看。常用IoC注解根据用处分为一下四类:
一、用于创建对象
作用同XML配置文件中的<bean>标签。在使用这些注解之前,需要告知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"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--告知spring在创建容器时要扫描的包,配置所需要的标签不是在beans的约束中,而是一个名称为
context名称空间和约束中-->
<context:component-scan base-package="com.lj"></context:component-scan>
</beans>
@Component
作用:用于把当前类对象存入Spring容器
属性:
- value:用于指定bean的id,默认值为首字母小写的类名
@Service
一般用于业务层
@Controller
一般用于表现层
@Repository
一般用于持久层
以上三个注解的作用和属性同@Component。
二、用于注入数据
作用同XML配置文件中<bean>标签中的<property>标签。其中@Autowired、@Qualifier、@Resource用于注入其他bean类型;@Value用于注入基本类型和String类型。
@Autowired
作用:自动按照数据类型注入。只要容器中有唯一的一个bean对象类型和要注入的变量类型一致,就可以注入成功;如果ioc容器中没有任何bean对象的类型与要注入的变量类型一致,则报错。
如果ioc容器中存在多个bean对象的类型与要注入的变量类型一致,则匹配变量名称与bean的id,存在一致的则注入;不存在一致的则报错。注入过程示意如下图:
![](https://img-blog.csdnimg.cn/20210428144457943.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTM1Njkw,size_16,color_FFFFFF,t_70)
@Qualifier
作用:在按照类型注入的基础上再按照名称注入。该注解在给类成员注入时不能单独使用,但是在给方法参数注入时可以单独使用。
属性:
- value:指定注入bean的id
示例:
![](https://img-blog.csdnimg.cn/20210428145705678.png)
@Resource
作用:直接按照bean的id注入。可以独立使用
属性:
- name:指定bean的id
示例:
![](https://img-blog.csdnimg.cn/20210428150509136.png)
@Value
作用:用于注入基本类型和String类型的数据
属性:
- value:指定数据的值。可以使用Spring中的spEl,写法:${表达式}
三、用于改变作用范围
作用同XML配置文件中<bean>标签的scope属性
@Scope
作用:指定bean的作用范围
属性:
- value:指定范围取值。常用取值:singleton、prototype。默认取值:singleton。
四、和生命周期相关的
作用同XML配置文件中<bean>标签的属性init-method和destory-method
@PostConstruct
作用:用于指定初始化方法
@PreDestory
作用:用于指定销毁方法
示例:
![](https://img-blog.csdnimg.cn/20210428151506568.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTM1Njkw,size_16,color_FFFFFF,t_70)