我在Spring Boot项目中有几个类,有些使用@Autowired,有些不使用。在这里我的代码如下:Spring Boot Autowired null
Application.java(@Autowired作品):
package com.example.myproject;
@ComponentScan(basePackages = {"com.example.myproject"})
@Configuration
@EnableAutoConfiguration
@EnableJpaRepositories(basePackages = "com.example.myproject.repository")
@PropertySource({"classpath:db.properties", "classpath:soap.properties"})
public class Application {
@Autowired
private Environment environment;
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
@Bean
public SOAPConfiguration soapConfiguration() {
SOAPConfiguration SOAPConfiguration = new SOAPConfiguration();
SOAPConfiguration.setUsername(environment.getProperty("SOAP.username"));
SOAPConfiguration.setPassword(environment.getProperty("SOAP.password"));
SOAPConfiguration.setUrl(environment.getProperty("SOAP.root"));
return SOAPConfiguration;
}
的HomeController(@Autowired作品):
package com.example.myproject.controller;
@Controller
class HomeController {
@Resource
MyRepository myRepository;
为MyService(@Autowired不工作):
package com.example.myproject.service;
@Service
public class MyServiceImpl implements MyService {
@Autowired
public SOAPConfiguration soapConfiguration; // is null
private void init() {
log = LogFactory.getLog(MyServiceImpl.class);
log.info("starting init, soapConfiguration: " + soapConfiguration);
url = soapConfiguration.getUrl(); // booom -> NullPointerException
我没有得到SOAPConfiguration,但我的应用程序打破空指针异常,当我尝试访问它。
我已经在这里阅读了许多主题,并且搜索了一些内容,但是还没有找到解决方案。我试图提供所有必要的信息,请让我知道是否有遗漏。
从哪里调用'init'方法?我怀疑构造函数。 – 2014-10-20 08:49:23
log.info打印:启动init,soapConfiguration:null – dexBerlin 2014-10-20 08:51:18
HomeController.update创建一个新的MyServiceImpl并调用myService.update,它调用它的init方法。 – dexBerlin 2014-10-20 08:53:36