春には多くのポストプロセッサがあり、そのうちの1つがBeanの初期化に一定の影響を与える可能性があります。見てみましょう
上記の教師クラスに従ってください
@Component
@Scope("singleton")//加与不加,spring默认是注册单例bean
public class Teacher{
public Teacher(){
System.out.println("Construct");
}
@PostConstruct//使用该注解实现执行初始化方法
public void init(){
System.out.println("init");
}
}
@Scope( "singleton")ヒント:インタビュアーは通常、Springフレームワークのインターフェイス指向プログラミング環境でシングルトンが使用されているかどうかを尋ねます。正直なところ、多くの人は知りません。私が直面した3年間だけで、誰も知りません。通常、オブジェクトを@Serviceアノテーションと@Controllerアノテーションで装飾します。このオブジェクトはシングルトンBeanです。次に、@ Autowiredアノテーションと@Resourceアノテーションを使用して注入するBeanはシングルトンです。これは非常に単純です。残念ながら、誰も知っている。
カスタム実装クラス
@Component
public class TestBeanPostProcessor implements BeanPostProcessor, PriorityOrdered {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if(beanName.equals("teacher")){
System.out.println("BeforeInitialization10");
}
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if(beanName.equals("teacher")){
System.out.println("AfterInitialization10");
}
return bean;
}
@Override
public int getOrder() {
return 10;
}
}
説明:メインインターフェイスBeanPostProcessor、およびPriorityOrderedインターフェイスは、その名前が示すように、登録リストでの並べ替えに使用される主人公です。
BeanPostProcessorは、2つのBeanが初期化される前後の操作を書き換え、最終的にBeanを返すことができます。もちろん、プロキシオブジェクトを返すこともできます。
このクラスは、管理のためにSpringにも渡されます。もちろん、上記の記事によると、カスタムアノテーションを使用して柔軟に開くこともできます。
次の記事では、前の質問で述べた@Configurationアノテーションを紹介します