Groovy 为springboot托管类获取注入bean的最简洁的方法是什么?
我有一个注入另一个组件的简单应用程序Groovy 为springboot托管类获取注入bean的最简洁的方法是什么?,groovy,dependency-injection,spring-boot,Groovy,Dependency Injection,Spring Boot,我有一个注入另一个组件的简单应用程序 @ComponentScan @EnableAutoConfiguration @Configuration class Application { static void main(String[] args) { SpringApplication.run(Application, args) } @Bean AuthorizationServerTokenServices tokenServices() { retu
@ComponentScan
@EnableAutoConfiguration
@Configuration
class Application {
static void main(String[] args) {
SpringApplication.run(Application, args)
}
@Bean
AuthorizationServerTokenServices tokenServices() {
return MY THING HERE
}
}
我想用一种快速/最少的方法来更新它,并获取springboot wires项(本例中用于tokenServices)。我正在尝试使用TestNG验证一些配置/设置/etc
我还应该说,我没有使用任何xml来配置它(使用gradle/groovy/springboot)借助Spring概要文件,您可以很容易地引入条件bean 在您的情况下,代码如下所示:
@Configuration
@Profile("tokenService")
public TestTokenServiceConfig {
@Primary
@Bean
AuthorizationServerTokenServices tokenServices() {
//implementation
}
}
您在此类中提供的自定义实现仅在概要文件tokenService
处于活动状态时由Spring使用。需要使用@Primary
,才能使Spring使用指定的bean,而不是应用程序上下文中的任何其他bean
还请注意,由于您将在测试环境中使用定制服务,因此可以使用Mockito(或您喜欢的任何其他模拟框架)轻松模拟实现
实际的集成测试应该是这样的:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@ActiveProfiles("tokenService")
class YourIntegrationTest {
@Autowired
AuthorizationServerTokenServices tokenServices;
//test
}
你的意思是想编写一个集成测试,将特定的bean注入到测试中吗?正确-我想手动连接一个对象(springboot通常会为您这样做),以便测试特定bean/etc的配置(不使用基于xml的编写)。因此,您希望启动spring上下文,但您希望能够提供特定bean的特定实现,该实现将被注入测试类?非常好!并且只是澄清一下,这里的“概要文件”将引入什么属性文件(以及从什么位置-测试目录?)Spring Boot将自动加载
应用程序.properties
(从类路径-在测试用例中,它将从测试目录)和应用程序令牌服务.properties