Helder Sousa opened SPR-15968 and commented

Hi,

I'm not sure if this is similar to #18258 but when we have something like the following setup, the "env" is null when creating bean ServiceA, but it is not null while creating ServiceB. Note that ServiceB bean is being created before ServiceA bean because of the @Import(ConfigB.class) in ConfigA

@Configuration
@Import(ConfigB.class)
public class ConfigA {
    @Autowired
    Environment env;

    @Bean
    public static PropertySourcesPlaceholderConfigurer propertyPlaceHolderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

    @Bean
    public ServiceA serviceA() {
        return new ServiceA(env.getProperty("myPropertyA"));
    }
}

@Configuration
public class ConfigB {
    @Autowired
    Environment env;

    @Bean
    public ServiceB serviceB(ServiceA serviceA) {
        return new ServiceB(serviceA, env.getProperty("myPropertyB"));
    }
}

Everything works fine if the interface EnvironmentAware is implemented by ConfigA. Is this a known limitation or should it work?


Affects: 4.3.10

Comment From: spring-projects-issues

Sergei Ustimenko commented

Seems like Environment in ConfigA should not be null when ServiceA gets created as propertyPlaceHolderConfigurer declared to be static.

Juergen Hoeller, could I investigate it little further and put an effort to fix it?

Comment From: bclozel

I can't reproduce this with Spring Framework 5.3.x.