Spring自动装配详解(4种常见装配方式)

Spring自动装配详解(4种常见装配方式)-mikechen

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面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法