我正在尝试运行一个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.
答案 0 :(得分:1)
将@Service
放在GreetingService
上,如果它不起作用,则检查项目结构。
如果其他程序包层次结构在主应用程序的下面,带有@SpringBootApplication
批注,则隐式组件扫描将覆盖您。
如果其他软件包中的bean /组件不是主软件包的子软件包,则应手动将它们添加为@ComponentScan