[英]Use case of BeanNameAware
除了記錄Bean本身的名稱之外,我無法確定BeanNameAware
接口的任何用例。
我做了研究,但找不到一個人,除了在初始化Bean之后打印Bean名稱之外,他還寫過其他東西。 有實際用例嗎?
BeanNameAware
可以在我們有多個抽象類的子類的情況下使用,並且想知道那些特定bean的名稱以使用其功能,如果bean名稱遵循某種模式,則要進行某些操作,對其進行操作,等等。並了解它:
abstract class Parent implements BeanNameAware {
String beanName;
void setBeanName(String beanName) {
this.beanName = beanName;
}
abstract void doFilter();
}
@Component
class Child1 extends Parent {
@Override
void doFilter() {
// some impl
}
}
@Component
class Child2 extends Parent {
@Override
void doFilter() {
// some impl
}
}
我們有一個服務方法,該方法接受所有Parent
類的實例並調用abstract void doFilter()
方法實現:
@Service
class SomeService{
@Autowired
Parent[] childs; // injecting all Child*
void doSomethingWithChilds() {
for(Parent child: childs) {
child.doFilter(); // invoking their doFilter() impl
String currentChildName = child.beanName;
// We now know the name of current child* bean
// We can use it for manipulating the child* instance
// This is useful because each child instance will have a different bean name
if(currentChildName.equals("child2")) {
// do something special with child2
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.