java - 如何使用注释Bean和ComponentScan正确创建Spring bean?

标签 java spring spring-boot

主要:

@SpringBootApplication
@ComponentScan(basePackageClasses = Application.class)
public class Application {

  public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
  }
}

测试类:

public class Test {

  @Bean
  public Test test(){
      return new Test();
  }
}

当我尝试 Autowiring 它时,我得到了这个异常:

***************************
APPLICATION FAILED TO START
***************************

Description:

Field test in TestWithAutowire required a bean of type 'Test' that could not be found.


Action:

Consider defining a bean of type 'rcms.backend.exception.Test' in your configuration.


Process finished with exit code 1

我做错了什么,但我找不到它。

最佳答案

您可以创建一个新配置,例如SpringConfiguration

package my.pkg.config;

@Configuration
public class SpringConfiguration {
    @Bean
    public Test test(){
        return new Test();
    }
}

在您的 Application 类中,您可以添加 @ComponentScan 注释以及您希望 Spring 扫描类的基础包,

@SpringBootApplication
@ComponentScan(basePackageClasses = {"my.pkg.config", "my.pkg.example"})
public class Application {

  public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
  }
}

现在您可以在任何 Spring 组件中 Autowiring Test。例如,

package my.pkg.example;

@Component
public class TestExample {

    @Autowired
    private Test tst;

}

关于java - 如何使用注释Bean和ComponentScan正确创建Spring bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46962940/

相关文章:

java - 将两个@GetMapping映射到同一个@RestController到Spring Boot中

java - 当日期时间输入没有任何日期时间值时,如何避免错误 Timestamp format must be YYYY-MM-DD HH-MM-SS[.FFFFFFFFF] ?

Spring - 使用Builder模式注入(inject)bean

java - JPA 将 native 查询结果映射到非实体 DTO

java - 获取Spring bean依赖@Runtime

java - 运行 spring mvc 项目时出现一些错误

spring - 如何使用 Springboot 1.2.8 制作 CrossOrigin

java - 开源工具,通过 Maven2 生成 Javadocs,带有像 ydoc 这样的自动 UML 图

java - 最佳实践 struts/jsp/i18n/resourceBundle

java - Orient DB - 使用密码创建 orient db 并使用 JAVA 检查是否可用