java – 将对象注入Spring配置

我将旧的xml / java配置转换为纯java配置.在xml中,我使用参数注入配置文件,如下所示:

<bean class="com.project.SpringRestConfiguration">
    <property name="parameters" ref="parameters" />
</bean>



@Configuration
public class SpringRestConfiguration {

    private Parameters parameters;

    public void setParameters(Parameters parameters) {
        this.parameters = parameters;
    }

    // @Bean definitions
    ...
}

是否可以在javaconfig中注入参数? (无需使用自动装配!)

@Configuration
@Import(SpringRestConfiguration.class)

编辑:
使用@Import,我看不到有任何机会将参数注入SpringRestConfiguration

最佳答案
基本上你需要使用@Autowired但你仍然可以使用名称,而不是像这样的类型解释:

@Configuration
public class SpringRestConfiguration {

    @Autowired
    @Qualifier("parameters") // Somewhere in your context you should have a bean named 'parameters'. It doesn't matter if it was defined with XML, configuration class or with auto scanning. As long as such bean with the right type and name exists, you should be good.
    private Parameters parameters;

    // @Bean definitions
    ...
}

这解决了使用@Autowired时提到的混淆问题 – 这里毫无疑问注入了哪个bean,即命名为参数的bean.

你甚至可以做一点测试,像以前一样保留XML中定义的参数bean,使用@Autowired,看看它是否有效.然后才将参数迁移到@Configuration类.

在我的answer here中,您可以找到有关如何逐步将XML迁移到@Configuration的完整说明.

您也可以完全跳过私人会员并执行以下操作:

@Configuration
public class SpringRestConfiguration {

    @Bean
    public BeanThatNeedsParamters beanThatNeedsParamters (@Qualifier("parameters") Parameters parameters) {
       return new BeanThatNeedsParamters(parameters)
    }

}

转载注明原文:java – 将对象注入Spring配置 - 代码日志