Spring自动连线的注释构造函数参数

时间:2018-07-25 10:12:13

标签: java spring

这是我的代码

班级:

@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类型更改为用户定义的类,则效果很好。 我错了吗?还是在春季不可能这样做?

1 个答案:

答案 0 :(得分:3)

我认为将基元注入组件中并没有任何意义。

  • 您的字符串都是常量,因此请将其设置为static 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;
  }
}

但是,仍然有更简单的方法。