当前,我想自动装配的bean返回一个nullpointerException。
这是Application类:
package com.springbootapp.jerseyws;
.
.
.
@SpringBootApplication
public class JerseywsApplication {
@Bean
public CountryService countryService() {
return new CountryService();
}
public static void main(String[] args) {
SpringApplication.run(JerseywsApplication.class, args);
}
}
这里是控制器:
package com.springbootapp.jerseyws.controller;
.
.
.
@Path("/country")
public class CountryController {
@Autowired
private CountryService countryService;
public CountryController() {
//countryService = new CountryService();
}
@Path("list")
@GET
@Produces({MediaType.APPLICATION_JSON})
public List<Country> getCountries() {
return countryService.getCountries(); // <------ countryService is null
}
}
这是国家/地区服务:
package com.springbootapp.jerseyws.service;
.
.
.
@Service
public class CountryService {
public List<Country> getCountries() {
Country c1 = new Country("USA", 320);
Country c2 = new Country("Norway", 6);
Country c3 = new Country("Sweden", 10);
List<Country> countryList = new ArrayList<>();
countryList.add(c1);
countryList.add(c2);
countryList.add(c3);
return countryList;
}
}
此示例基于注释。遗漏了一些东西,因为我尝试通过@Autowired
注释实例化的bean为空。
答案 0 :(得分:0)
您的控制器需要@RestController
批注,否则它将不会在spring上下文中注入。如果某个类不属于spring上下文,则不能有@Autowired
个类。
@Path("/country")
@RestController
public class CountryController {
也删除
@Bean
public CountryService countryService() {
return new CountryService();
}
您不需要
答案 1 :(得分:0)
尝试从控制器类中删除以下代码段。如果您已经用@restcontroller注释了控制器,则不需要空的构造函数
public CountryController() {
//countryService = new CountryService();
}