Java 为什么我的自定义注释日志bean在自动连接期间为空?
我几乎完全按照示例创建了一个用于日志记录的自定义注释。我能看到的主要区别是我的Java 为什么我的自定义注释日志bean在自动连接期间为空?,java,spring,annotations,Java,Spring,Annotations,我几乎完全按照示例创建了一个用于日志记录的自定义注释。我能看到的主要区别是我的LoggerInjector是用@组件注释的 注释非常有效,我在任何地方都会得到一个非空的Logger实例,只有一个例外:当我尝试登录一个用@Autowired注释的方法时 例如: @Repository public class MyDao { @AutowiredLogger private Logger _logger; private JdbcTemplate _jt; @A
LoggerInjector
是用@组件
注释的
注释非常有效,我在任何地方都会得到一个非空的Logger实例,只有一个例外:当我尝试登录一个用@Autowired
注释的方法时
例如:
@Repository
public class MyDao
{
@AutowiredLogger
private Logger _logger;
private JdbcTemplate _jt;
@Autowired
public void setDatasource(DataSource ds)
{
_logger.debug("Entering setDs")
_jt = new JdbcTemplate(ds);
_logger.debut("Exiting setDs);
}
}
在第一行\u logger.debug()
上抛出一个NullPointerException
applicationContext.xml中的代码段:
<mvc:annotation-driven />
<context:component-scan base-package="my.package" />
dispatch-servlet.xml中的一个片段:
<mvc:annotation-driven />
<context:component-scan base-package="my.package">
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Repository" />
</context:component-scan>
在运行
@AutowiredLogger
方法之前,如何注入我的@AutowiredLogger
?我认为您无法控制哪个组件首先自动连接。另一种解决方案是在设置完所有内容后使用配置类
你可以这样做
@Override
void afterPropertiesSet() {
_logger.debug("Entering setDs")
_jt = new JdbcTemplate(ds);
_logger.debut("Exiting setDs);
}
我认为您无法控制哪个组件首先自动连接。另一种解决方案是在设置完所有内容后使用配置类 你可以这样做
@Override
void afterPropertiesSet() {
_logger.debug("Entering setDs")
_jt = new JdbcTemplate(ds);
_logger.debut("Exiting setDs);
}
我也遇到过类似的问题,尽管在我的案例中,它是注入
ServletContext
-它在@Autowired
中为空,我需要实现初始化bean
,并通过afterPropertiesSet
更改为setter注入。我也遇到过类似的问题,虽然在我的例子中,它是注入ServletContext
,但它在@Autowired
中是空的,我需要实现初始化bean
,并通过afterPropertiesSet
更改为setter注入。它做到了,谢谢。我今天才有机会试一下。真的,谢谢你。我今天才有机会尝试一下。