簡體   English   中英

為什么按類@Autowired 電線?

[英]Why @Autowired wires by class?

如果每個 bean 都有名稱,並且我們有getBean()方法,它接收 bean 名稱,並且在 XML 配置中我們也按名稱注入 bean,那么為什么在 Java 配置中我們僅限於按類連接的@Autowired注釋?

將 bean 從另一種配置注入一種配置的常規方法是什么? 是否可以按名稱引用 bean 而不是使用@Qualifier

更新

我找到了一種在配置之間按名稱自動裝配的方法。

首先,我按類自動裝配整個配置:

@Autowired
MySeparateConfig mySeparateConfig;

然后我只是從那個 bean 調用實例化方法:

@Bean
MyDependentBean myDependentBean() {
   MyDependentBean ans = new MyDependentBean();
   ans.setProperty( mySeparateConfig.myNamedBeanInDifferentConfig() );
   return ans;
}

根據定義,配置屬於不同的類。

實際上,通過注解注入bean的方式有很多種。

鑒於我們有這個豆

<bean id="standardPasswordEncoder" class="org.springframework.security.crypto.password.StandardPasswordEncoder" />

在java類中,據我所知,我們可以使用以下方式注入它

@Autowired  // by type
StandardPasswordEncoder standardPasswordEncoder;

@Autowired
@Qualifier("standardPasswordEncoder")  // by bean id
StandardPasswordEncoder standardPasswordEncoder;

javax.annotation.@Resource  // by bean id
StandardPasswordEncoder standardPasswordEncoder;

javax.inject.@Inject  // by type
StandardPasswordEncoder standardPasswordEncoder;

或使用拼寫

@Value(#{standardPasswordEncoder})  // by bean id
StandardPasswordEncoder standardPasswordEncoder;

但是,我也不知道 spring 自動裝配默認值是按類型的原因,也想知道為什么。 我認為按類型自動裝配很危險。 希望這會幫助你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM