Java Code Examples for org.springframework.context.ConfigurableApplicationContext#getBeansOfType()

The following examples show how to use org.springframework.context.ConfigurableApplicationContext#getBeansOfType() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: AsyncLoadBalancerAutoConfigurationTests.java    From spring-cloud-commons with Apache License 2.0 6 votes vote down vote up
@Test
public void multipleRestTemplates() {
	ConfigurableApplicationContext context = init(TwoRestTemplates.class);
	final Map<String, AsyncRestTemplate> restTemplates = context
			.getBeansOfType(AsyncRestTemplate.class);

	then(restTemplates).isNotNull();
	Collection<AsyncRestTemplate> templates = restTemplates.values();
	then(templates).hasSize(2);

	TwoRestTemplates.Two two = context.getBean(TwoRestTemplates.Two.class);

	then(two.loadBalanced).isNotNull();
	assertLoadBalanced(two.loadBalanced);

	then(two.nonLoadBalanced).isNotNull();
	then(two.nonLoadBalanced.getInterceptors()).isEmpty();
}
 
Example 2
Source File: ReactorLoadBalancerClientAutoConfigurationTests.java    From spring-cloud-commons with Apache License 2.0 6 votes vote down vote up
@Test
void loadBalancerFilterAddedOnlyToLoadBalancedWebClientBuilder() {
	ConfigurableApplicationContext context = init(TwoWebClientBuilders.class);
	final Map<String, WebClient.Builder> webClientBuilders = context
			.getBeansOfType(WebClient.Builder.class);

	then(webClientBuilders).hasSize(2);

	TwoWebClientBuilders.Two two = context.getBean(TwoWebClientBuilders.Two.class);

	then(two.loadBalanced).isNotNull();
	assertLoadBalanced(two.loadBalanced,
			ReactorLoadBalancerExchangeFilterFunction.class);

	then(two.nonLoadBalanced).isNotNull();
	then(getFilters(two.nonLoadBalanced)).isNullOrEmpty();
}
 
Example 3
Source File: ReactorLoadBalancerClientAutoConfigurationTests.java    From spring-cloud-commons with Apache License 2.0 6 votes vote down vote up
@Test
void loadBalancerFilterAddedToWebClientBuilder() {
	ConfigurableApplicationContext context = init(OneWebClientBuilder.class);
	final Map<String, WebClient.Builder> webClientBuilders = context
			.getBeansOfType(WebClient.Builder.class);

	then(webClientBuilders).isNotNull().hasSize(1);
	WebClient.Builder webClientBuilder = webClientBuilders.values().iterator().next();
	then(webClientBuilder).isNotNull();

	assertLoadBalanced(webClientBuilder,
			ReactorLoadBalancerExchangeFilterFunction.class);

	final Map<String, OneWebClientBuilder.TestService> testServiceMap = context
			.getBeansOfType(OneWebClientBuilder.TestService.class);
	then(testServiceMap).isNotNull().hasSize(1);
	OneWebClientBuilder.TestService testService = testServiceMap.values().stream()
			.findFirst().get();
	assertLoadBalanced(testService.webClient,
			ReactorLoadBalancerExchangeFilterFunction.class);
}
 
Example 4
Source File: AbstractLoadBalancerAutoConfigurationTests.java    From spring-cloud-commons with Apache License 2.0 6 votes vote down vote up
@Test
public void multipleRestTemplates() {
	ConfigurableApplicationContext context = init(TwoRestTemplates.class);
	final Map<String, RestTemplate> restTemplates = context
			.getBeansOfType(RestTemplate.class);

	then(restTemplates).isNotNull();
	Collection<RestTemplate> templates = restTemplates.values();
	then(templates).hasSize(2);

	TwoRestTemplates.Two two = context.getBean(TwoRestTemplates.Two.class);

	then(two.loadBalanced).isNotNull();
	assertLoadBalanced(two.loadBalanced);

	then(two.nonLoadBalanced).isNotNull();
	then(two.nonLoadBalanced.getInterceptors()).isEmpty();
}
 
Example 5
Source File: FormatterBootstrap.java    From thinking-in-spring-boot-samples with Apache License 2.0 6 votes vote down vote up
public static void main(String[] args) {
        ConfigurableApplicationContext context = new SpringApplicationBuilder(FormatterBootstrap.class)
                .web(WebApplicationType.NONE)  // 非 Web 应用
//                 .properties("formatter.enabled=true") // 配置默认属性, "=" 前后不能有空格
                .run(args);                    // 运行
        // 待格式化对象
        Map<String, Object> data = new HashMap<>();
        data.put("name", "小马哥");
        // 获取 Formatter 来自于 FormatterAutoConfiguration
        Map<String, Formatter> beans = context.getBeansOfType(Formatter.class);
        if (beans.isEmpty()) { // 如果 Bean 不存在,抛出异常
            throw new NoSuchBeanDefinitionException(Formatter.class);
        }
        beans.forEach((beanName, formatter) -> {
            System.out.printf("[Bean name : %s] %s.format(data) : %s\n", beanName, formatter.getClass().getSimpleName(),
                    formatter.format(data));
        });

        //  关闭当前上下文
        context.close();
    }
 
Example 6
Source File: Application.java    From line-bot-sdk-java with Apache License 2.0 6 votes vote down vote up
void run(final ConfigurableApplicationContext context) throws Exception {
    final Map<String, CliCommand> commandMap = context.getBeansOfType(CliCommand.class);
    if (commandMap.isEmpty()) {
        log.warn("No command resolved. Available commands are follows.");
        printSupportCommand();
        return;
    }
    if (commandMap.size() > 1) {
        throw new RuntimeException("Multiple command matching. Maybe bug.");
    }

    final CliCommand command = commandMap.values().iterator().next();

    log.info("\"--command\" resolved to > {}", command.getClass());

    command.execute();
}
 
Example 7
Source File: CamelCloudConsulAutoConfigurationTest.java    From camel-spring-boot with Apache License 2.0 5 votes vote down vote up
@Test
public void testConsulServerToServiceDefinition() throws Exception {
    ConfigurableApplicationContext context = new SpringApplicationBuilder(TestConfiguration.class)
        .web(WebApplicationType.NONE)
        .run(
            "--debug=false",
            "--spring.main.banner-mode=OFF",
            "--spring.application.name=" + UUID.randomUUID().toString(),
            "--ribbon.enabled=false",
            "--ribbon.eureka.enabled=false",
            "--management.endpoint.enabled=false",
            "--spring.cloud.consul.enabled=true",
            "--spring.cloud.consul.config.enabled=false",
            "--spring.cloud.consul.discovery.enabled=true",
            "--spring.cloud.service-registry.auto-registration.enabled=false",
            "--spring.main.allow-bean-definition-overriding=true"
        );

    // TODO: Remove --spring.main.allow-bean-definition-overriding=true when new version of spring-cloud
    //  is released that supports Spring Boot 2.1 more properly

    try {
        Map<String, Converter> converters = context.getBeansOfType(Converter.class);

        assertThat(converters).isNotNull();
        assertThat(converters.values().stream().anyMatch(ConsulServerToServiceDefinition.class::isInstance)).isTrue();
    } finally {
        context.close();
    }
}
 
Example 8
Source File: AsyncLoadBalancerAutoConfigurationTests.java    From spring-cloud-commons with Apache License 2.0 5 votes vote down vote up
@Test
public void restTemplateGetsLoadBalancerInterceptor() {
	ConfigurableApplicationContext context = init(OneRestTemplate.class);
	final Map<String, AsyncRestTemplate> restTemplates = context
			.getBeansOfType(AsyncRestTemplate.class);

	then(restTemplates).isNotNull();
	then(restTemplates.values()).hasSize(1);
	AsyncRestTemplate restTemplate = restTemplates.values().iterator().next();
	then(restTemplate).isNotNull();

	assertLoadBalanced(restTemplate);
}
 
Example 9
Source File: ReactorLoadBalancerClientAutoConfigurationTests.java    From spring-cloud-commons with Apache License 2.0 5 votes vote down vote up
@Test
void noCustomWebClientBuilders() {
	ConfigurableApplicationContext context = init(NoWebClientBuilder.class);
	final Map<String, WebClient.Builder> webClientBuilders = context
			.getBeansOfType(WebClient.Builder.class);

	then(webClientBuilders).hasSize(1);

	WebClient.Builder builder = context.getBean(WebClient.Builder.class);

	then(builder).isNotNull();
	then(getFilters(builder)).isNullOrEmpty();
}
 
Example 10
Source File: AbstractLoadBalancerAutoConfigurationTests.java    From spring-cloud-commons with Apache License 2.0 5 votes vote down vote up
@Test
public void restTemplateGetsLoadBalancerInterceptor() {
	ConfigurableApplicationContext context = init(OneRestTemplate.class);
	final Map<String, RestTemplate> restTemplates = context
			.getBeansOfType(RestTemplate.class);

	then(restTemplates).isNotNull();
	then(restTemplates.values()).hasSize(1);
	RestTemplate restTemplate = restTemplates.values().iterator().next();
	then(restTemplate).isNotNull();

	assertLoadBalanced(restTemplate);
}
 
Example 11
Source File: TransactionalServiceBeanBootstrap.java    From thinking-in-spring-boot-samples with Apache License 2.0 5 votes vote down vote up
public static void main(String[] args) {
    // 注册当前引导类作为 Configuration Class
    ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(TransactionalServiceBeanBootstrap.class);
    // 获取所有 TransactionalServiceBean 类型 Bean,其中 Key 为 Bean 名称
    Map<String, TransactionalServiceBean> beansMap = context.getBeansOfType(TransactionalServiceBean.class);
    beansMap.forEach((beanName, bean) -> {
        System.out.printf("Bean 名称 : %s , 对象 : %s\n", beanName, bean);
        bean.save();
    });
    context.close();
}
 
Example 12
Source File: FeignLoadBalancerAutoConfigurationTests.java    From spring-cloud-openfeign with Apache License 2.0 5 votes vote down vote up
private void assertLoadBalanced(ConfigurableApplicationContext context,
		Class delegateClass) {
	Map<String, FeignBlockingLoadBalancerClient> beans = context
			.getBeansOfType(FeignBlockingLoadBalancerClient.class);
	assertThat(beans).as("Missing bean of type %s", delegateClass).hasSize(1);
	assertThat(beans.get("feignClient").getDelegate()).isInstanceOf(delegateClass);
}
 
Example 13
Source File: StartupShutdownOrderTest.java    From camel-spring-boot with Apache License 2.0 5 votes vote down vote up
@Test
public void camelContextShouldBeStartedLastAndStoppedFirst() {
    final ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(
        CamelAutoConfiguration.class, Beans.class);

    final CamelContext camelContext = context.getBean(CamelContext.class);
    final Map<String, TestState> testStates = context.getBeansOfType(TestState.class);

    assertThat(camelContext.isStarted()).as("Camel context should be started").isTrue();

    context.close();

    assertThat(camelContext.isStopped()).as("Camel context should be stopped").isTrue();
    testStates.values().stream().forEach(TestState::assertValid);
}
 
Example 14
Source File: CamelCloudZookeeperAutoConfigurationTest.java    From camel-spring-boot with Apache License 2.0 5 votes vote down vote up
@Test
public void testZookeeperServerToServiceDefinition() throws Exception {
    final ZookeeperServer server = new ZookeeperServer(temporaryFolder.newFolder(testName.getMethodName()));

    ConfigurableApplicationContext context = new SpringApplicationBuilder(TestConfiguration.class)
        .web(WebApplicationType.NONE)
        .run(
            "--debug=false",
            "--spring.main.banner-mode=OFF",
            "--spring.application.name=" + UUID.randomUUID().toString(),
            "--ribbon.enabled=false",
            "--ribbon.eureka.enabled=false",
            "--management.endpoint.enabled=false",
            "--spring.cloud.zookeeper.enabled=true",
            "--spring.cloud.zookeeper.connect-string=" + server.connectString(),
            "--spring.cloud.zookeeper.config.enabled=false",
            "--spring.cloud.zookeeper.discovery.enabled=true",
            "--spring.cloud.service-registry.auto-registration.enabled=false"
        );

    try {
        Map<String, Converter> converters = context.getBeansOfType(Converter.class);

        assertThat(converters).isNotNull();
        assertThat(converters.values().stream().anyMatch(ZookeeperServerToServiceDefinition.class::isInstance)).isTrue();
    } finally {

        // shutdown spring context
        context.close();

        // shutdown zookeeper
        server.shutdown();
    }
}
 
Example 15
Source File: CamelCloudZookeeperAutoConfigurationTest.java    From camel-spring-boot with Apache License 2.0 5 votes vote down vote up
@Test
public void testServiceDefinitionToConsulRegistration() throws Exception {
    final ZookeeperServer server = new ZookeeperServer(temporaryFolder.newFolder(testName.getMethodName()));

    ConfigurableApplicationContext context = new SpringApplicationBuilder(TestConfiguration.class)
        .web(WebApplicationType.NONE)
        .run(
            "--debug=false",
            "--spring.main.banner-mode=OFF",
            "--spring.application.name=" + UUID.randomUUID().toString(),
            "--ribbon.enabled=false",
            "--ribbon.eureka.enabled=false",
            "--management.endpoint.enabled=false",
            "--spring.cloud.zookeeper.enabled=true",
            "--spring.cloud.zookeeper.connect-string=" + server.connectString(),
            "--spring.cloud.zookeeper.config.enabled=false",
            "--spring.cloud.zookeeper.discovery.enabled=true",
            "--spring.cloud.service-registry.auto-registration.enabled=false"
        );

    try {
        Map<String, Converter> converters = context.getBeansOfType(Converter.class);

        assertThat(converters).isNotNull();
        assertThat(converters.values().stream().anyMatch(ServiceDefinitionToZookeeperRegistration.class::isInstance)).isTrue();
    } finally {
        // shutdown spring context
        context.close();

        // shutdown zookeeper
        server.shutdown();
    }
}
 
Example 16
Source File: CamelCloudConsulAutoConfigurationTest.java    From camel-spring-boot with Apache License 2.0 5 votes vote down vote up
@Test
public void testServiceDefinitionToConsulRegistration() throws Exception {
    ConfigurableApplicationContext context = new SpringApplicationBuilder(TestConfiguration.class)
        .web(WebApplicationType.NONE)
        .run(
            "--debug=false",
            "--spring.main.banner-mode=OFF",
            "--spring.application.name=" + UUID.randomUUID().toString(),
            "--ribbon.enabled=false",
            "--ribbon.eureka.enabled=false",
            "--management.endpoint.enabled=false",
            "--spring.cloud.consul.enabled=true",
            "--spring.cloud.consul.config.enabled=false",
            "--spring.cloud.consul.discovery.enabled=true",
            "--spring.cloud.service-registry.auto-registration.enabled=false",
            "--spring.main.allow-bean-definition-overriding=true"
        );

    // TODO: Remove --spring.main.allow-bean-definition-overriding=true when new version of spring-cloud
    //  is released that supports Spring Boot 2.1 more properly

    try {
        Map<String, Converter> converters = context.getBeansOfType(Converter.class);

        assertThat(converters).isNotNull();
        assertThat(converters.values().stream().anyMatch(ServiceDefinitionToConsulRegistration.class::isInstance)).isTrue();
    } finally {
        context.close();
    }
}
 
Example 17
Source File: WingtipsSpringBoot2WebfluxConfigurationTest.java    From wingtips with Apache License 2.0 4 votes vote down vote up
@Test
public void component_test_with_custom_WingtipsSpringWebfluxWebFilter() {
    // given
    int serverPort = findFreePort();

    ConfigurableApplicationContext serverAppContext = SpringApplication.run(
            ComponentTestMainWithCustomWingtipsWebFilter.class,
            "--server.port=" + serverPort
    );

    try {
        // when
        WingtipsSpringBoot2WebfluxConfiguration
                config = serverAppContext.getBean(WingtipsSpringBoot2WebfluxConfiguration.class);
        WingtipsSpringBoot2WebfluxProperties props =
                serverAppContext.getBean(WingtipsSpringBoot2WebfluxProperties.class);
        String[] someComponentScannedClassBeanNames =
                serverAppContext.getBeanNamesForType(SomeComponentScannedClass.class);

        // then
        // Sanity check that we component scanned (or not) as appropriate. This particular component test does
        //      include component scanning.
        assertThat(someComponentScannedClassBeanNames).isNotEmpty();

        // WingtipsSpringBoot2WebfluxConfiguration and WingtipsSpringBoot2WebfluxProperties should be available as
        //      beans, and the config should use the same props we received.
        assertThat(config).isNotNull();
        assertThat(props).isNotNull();
        assertThat(config.wingtipsProperties).isSameAs(props);

        // Finally, the thing this test is verifying: the config's custom filter should be the same one from the
        //      component test main class, and it should be the one that Spring exposes.
        assertThat(config.customSpringWebfluxWebFilter)
                .isSameAs(ComponentTestMainWithCustomWingtipsWebFilter.customFilter);
        Map<String, WingtipsSpringWebfluxWebFilter> filtersFromSpring =
                serverAppContext.getBeansOfType(WingtipsSpringWebfluxWebFilter.class);
        assertThat(filtersFromSpring).isEqualTo(
                Collections.singletonMap("customFilter", ComponentTestMainWithCustomWingtipsWebFilter.customFilter)
        );
    } finally {
        SpringApplication.exit(serverAppContext);
    }
}
 
Example 18
Source File: WingtipsSpringBoot2WebfluxConfigurationTest.java    From wingtips with Apache License 2.0 4 votes vote down vote up
@DataProvider(value = {
        "MANUAL_IMPORT_ONLY",
        "COMPONENT_SCAN_ONLY",
        "BOTH_MANUAL_AND_COMPONENT_SCAN"
})
@Test
public void component_test(ComponentTestSetup componentTestSetup) {
    // given
    int serverPort = findFreePort();
    Class<?> mainClass = componentTestSetup.mainClass;

    ConfigurableApplicationContext serverAppContext = SpringApplication.run(mainClass,
            "--server.port=" + serverPort);

    try {
        // when
        WingtipsSpringBoot2WebfluxConfiguration
                config = serverAppContext.getBean(WingtipsSpringBoot2WebfluxConfiguration.class);
        WingtipsSpringBoot2WebfluxProperties props =
                serverAppContext.getBean(WingtipsSpringBoot2WebfluxProperties.class);
        String[] someComponentScannedClassBeanNames =
                serverAppContext.getBeanNamesForType(SomeComponentScannedClass.class);

        // then
        // Sanity check that we component scanned (or not) as appropriate.
        if (componentTestSetup.expectComponentScannedObjects) {
            assertThat(someComponentScannedClassBeanNames).isNotEmpty();
        } else {
            assertThat(someComponentScannedClassBeanNames).isEmpty();
        }

        // WingtipsSpringBoot2WebfluxConfiguration and WingtipsSpringBoot2WebfluxProperties should be available as
        //      beans, and the config should use the same props we received.
        assertThat(config).isNotNull();
        assertThat(props).isNotNull();
        assertThat(config.wingtipsProperties).isSameAs(props);

        // The config should not have any custom WingtipsSpringWebfluxWebFilter. Spring will populate
        //      the config.customSpringWebfluxWebFilter field with whatever wingtipsSpringWebfluxWebFilter()
        //      produces - so they should be the same.
        Map<String, WingtipsSpringWebfluxWebFilter> filtersFromSpring =
                serverAppContext.getBeansOfType(WingtipsSpringWebfluxWebFilter.class);
        assertThat(filtersFromSpring).isEqualTo(
                Collections.singletonMap("wingtipsSpringWebfluxWebFilter", config.customSpringWebfluxWebFilter)
        );
    } finally {
        Schedulers.removeExecutorServiceDecorator(WingtipsReactorInitializer.WINGTIPS_SCHEDULER_KEY);
        SpringApplication.exit(serverAppContext);
    }
}
 
Example 19
Source File: FeignLoadBalancerAutoConfigurationTests.java    From spring-cloud-openfeign with Apache License 2.0 4 votes vote down vote up
private void assertThatOneBeanPresent(ConfigurableApplicationContext context,
		Class<?> beanClass) {
	Map<String, ?> beans = context.getBeansOfType(beanClass);
	assertThat(beans).as("Missing bean of type %s", beanClass).hasSize(1);
}