为springboot托管类获取注入bean的最简洁方法是什么?

时间:2014-08-11 17:40:17

标签: groovy dependency-injection spring-boot

我有一个简单的应用程序注入另一个组件

@ComponentScan
@EnableAutoConfiguration
@Configuration
class Application {

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

  @Bean
  AuthorizationServerTokenServices tokenServices() {
    return MY THING HERE
  }

}

我想要一个快速/最小化的方法来解决这个问题并抓住项目springboot连线(在本例中为tokenServices)。我试图通过TestNG

来验证一些配置/设置/等

我还应该说我没有使用任何xml来配置它(使用gradle / groovy / springboot)

1 个答案:

答案 0 :(得分:1)

您可以在Spring配置文件的帮助下轻松引入条件bean。

在您的情况下,代码看起来像:

@Configuration
@Profile("tokenService")
public TestTokenServiceConfig {

   @Primary
   @Bean
   AuthorizationServerTokenServices tokenServices() {
     //implementation
   }   
}

您在此类中提供的自定义实现仅在配置文件tokenService处于活动状态时由Spring使用。为了使Spring使用指定的bean而不是应用程序上下文中存在的任何其他bean,需要使用@Primary

另请注意,由于您将在测试环境中使用自定义服务,因此您可以使用Mockito(或您喜欢的任何其他模拟框架)轻松模拟实现

实际的集成测试类似于:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@ActiveProfiles("tokenService")
class YourIntegrationTest {

    @Autowired
    AuthorizationServerTokenServices tokenServices;

    //test
}