I have the following bean configuration.
I am setting these properties as system variables in my application code.Code:@EnvironmentValueSource @Configuration public class ApplicationConfiguration extends ConfigurationSupport { protected @ExternalValue("database_type") String databaseType; protected @ExternalValue("driver") String driverClass; protected @ExternalValue("url") String jdbcUrl; protected @ExternalValue("jdbc_username") String user; protected @ExternalValue("jdbc_password") String password; @Bean protected DataSource dataSource() { ComboPooledDataSource dataSource = new ComboPooledDataSource(); try { dataSource.setDriverClass(this.driverClass); } catch (PropertyVetoException pve) { } dataSource.setJdbcUrl(this.jdbcUrl); dataSource.setUser(this.user); dataSource.setPassword(this.password); return dataSource; } }
I get the following error when I try to create the context.Code:public class SpringContext { private static JavaConfigApplicationContext context; static { context = new JavaConfigApplicationContext(JpaConfiguration.class, DataSourceConfiguration.class, ApplicationConfiguration.class); } public static Engine makeEngine(Configuration configuration) { Properties properties = new Properties(); properties.setProperty("database_type", configuration.getDatabaseType().toString()); properties.setProperty("driver", configuration.getDriver()); properties.setProperty("url", configuration.getUrl()); properties.setProperty("jdbc_username", configuration.getJdbcUsername()); properties.setProperty("jdbc_password", configuration.getJdbcPassword()); System.setProperties(properties); return new Engine(configuration); } }
Appreciate your insight into this issue.Code:Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'config.JpaConfiguration': Initialization of bean failed; nested exception is org.springframework.config.java.valuesource.ValueResolutionException: Cannot resolve property for name 'database_type' against resolvers [PropertiesValueResolver,PropertiesValueResolver,PropertiesValueResolver,PropertiesValueResolver,EnvironmentValueResolver,EnvironmentValueResolver,EnvironmentValueResolver,EnvironmentValueResolver,EnvironmentValueResolver,EnvironmentValueResolver,EnvironmentValueResolver] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:287) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:903) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:817) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269) ... 45 more Caused by: org.springframework.config.java.valuesource.ValueResolutionException: Cannot resolve property for name 'database_type' against resolvers [PropertiesValueResolver,PropertiesValueResolver,PropertiesValueResolver,PropertiesValueResolver,EnvironmentValueResolver,EnvironmentValueResolver,EnvironmentValueResolver,EnvironmentValueResolver,EnvironmentValueResolver,EnvironmentValueResolver,EnvironmentValueResolver] at org.springframework.config.java.valuesource.CompositeValueResolver.resolve(CompositeValueResolver.java:59) at org.springframework.config.java.internal.factory.ExternalValueInjectingBeanPostProcessor.postProcessAfterInitialization(ExternalValueInjectingBeanPostProcessor.java:112) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:361) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1343) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) ... 66 more
Thanks!
Arul


