当前位置: 首页 > 知识库问答 >
问题:

将对象注入Spring配置

庾远航
2023-03-14

我正在将旧的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
    ...
}

是否可以在爪哇配置中注入参数?(无需使用自动布线!

@Configuration
@Import(SpringRestConfiguration.class)

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

共有2个答案

洪哲彦
2023-03-14

如果我正确理解了你的问题,这就是你试图做的:

@Component
public class SomeConfiguration {
   @Bean(name="parameters")
   public Parameters getParameters(){
      Parameters parameters = new Parameters();
      // add your stuff
      return parameters;
   }

   @Bean(name="springRestConfiguration")
   public SpringRestConfiguration springRestConfiguration(){
      SpringRestConfiguration springRestConfiguration = new SpringRestConfiguration();
      springRestConfiguration.setParametere(getParameters());
     return springRestConfiguration;
   }

}

并像这样使用它:

ApplicationContext appContext = new AnnotationConfigApplicationContext(SomeConfiguration.class);
SpringRestConfiguration springRestConfiguration = (SpringRestConfiguration) appContext.getBean("springRestConfiguration");
文德曜
2023-03-14

基本上,您需要使用< code>@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,即名为parameters

您甚至可以做一个小测试,将XML中定义的<code>参数@Autowired,查看它是否工作。然后才将参数迁移到@Configurationclass。

在我的回答中,您可以找到如何逐步将XML迁移到@Configuration的完整解释。

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

@Configuration
public class SpringRestConfiguration {

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

}
 类似资料:
  • 我正在为一个具有2级依赖注入的类编写一个测试用例。我对1级依赖项注入对象使用@Spy注释,我想模拟第2级注入。但是,我在第二级上不断遇到空指针异常。有没有办法将模拟注入@Spy对象?

  • 本文向大家介绍JSP 获取Spring 注入对象示例,包括了JSP 获取Spring 注入对象示例的使用技巧和注意事项,需要的朋友参考一下 要获取的对象 serv = (要获取的对象) ac2.getBean("spring配置文件中的id");

  • 我刚开始使用Dagger并尝试使用dagger2进行DI,但看起来它给我的活动注入了一个空演示器。下面是我的代码。 公共类TasksActivity扩展AppCompatActivity{

  • 我有一节这样的课- 我试图注入'pty'变量从另一个类'环境'这是自动的,我得到这个异常时,我的服务器启动 错误创建名为'某物类'的bean:注入自动生成的依赖项失败;嵌套异常是org.springframework.beans.factory.BeanCreation异常:无法自动连接方法:公共无效service.facade.ActionFacade.setPty(java.lang.字符串)

  • 如何将和的值注入Spring重试注释?在下面的示例中,我想用配置属性的相应引用替换maxAttempts的值和backoff值的值。

  • 我有一个spring AOP方面类,它在每次调用服务时都会记录日志,我计划在日志中打印更多信息,这次每个请求都会有唯一的标识符,该标识符存储在请求范围的对象中,直到服务返回。我尝试将请求对象注入到@方面,但似乎效果不佳。 如果只有一个建议,它在我调用该服务时起作用,如果我添加更多建议,它会出错。(问题结束) 日志错误