Koj*_*tak 5 java logging spring autowired
我正在使用根据类名称命名的非静态记录器:
protected Logger logger = LoggerFactory.getLogger(getClass());
Run Code Online (Sandbox Code Playgroud)
我是否可以通过某种方式配置spring,该方式将使用@Autowired设置正确的记录器?
@Autowired
protected Logger logger;
Run Code Online (Sandbox Code Playgroud)
我可以使用工厂方法进行记录器初始化,但是我不知道如何将类名作为参数传递。对于基于setter的依赖项注入,spring必须知道类名,因为它保留了对bean的引用。我可以以某种方式访问它吗?还有另一种方法吗?
为了使Logger可注入@Autowired
,必须具有一个配置类,在该配置类中已配置了要使用的所有Bean @Autowired
。该班级将以标记@Configuration
。在那里,您必须@Bean
在配置中放入以下内容:
@Configuration
public class WebConfiguration {
@Bean
@Scope("prototype")
public Logger produceLogger(InjectionPoint injectionPoint) {
Class<?> classOnWired = injectionPoint.getMember().getDeclaringClass();
return LoggerFactory.getLogger(classOnWired);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用 @Inject 和 BeanFactoryPostProcessor 注入它
@Inject
Logger logger;
Run Code Online (Sandbox Code Playgroud)
您可以在这里找到更多详细信息:使用java注释注入记录器依赖项
归档时间: |
|
查看次数: |
6941 次 |
最近记录: |