Java – spring 3.1: how to inject beans created in different configuration classes

I just set up a web application using spring 3.1, and I try to do this by using java configuration

Next, the verifier in the AppConfig configuration class should use the MessageSource from webconfig

AppConfig:

@Configuration
@ComponentScan(basePackages = { "com.example" })
public class AppConfig {

    @Bean
    public Validator validator() {
        final LocalValidatorfactorybean validator = new LocalValidatorfactorybean();
        validator.setValidationMessageSource(messageSource());
        return validator;
    }

}

WebConfig:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.example.common.web","com.example.web"  })
public class WebConfig extends WebMvcConfigurerAdapter {

    @Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:messages");
        return messageSource;
    }

}

When I want to reference a bean from the same configuration class, I just call its setup method, but when the bean is declared in another class, I obviously can't do so

Thank you very much for your advice!

Solution

There are two ways to do this:

public class WebConfig {
    @Autowired
    AppConfig appconfig;

    ...
}

Or, as Aaron digulla said:

public class WebConfig {
    @Autowired
    Validator validator;

    ...
}

I prefer the first form. One is automatic assembly. You can access the whole configuration, and then you can call newbean setValidator(appConfig.validator()); To access its bean

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>