我有一些正在工作的代码:
@Component
public class MessageUtil {
@Autowired
@Qualifier("processMessages")
private ReloadableConfig config;
public String createMessage() {
return config.getPropertyStr("message.simple.signature");
}
}
在这里定义了bean processMessages
:
<bean id="processMessages" class="com.company.framework.resources.ReloadableConfig">
<property name="basename" value="classpath:com/company/aaa/bbb/domain/service/processMessages"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="cacheSeconds" value="60"/>
</bean>
然后我创建了一些新的类:
public abstract class MessageBuilder {
@Autowired
@Qualifier("processMessages")
protected ReloadableConfig config;
public abstract String createMessage();
}
@Component
public class SimpleMessageBuilder extends MessageBuilder {
private String template;
private void setTemplate() {
template = config.getPropertyStr("message.simple.signature");
}
@Override
public String createMessage() {
setTemplate();
return template;
}
}
我现在有一个NullPointerException,因为在setTemplate()
中,config
是空的。第二个代码有什么问题?
发布于 2022-11-08 21:52:21
@Autowired既不适用于字段,也不适用于抽象类的构造器。它适用于抽象类的setter,但要确保它是最终的,因为如果被具体的类覆盖,则类行为是不稳定的。抽象类不是组件扫描的,因为没有具体的子类就无法实例化它。
https://stackoverflow.com/questions/74364951
复制相似问题