java - Spring Boot DI 使用注入(inject)。类别未被识别

标签 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 吗?我宁愿不这样做。
  • 我需要哪些额外的注释/类/上下文管理器来确保 GreetingsService 被正确识别和注入(inject)?

最佳答案

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

如果您的其他包层次结构位于带有 @SpringBootApplication 注释的主应用程序下方,则隐式组件扫描会覆盖您。

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

关于java - Spring Boot DI 使用注入(inject)。类别未被识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55491555/

相关文章:

java - 所有实现都会自动通过吗?谁做这个?

c# - 注册默认的 CaSTLe Windsor 组件,同时允许自定义组件

java - 管理多帧应用程序

java - 从访问表中检索特定行

java - 不适用于参数 (void) 错误

Spring Data 与 QueryDslPredicateExecutor 没有找到类型错误的属性 findAll

Spring Boot Camel Route - 从休息端点获取数据

c# - 启动后向 IServiceCollection 注册类

java - Web 服务器如何填充 $_POST 和 $_GET?

Spring Boot-绝对 uri : http://java. sun.com/jsp/jSTL/core 无法在 web.xml 或 jar 文件中解析