【问题标题】:Spring 3.2 Dependency injection via @Resource for primitive typesSpring 3.2 通过@Resource 对原始类型进行依赖注入
【发布时间】:2014-06-05 18:22:17
【问题描述】:

我有这个 Java 代码:

public class GreetingServiceImpl implements IGreetingService {

@Resource(name="abc")
private String anotherMsg = null;

spring-config.xml 应该是什么?以下xml给出错误:

在类路径资源 [greetingConfig.xml] 中创建名称为“abc”的 bean 时出错:设置属性值时出错;嵌套异常是 org.springframework.beans.NotWritablePropertyException:bean 类 [java.lang.String] 的无效属性“anotherMsg”:Bean 属性“anotherMsg”不可写或具有无效的 setter 方法。 setter的参数类型和getter的返回类型是否匹配?

这是spring-config.xml中的bean配置:

<bean id="abc" class="java.lang.String"> 
    <property name="anotherMsg" value="testing @Resource..."/>
</bean>

【问题讨论】:

    标签: java spring


    【解决方案1】:

    这个 bean 声明

    <bean id="abc" class="java.lang.String"> 
        <property name="anotherMsg" value="testing @Resource..."/>
    </bean>
    

    用于 String 类型的 bean。 String 类型没有名为 anotherMsg 的属性。您的类GreetingServiceImpl 有一个名为anotherMsg 的属性(假设它具有适当的getter 和setter)。

    如果你真的想创建一个 String bean,你将把它注入到一个 GreetingServiceImpl bean 中,使用构造函数参数

    <bean id="abc" class="java.lang.String"> 
        <constructor-arg type="java.lang.String" value="testing @Resource..."/>
    </bean>
    

    不过,您通常不会创建 String bean。改用属性解析来注入String 值。查看@ValuePropertySourcesPlaceholderConfigurer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 2013-02-10
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      相关资源
      最近更新 更多