java - @Resource注入(inject)目标无效。仅允许设置方法 :

标签 java spring jboss7.x jboss5.x ibatis

我一直在尝试从 JBOSS 5 升级到 jboss 7,但遇到以下异常。

at java.lang.Thread.run(Thread.java:619) [rt.jar:1.6.0_20]
Caused by: java.lang.IllegalArgumentException: JBAS011089: @Resource injection target is invalid.  Only setter methods are allowed: void com.myaccount.admin.manager.dao.ManagerDaoImpl.init(com.ibatis.sqlmap.client.SqlMapClient)
    at org.jboss.as.ee.component.deployers.ResourceInjectionAnnotationParsingProcessor.processMethodResource(ResourceInjectionAnnotationParsingProcessor.java:192)
    at org.jboss.as.ee.component.deployers.ResourceInjectionAnnotationParsingProcessor.deploy(ResourceInjectionAnnotationParsingProcessor.java:153)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    ... 5 more

这是代码

  @Repository("managerDao")
  public class ManagerDaoImpl extends SqlMapClientDaoSupport implements ManagerDao {

  @Resource(name="sqlMapClient_ADMIN")
  public void init(SqlMapClient sqlMapClient) {
      setSqlMapClient(sqlMapClient);
   }

  ......

我用谷歌搜索,但除了 jboss jar 的源代码之外,我没有找到任何东西。

最佳答案

如果您查看 ResourceInjectionAnnotationParsingProcessor processMethodResource 源代码,您会看到:

if (!methodName.startsWith("set") || methodInfo.args().length != 1) {
    throw new IllegalArgumentException("@Resource injection target is invalid.  Only setter methods are allowed: " + methodInfo);
}

它检查方法名称是否不以“set”开头它会抛出异常。因此,要么将您的 init 方法重命名为以 set 开头,要么只是注入(inject)字段,用 @PostConstruct 注释您的 init 方法。注释是这样的:

  @Autowired
  private SqlMapClient sqlMapClient;

  @PostConstruct
  public void init() {
      setSqlMapClient(sqlMapClient);
  }

使用后置构造注释方法可能是更好的解决方案,因为将来您可能需要添加(或更改)更多内容以进行初始化,因此您唯一需要做的就是修改 init( ) 方法。

关于java - @Resource注入(inject)目标无效。仅允许设置方法 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18019947/

相关文章:

java - JPA合并外键丢失

java - 任何人都可以解释以下代码的工作......?

Java 存储库 - Spring Data JPA

java - 耳朵展开两次。 Maven、Jboss AS 7

java - add-user.bat on JBoss-as-7.1.1.Final,系统找不到指定的路径

java - 具有 Activity 事务和连接打开的 LazyInitializationException

java - 我如何使用 Java 与 Selenium Webdriver 中的此输入框进行交互?

java - 如何使用 J2ME 读取数据库?

不使用最新版本的 Spring Boot SwaggerUI

java - 没有任何注释和xml文件的Spring XD模块