@Test public void annotationConfigApplicationContext_withPojos() { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); assertHasStandardEnvironment(ctx); ctx.setEnvironment(prodEnv); ctx.register(EnvironmentAwareBean.class); ctx.refresh(); assertEnvironmentAwareInvoked(ctx, prodEnv); }
@Test public void annotationConfigApplicationContext_withProdEnvAndProdConfigClass() { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); assertHasStandardEnvironment(ctx); ctx.setEnvironment(prodEnv); ctx.register(ProdConfig.class); ctx.refresh(); assertThat("should have prod bean", ctx.containsBean(PROD_BEAN_NAME), is(true)); }
private void testProfileExpression(boolean expected, String... activeProfiles) { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); StandardEnvironment environment = new StandardEnvironment(); environment.setActiveProfiles(activeProfiles); ctx.setEnvironment(environment); ctx.register(ProfileExpressionConfig.class); ctx.refresh(); assertThat("wrong presence of expression bean", ctx.containsBean("expressionBean"), is(expected)); }
@Test public void mostSpecificDerivedClassDrivesEnvironment_withDevEnvAndDerivedDevConfigClass() { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); ctx.setEnvironment(devEnv); ctx.register(DerivedDevConfig.class); ctx.refresh(); assertThat("should not have dev bean", ctx.containsBean(DEV_BEAN_NAME), is(false)); assertThat("should not have derived dev bean", ctx.containsBean(DERIVED_DEV_BEAN_NAME), is(false)); assertThat("should not have transitive bean", ctx.containsBean(TRANSITIVE_BEAN_NAME), is(false)); }
@Test public void annotationConfigApplicationContext_withDevEnvAndDevConfigClass() { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); assertHasStandardEnvironment(ctx); ctx.setEnvironment(devEnv); ctx.register(DevConfig.class); ctx.refresh(); assertThat("should have dev bean", ctx.containsBean(DEV_BEAN_NAME), is(true)); assertThat("should have transitive bean", ctx.containsBean(TRANSITIVE_BEAN_NAME), is(true)); }
@Test public void annotationConfigApplicationContext_withProdEnvAndDevConfigClass() { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); assertHasStandardEnvironment(ctx); ctx.setEnvironment(prodEnv); ctx.register(DevConfig.class); ctx.refresh(); assertThat("should not have dev bean", ctx.containsBean(DEV_BEAN_NAME), is(false)); assertThat("should not have transitive bean", ctx.containsBean(TRANSITIVE_BEAN_NAME), is(false)); }
@Test public void mostSpecificDerivedClassDrivesEnvironment_withDerivedDevEnvAndDerivedDevConfigClass() { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); StandardEnvironment derivedDevEnv = new StandardEnvironment(); derivedDevEnv.setActiveProfiles(DERIVED_DEV_ENV_NAME); ctx.setEnvironment(derivedDevEnv); ctx.register(DerivedDevConfig.class); ctx.refresh(); assertThat("should have dev bean", ctx.containsBean(DEV_BEAN_NAME), is(true)); assertThat("should have derived dev bean", ctx.containsBean(DERIVED_DEV_BEAN_NAME), is(true)); assertThat("should have transitive bean", ctx.containsBean(TRANSITIVE_BEAN_NAME), is(true)); }
@Test public void annotationConfigApplicationContext_withImportedConfigClasses() { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); assertHasStandardEnvironment(ctx); ctx.setEnvironment(prodEnv); ctx.register(Config.class); ctx.refresh(); assertEnvironmentAwareInvoked(ctx, prodEnv); assertThat("should have prod bean", ctx.containsBean(PROD_BEAN_NAME), is(true)); assertThat("should not have dev bean", ctx.containsBean(DEV_BEAN_NAME), is(false)); assertThat("should not have transitive bean", ctx.containsBean(TRANSITIVE_BEAN_NAME), is(false)); }
@Test public void testPlaceholderBased() throws Exception { MockEnvironment env = new MockEnvironment(); env.setProperty("serverName", "server"); AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.setEnvironment(env); context.register(PlaceholderBasedConfiguration.class); context.refresh(); this.ctx = context; validateAnnotationTestBean(); }
@Test public void beanConditionOn() { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); ctx.setEnvironment(new MockEnvironment().withProperty("bar.enabled", "true")); ctx.register(BeanConditionConfig.class); ctx.refresh(); this.context = ctx; FooService service = this.context.getBean(FooService.class); Cache cache = getCache(); Object key = new Object(); Object value = service.getWithCondition(key); assertCacheHit(key, value, cache); value = service.getWithCondition(key); assertCacheHit(key, value, cache); assertEquals(2, this.context.getBean(BeanConditionConfig.Bar.class).count); }
@Test public void resolveTableNameByPropertyPlaceholder() { this.context.setEnvironment(new MockEnvironment() .withProperty("session.jdbc.tableName", "custom_session_table")); registerAndRefresh(DataSourceConfiguration.class, CustomJdbcHttpSessionConfiguration.class); JdbcHttpSessionConfiguration configuration = this.context .getBean(JdbcHttpSessionConfiguration.class); assertThat(ReflectionTestUtils.getField(configuration, "tableName")) .isEqualTo("custom_session_table"); }
@Test public void resolveValueByPlaceholder() { this.context.setEnvironment(new MockEnvironment() .withProperty("session.redis.namespace", "customRedisNamespace")); registerAndRefresh(RedisConfig.class, PropertySourceConfiguration.class, CustomRedisHttpSessionConfiguration2.class); RedisHttpSessionConfiguration configuration = this.context .getBean(RedisHttpSessionConfiguration.class); assertThat(ReflectionTestUtils.getField(configuration, "redisNamespace")) .isEqualTo("customRedisNamespace"); }
AbstractApplicationContext createApplicationContext(Api api) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.setParent(gatewayApplicationContext); context.setClassLoader(new ReactorHandlerClassLoader(gatewayApplicationContext.getClassLoader())); context.setEnvironment((ConfigurableEnvironment) gatewayApplicationContext.getEnvironment()); PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer(); configurer.setIgnoreUnresolvablePlaceholders(true); configurer.setEnvironment(gatewayApplicationContext.getEnvironment()); context.addBeanFactoryPostProcessor(configurer); context.getBeanFactory().registerSingleton("api", api); context.register(ApiHandlerConfiguration.class); context.setId("context-api-" + api.getId()); context.refresh(); return context; }
/** * Constructor. * * @param connectorInfoConverter connector info converter * @param connectorContext connector related config */ public SpringConnectorFactory(final ConnectorInfoConverter connectorInfoConverter, final ConnectorContext connectorContext) { this.catalogName = connectorContext.getCatalogName(); this.catalogShardName = connectorContext.getCatalogShardName(); this.ctx = new AnnotationConfigApplicationContext(); this.ctx.setEnvironment(new StandardEnvironment()); this.ctx.getBeanFactory().registerSingleton("ConnectorContext", connectorContext); this.ctx.getBeanFactory().registerSingleton("ConnectorInfoConverter", connectorInfoConverter); }
/** * Constructor. * * @param connectorInfoConverter connector info converter * @param connectorContext connector related config */ public SpringConnectorFactory(final ConnectorInfoConverter connectorInfoConverter, final ConnectorContext connectorContext) { this.catalogName = connectorContext.getCatalogName(); this.catalogShardName = connectorContext.getCatalogShardName(); this.ctx = new AnnotationConfigApplicationContext(); this.ctx.setEnvironment(new StandardEnvironment()); this.ctx.getBeanFactory().registerSingleton("ConnectorContext", connectorContext); this.ctx.getBeanFactory().registerSingleton("ConnectorInfoConverter", connectorInfoConverter); }
appContext.setEnvironment(new StandardServletEnvironment()); appContext.addBeanFactoryPostProcessor(beanFactory -> { PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
@Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { AnnotationConfigApplicationContext applicationContext = null; // Create a throwaway AppContext to connect to CC API and assess its version. try { applicationContext = new AnnotationConfigApplicationContext(); applicationContext.register(CloudFoundryDeployerAutoConfiguration.EarlyConnectionConfiguration.class); applicationContext.setEnvironment(environment); // Inherit current environment applicationContext.refresh(); Version version = applicationContext.getBean(Version.class); if (version.lessThan(UnsupportedVersionTaskLauncher.MINIMUM_SUPPORTED_VERSION)) { logger.warn("Targeting Cloud Foundry API {}, which is incompatible with TaskLauncher support. Forcing {} to false", version, TASKS_KEY); environment.getPropertySources().addFirst(new MapPropertySource(TASK_FEATURE_DEACTIVE_PROPERTIES, Collections.singletonMap(TASKS_KEY, "false"))); } } catch (Exception ignored) { // Might happen in particular in Integration Tests not targeting an actual CF runtime logger.warn("Could not connect to Cloud Foundry to probe API version", ignored); } finally { if (applicationContext != null) { applicationContext.close(); } } } }
@SuppressWarnings("unchecked") private Publisher<Message<?>> doCreatePublisher(ConfigurableEnvironment environment) { AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(); applicationContext.register(getConfigClass()); applicationContext.setEnvironment(environment); applicationContext.refresh(); this.applicationContext = applicationContext; return this.applicationContext.getBean(Publisher.class); }
AbstractApplicationContext createApplicationContext(Domain domain) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.setParent(gatewayApplicationContext); context.setClassLoader(new ReactorHandlerClassLoader(gatewayApplicationContext.getClassLoader())); context.setEnvironment((ConfigurableEnvironment) gatewayApplicationContext.getEnvironment()); PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer(); configurer.setIgnoreUnresolvablePlaceholders(true); configurer.setEnvironment(gatewayApplicationContext.getEnvironment()); context.addBeanFactoryPostProcessor(configurer); context.getBeanFactory().registerSingleton("domain", domain); context.register(HandlerConfiguration.class); context.setId("context-domain-" + domain.getId()); context.refresh(); return context; }
AbstractApplicationContext createApplicationContext(Domain domain) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.setParent(gatewayApplicationContext); context.setClassLoader(new ReactorHandlerClassLoader(gatewayApplicationContext.getClassLoader())); context.setEnvironment((ConfigurableEnvironment) gatewayApplicationContext.getEnvironment()); PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer(); configurer.setIgnoreUnresolvablePlaceholders(true); configurer.setEnvironment(gatewayApplicationContext.getEnvironment()); context.addBeanFactoryPostProcessor(configurer); context.getBeanFactory().registerSingleton("domain", domain); context.register(HandlerConfiguration.class); context.setId("context-domain-" + domain.getId()); context.refresh(); return context; }