6.10.6?給自動檢測組件命名
當組件作為掃描過程的一部分被自動檢測到時,其bean名稱由該掃描程序已知的BeanNameGenerator策略生成。默認情況下,任何包含名稱值的Spring構造型注解(@ Component,@ Repository,@ Service和@Controller)都將該名稱提供給相應的bean定義。
如果此類注解不包含名稱值或對于任何其他檢測到的組件(例如通過自定義過濾器發現的那些組件),則默認的bean名稱生成器將返回小寫的非限定類名稱。例如,如果以下兩個組件被檢測到,則名稱為myMovieLister和movieFinderImpl:
@Service("myMovieLister") public class SimpleMovieLister {// ... }
@Repository public class MovieFinderImpl implements MovieFinder {// ... }
普通翻譯理論的框架,如果您不想依賴默認的bean命名策略,則可以提供自定義bean命名策略。首先,實現BeanNameGenerator接口,并確保包含默認的無參數構造函數。然后,在配置掃描程序時提供完全限定的類名:
@Configuration @ComponentScan(basePackages = "org.example", nameGenerator = MyNameGenerator.class) public class AppConfig {... }
<beans><context:component-scan base-package="org.example"name-generator="org.example.MyNameGenerator" /> </beans>
作為一般規則,使用注解指定名稱,不管在什么時候,其他組件也可以生成對它的明確的引用。另一方面,不管什么時候,容器都會負責連接,自動生成的名稱就能夠勝任了。
安卓10虛擬框架,