Spring自动装配会在Spring配置经常使用到,下面就详解4种常见的Spring自动装配方式@mikechen
Spring自动装配定义
Spring自动装配,英文是Spring Autowiring,是一种通过自动连接bean之间的依赖关系来简化Spring应用程序开发的方式。
当Spring容器创建bean时,如果发现某个bean依赖于其他bean,它会自动注入(autowire)所需的bean,不需要手动设置依赖关系。
Spring自动装配方式
Spring提供了以下4种常见自动装配的方式:
1.根据类型自动装配(byType)
这种方式Spring会在容器中查找和该属性类型相同的bean,然后自动注入到该属性中。
在需要自动装配的属性上添加@AutoWired注解,示例代码如下:
@Component public class UserDao { // some code here } @Component public class UserService { @Autowired private UserDao userDao; // some code here }
上面有一个名为UserService的类需要依赖一个名为UserDao的类,我们可以将UserDao类定义为Spring bean,并使用@Autowired注解将其注入到UserService类中。
备注:如果容器中存在多个相同类型的bean,则会抛出异常。
2.根据名称自动装配(byName)
这种方式是根据属性名自动装配,Spring会在容器中查找和该属性名相同的bean,然后自动注入到该属性中。
在需要自动装配的属性上添加@AutoWired注解,示例代码如下:
@Component public class Person { @Autowired private Address address; // ... }
容器会自动查找并装配与指定名称匹配的bean。
3.构造函数自动装配(constructor)
这种方式是根据构造函数参数类型自动装配,Spring会在容器中查找和构造函数参数类型相同的bean,然后自动注入到构造函数中。
在构造函数上添加@Autowired注解即可,示例代码如下:
@Component public class Person { private Address address; @Autowired public Person(Address address) { this.address = address; } // ... }
容器会自动查找与构造函数参数类型匹配的bean,然后将其传递给构造函数。
4.@Resource注解
@Resource是JDK自带的注解,Spring也可以使用它来实现自动装配。
它可以根据属性名或者属性类型来自动装配bean,示例代码如下:
@Component public class Person { @Resource private Address address; // ... }
以上就是Spring自动装配详解,更多Spring内容请查看:Spring教程(史上最全图文详解)
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》