我正在尝试运行 Spring boot 应用程序。我肯定想使用 DI,并且正在探索 javax.inject 注释包。然而,关于它的文献却非常稀少。这是我迄今为止非常简单的设置
@RestController
public class HelloController {
@Inject
private IGreetingService greetingService;
@RequestMapping("/")
public String index() {
return greetingService.greet();
}
}
public class GreetingService implements IGreetingService {
@Override
public String greet(){
DummyObject dummyObject = new DummyObject("valueOne", 10);
ObjectMapper mapper = new ObjectMapper();
String dummyObjectJson = "";
try{
dummyObjectJson = mapper.writeValueAsString(dummyObject);
}catch(IOException e){}
return dummyObjectJson;
}
}
我收到以下错误:
Field greetingService in com.accenture.greetings.HelloController required a bean of type 'com.accenture.interfaces.IGreetingService' that could not be found.
- 我真的应该将 GreetingsService 定义为 XML 中的 bean 吗?我宁愿不这样做。
- 我需要哪些额外的注释/类/上下文管理器来确保 GreetingsService 被正确识别和注入(inject)?
最佳答案
将 @Service
放在 GreetingService
上,如果它不起作用,则检查项目结构。
如果您的其他包层次结构位于带有 @SpringBootApplication
注释的主应用程序下方,则隐式组件扫描会覆盖您。
如果其他包中有不是主包子包的bean/组件,您应该手动将它们添加为@ComponentScan
关于java - Spring Boot DI 使用注入(inject)。类别未被识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55491555/