使用注入的Spring Boot DI。无法识别课程

时间:2019-04-03 09:21:36

标签: java spring-boot dependency-injection

我正在尝试运行一个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吗?我宁愿不这样做。
  • 我需要哪些额外的批注/类/上下文管理器,以确保greetingService被正确识别并注入?

1 个答案:

答案 0 :(得分:1)

@Service放在GreetingService上,如果它不起作用,则检查项目结构。

如果其他程序包层次结构在主应用程序的下面,带有@SpringBootApplication批注,则隐式组件扫描将覆盖您。

如果其他软件包中的bean /组件不是主软件包的子软件包,则应手动将它们添加为@ComponentScan