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

從結果我們可以看出這三個參數的方法

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