spring注解详解与用法(2)@Bean

导航:更多的spring注解标签点击这里

前言:@Bean是spring中使用最多的一个注解了,虽然我们编程用的可能不多,但spring内部却有无数

我们的@Controller||@RestController||@Service||@Reponsitory都是使用的@Bean逻辑注入的,我们编程使用的最多的一个注解@Autowired让spring注入就是注入的@Bean逻辑,我看了网上很多都乱七八糟的,这里把他的用法和原理详细阐述一下

因为这个注解非常重要,如果你弄不懂这个注解,那么对于spring的原理肯定是云里雾里的,所以我单独剔出来写了一篇

通过源码我们可以看到@Bean提供了value,name,autowire,autowireCandidate,initMethod,destroyMethod六个参数,原型如下

String[] value() default {};
String[] name() default {};
Autowire autowire() default Autowire.NO;
boolean autowireCandidate() default true;
String initMethod() default "";
String destroyMethod() default AbstractBeanDefinition.INFER_METHOD;

他们分别是什么意思呢?

value:他的意思的为这个bean起一个别名,官方注释如下

/**
	 * Alias for {@link #name}.
	 * <p>Intended to be used when no other attributes are needed, for example:
	 * {@code @Bean("customBeanName")}.
	 * @since 4.3.3
	 * @see #name
	 */

autowire:这是一个已经过时的参数

autowireCandidate:是否和其他的bean连接起来

这三个意义都不大,最主要的是另外3个

name:为这个bean起一个名字,默认是实现注解的方法的名字

initMethod:bean在初始化的时候调用的方法,与构造函数之后

destroyMethod:bean在销毁的时候调用的方法

我们来看下面一个bean

@Data是lombok提供的注解,如果你还不了解,可以点击这里

接下来我们来使用一些@Bean这种注解

这里我们注入了2个相同的bean

我们来测试一下

上图我先启动了springboot项目,然后调用了一下接口,接着关闭了springboot

从结果我们可以看出这三个参数的方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章