【问题标题】:Invalid property of bean class is not writable or an invalid setter methodbean 类的无效属性不可写或 setter 方法无效
【发布时间】:2017-03-26 20:57:30
【问题描述】:

这可能看起来像 this question 的副本。但这是不同的。 我试图通过在 spring 中使用方法注入来重构我的遗留代码。

我有一个包含许多静态辅助方法的 bean 类。我的针对性方法如下:

Context.java


private static MessageSender messageSender;

//...

public static MessageSender getMessageSender(){
    return messageSender;
}

上下文 bean


<bean id="context" class="org.abc.Context">

   <property name="messageSender"><ref bean="mailMessageSender"/></property>
</bean>

MailMessageSender.java


public abstract class MailMessageSender{

   protected abstract Session createSession();

   //using createSession() somewhere in this class
}

MailMessageSender bean


<bean id="session" class="javax.mail.Session" scope="prototype" />

<bean id="mailMessageSender" class="org.abc.MailMessageSender">
   <lookup-method name="createSession" bean="session"/>
</bean>

我在安装项目时遇到无效属性错误。

【问题讨论】:

  • messageSender 不是属性。这是一个静态字段。你不能注入静态字段。

标签: java spring methods inject


【解决方案1】:

你不能注入静态字段,改变你在 Context.java 中的变量变成这样:

private MessageSender messageSender;

//...

public MessageSender getMessageSender(){
    return messageSender;
}

【讨论】:

  • getMessageSender() 无法移除 static 行为。
猜你喜欢
  • 2015-09-07
  • 2021-11-16
  • 1970-01-01
  • 2020-06-22
  • 1970-01-01
  • 2023-03-25
  • 2013-01-31
  • 1970-01-01
  • 2013-03-31
相关资源
最近更新 更多