繁体   English   中英

Spring自动装配的注释构造函数参数

[英]Spring autowired annotation constructor parameter

这是我的代码

类:

@Component("testcomp")
public class TestClass {

private String msg;

@Autowired
public TestClass(String msg)
{
    this.msg = msg;
}

}

appconfig.xml

<context:component-scan base-package="com.example.demo"/>
<bean id="msg" class="java.lang.String" c:_0="Test MSG"/>

当我运行项目时,我收到了这个错误:“com.example.demo.TestClass中构造函数的参数0需要一个无法找到的'java.lang.String'类型的bean。”

这种方法不适用于String类。 但如果我将String类型更改为用户定义的类,它的效果很好。 我错了,或者春天不可能这样做?

我认为将基元注入组件并没有多大意义。

  • 您的字符串是常量,因此请将其设为静态final。
  • 你的字符串是一个配置,所以把它放到你的application.properties文件中,并使用@Value("${path.to.your.property.key}")来注入它。

我没试过,但我认为你仍然可以这样配置你的bean:

@Configuration
public class Config {

  @Bean(name = "msg")
  public String msg() {
    return "Test MSG";
  }
}

@Component("testcomp")
public class TestClass {

  private String msg;

  @Autowired
  public TestClass(@Qualifier("msg") String msg)
  {
    this.msg = msg;
  }
}

但是,仍然有更简单的方法来做到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM