【发布时间】:2021-06-05 08:24:28
【问题描述】:
我是 Apache Camel 的新手,正在尝试构建一个 api。它有三个类。
A 类 - 用于读取 application.properties 文件,如下所示
@Configuration
@ConfigurationProperties(prefix="api")
public class A{
private String username;
public String getUsername(){
return username
}
B 类 - 阿帕奇骆驼路线。
C 类 - 自动装配 A 类的 Bean 类。
@Component
public class b extends RouteBuilder{
@Autowired
ClassC customC;
public void configure{
from("direct:start")
.bean(customC)
.to("log:first-timer")
}
}
@Component
class C{
@Autowired
ClassA config;
String username=config.getUsername();
}
每当 IDE 执行 api 时,它都会在 String username=config.getUsername(); 行中抛出 Null 指针异常。我已验证 spring boot 能够加载 application.properties。
我不知道为什么调用自动装配类的方法会抛出空指针异常。
【问题讨论】:
-
应该 @configuration 是带有 C 大写字母的“@Configuration”。我不确定它是否在发布时打错了,但除此之外一切似乎都是正确的。
-
你尝试过构造函数注入吗?
-
@Ferry,我在 c 类中尝试了构造函数注入“private ClassA config; public ClassC(ClassA config){ this.config=config;} String username=config.getUsername();”但它没有用。我是否正确地进行了构造函数注入?
-
在构造函数中分配用户名,它会工作。如果您使用 Spring 4 或更低版本,或者 Spring boot 1,则需要在构造函数中添加
@Autowired。顺便说一句,现场注入是一种不好的做法。
标签: java spring spring-boot apache-camel