@component与@Configuration创建bean

  • @configuration配置

针对@configuration,首先@Configuration与@Bean搭配使用,一般在项目中定义配置累才会使用这个注解

@Configuration

代表这个类是一个配置类,可理解为用spring的时候xml里面的<beans>标签

@Bean

用来定义一个bean,可以指定初始、销毁方法,及bean范围等,可理解为用spring的时候xml里面的<bean>标签

  • bean的管理方式

Spring帮助我们管理Bean分为两个部分,一个是注册Bean,一个装配Bean

。 完成这两个动作有三种方式,

一、是使用自动配置的方式、

二、是使用JavaConfig的方式,

三、是使用XML配置的方式。

  • 自动配置

针对于@Component注解:使用@Component去告诉Spring,我是一个bean,你要来管理我,然后使用@AutoWired注解去装配Bean(所谓装配,就是管理对象直接的协作关系)(参考来自Spring之@Configuration、@Component、@Bean - 云+社区 - 腾讯云 (tencent.com))。

@Configuration
@ConfigurationProperties("remote")
@Data
public class RemoteProperties {

    /**
     * 调用ip
     */
    private String host;

    /**
     * 调用本地ip
     */
    private String ip;

}
  • JavaConfig配置

 @Configuration其实就是告诉spring,spring容器要怎么配置(怎么去注册bean,怎么去处理bean之间的关系(装配))。@Bean的意思就是,我要获取这个bean的时候,你spring要按照这种方式去帮我获取到这个bean。

@Configuration
public class BeanConfig {

    @Bean
    public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
        ThreadPoolTaskScheduler executor = new ThreadPoolTaskScheduler();
        // 线程池数量
        executor.setPoolSize(Runtime.getRuntime().availableProcessors());
        //设置好了之后可以方便我们定位处理任务所在的线程池
        executor.setThreadNamePrefix("charge-task-Executor-");
        //用来设置线程池关闭的时候等待所有任务都完成再继续销毁其他的Bean
        executor.setWaitForTasksToCompleteOnShutdown(true);
        //该方法用来设置线程池中任务的等待时间,如果超过这个时候还没有销毁就强制销毁,以确保应用最后能够被关闭,而不是阻塞住
        executor.setAwaitTerminationSeconds(60);
        return executor;
    }
}
  • xml的方式

<bean>标签就是告诉spring怎么获取这个bean,各种<ref>就是手动的配置bean之间的关系。

用@Bean注解的方法:会实例化、配置并初始化一个新的对象,这个对象会由spring IoC 容器管理。

  • 针对@Component与@Configuration同时对同一对象生成bean

@Configuration 加 @Bean 会创建一个 userName 不为 null 的 UserManager 对象,

而 @Component 也会创建一个 userName 为 null 的 UserManager 对象

那么我们在其他对象中注入 UserManager 对象时,到底注入的是哪个对象?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值