Spring使用注释进行自动装配

使用注解注意事项:

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的方式实现。

关于@Autowired按byType注入和byName注入可见

猜你喜欢

转载自blog.csdn.net/qq_42500503/article/details/108940933
今日推荐