Spring constructor injection of SLF4J logger - how to get injection target class?春ブーツ:BeanFactoryPostProcessorのpostProcessBeanFactory
と呼ば得ていないが、私は同様の機能が、春ブーツでを達成したいです。
私はこの質問のために与えられた解決策を試してみましたが、私の春ブートアプリケーション内で呼び出されることは決してありませんBeanFactoryPostProcessor
の
postProcessBeanFactory
方法は以下
は、メソッドの実装であるようだ。
@SuppressWarnings("unused")
public class LoggerBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
String [] beanClasses = beanFactory.getBeanDefinitionNames();
for(String beanName : beanClasses){
Object beanObject = beanFactory.getBean(beanName);
if(beanObject.getClass().isAnnotationPresent(Loggable.class)){
try {
Field loggerField = beanObject.getClass().getDeclaredField("logger");
loggerField.setAccessible(true);
loggerField.set(beanObject, LoggerFactory.getLogger(beanObject.getClass()));
}catch (NoSuchFieldException | IllegalAccessException e){
e.printStackTrace();
}
}
}
}
このクラスをBeanとして設定に追加しましたか? –
@KenBekov正確に私はこれをSpring Bootプロジェクトに追加する必要がありますか? –
これをあなたの設定に 'public static' '@ Bean'メソッドとして追加してください。クラスを追加するだけで何も行いません。 –