@Bean和@Autowired的区别

在Spring项目中,@Bean注解用于初始化对象并交给Spring管理,常配合@Component等使用,而@Autowired注解则用于自动装配已有Bean,应用在构造函数、setter方法、字段和方法等多个场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在spring项目中经常会用到的两个注解对于初学者会分不清该用哪个
首先@Bean和@Autowired是干啥的呢?
1、@Bean的注解就是替代我们之前配置spring的XML文件里面的的,毕竟按照配置文件的方式,在Java文件上用写代码写个bean,然后再去XML文件通过注册,来回操作太麻烦,直接在当前用到的直接写。
2、@Autowired自动装配指的就是使用将 Spring 容器中的 bean 自动的和我们需要这个 bean 的类组装在一起。

区别

@Bean 修饰的方法表示初始化一个对象并交由Spring IOC去管理,@Bean 只能和@Component @Repository @Controller @Service @Configration 配合使用.

@Autowired 可修饰变量和方法,用于完成自动装配(将需要的外部资源注入) 说白了,自动装配的前提你要先有才能装配,你直接引用资源就行,没有相当于白扯

@Autowired可以用在(spring官网例子)
1.应用于构造函数

public class MovieRecommender {

    private final CustomerPreferenceDao customerPreferenceDao;

    @Autowired
    public MovieRecommender(CustomerPreferenceDao customerPreferenceDao) {
        this.customerPreferenceDao = customerPreferenceDao;
    }
    // ...
}

2.传统的 setter 方法

public class SimpleMovieLister {

    private MovieFinder movieFinder;

    @Autowired
    public void setMovieFinder(MovieFinder movieFinder) {
        this.movieFinder = movieFinder;
    }
    // ...
}

3.应用于具有任意名称和多个参数的方法

public class MovieRecommender {

    private MovieCatalog movieCatalog;

    private CustomerPreferenceDao customerPreferenceDao;

    @Autowired
    public void prepare(MovieCatalog movieCatalog,
            CustomerPreferenceDao customerPreferenceDao) {
        this.movieCatalog = movieCatalog;
        this.customerPreferenceDao = customerPreferenceDao;
    }
    // ...
}

4.应用于字段,甚至可以将其与构造函数混合

public class MovieRecommender {

    private final CustomerPreferenceDao customerPreferenceDao;

    @Autowired
    private MovieCatalog movieCatalog;

    @Autowired
    public MovieRecommender(CustomerPreferenceDao customerPreferenceDao) {
        this.customerPreferenceDao = customerPreferenceDao;
    }
    // ...
}

等等我这里不一一列举了详细查看spring官网 Using @Autowired

总结:

@Bean和@Autowired都是常用的注解但@Bean是将没有的注入到spring容器中@Autowired是将spring容器中已有的自动装配(组合)到另一个类中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值