Autowired Environment is null

后端 未结 4 1632
滥情空心
滥情空心 2020-11-28 08:42

I have an issue with connecting environment to my Spring project. In this class

@Configuration
@ComponentScan(basePackages = \"my.pack.offer.*\")
@PropertyS         


        
4条回答
  •  借酒劲吻你
    2020-11-28 09:18

    Change @Autowired for @Resource (from javax.annotation) and make it public e.g.:

    @Configuration
    @PropertySource("classpath:database.properties")
    public class HibernateConfigurer {
    
        @Resource
        public Environment env;
    
        @Bean
        public DataSource dataSource() {
            BasicDataSource dataSource = new BasicDataSource();
            dataSource.setDriverClassName(env.getProperty("database.driverClassName"));
            dataSource.setUrl(env.getProperty("database.url"));
            dataSource.setUsername(env.getProperty("database.username"));
            dataSource.setPassword(env.getProperty("database.password"));
            dataSource.setValidationQuery(env.getProperty("database.validationQuery"));
    
            return dataSource;
        }
    }
    

    And you must register your configurer class in WebApplicationInitializer this way

    AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
    context.register(ApplicationConfigurer.class); //ApplicationConfigurer imports HibernateConfigurer
    

    It's working for me! You may want to check a test project I made.

提交回复
热议问题