使用注解注意事项:
1.导入对应的约束
<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
https://www.springframework.org/schema/context/spring-context.xsd">
2.配置注解支持
<context:annotation-config/>
(IDEA配置注解支持会自动导入对应的约束)
@Autowired(require = false or true)
直接在属性上使用即可!也可以在set方式上使用!require参数表示如果容器中不存在时会不会报错,默认require=true
使用@Autowired我们可以不用编写Set方法了,前提是你这个自动装配的属性在IOC (Spring) 容器中存在,默认会根据byType进行自动装配,如果遇到多个类型相同的bean,可以配合@Qualifier(value = "xxx")可以根据byName进行自动装配。
@Nullable 允许属性为空且不报错
@Resource(name = "xxx")
JDK自带,可以配置name=“xxx”来指定bean的id进行装配,默认按byName装配,如果找不到对应的bean,就按照byType装配。
小结:
@Resource和@ Autowired的区别:
1.都是用来自动装配的,都可以放在属性字段上
2.@ Autowired通过byType的方式实现,而且必须要求这个对象存在,如果发现类型大于1时,会按照byName进行装配[常用]
3.@ Resource默认通过byname的方式实现,如果找不到名字,则通过byType实现!如果两个都找不到的情况下,就报错! [常用]
4.执行顺序不同: @ Autowired通过byType的方式实现,@Resource通过byName的方式实现。