Spring bean自动装配不起作用

时间:2016-04-21 13:39:51

标签: java spring spring-mvc javabeans zk

有人可以帮忙解决这个问题吗? 我将Spring与zk集成,并且自动连接的服务bean在控制器中始终为null。

package com.test.MVC.controller;

@Controller
@Scope("prototype")
public class MainController extends SelectorComposer<Component>{
  private MainService mainService;

  @Override
  public void doAfterCompose(Component comp) throws Exception {
    super.doAfterCompose(comp);
    List<Map<String, Object>> list = mainService.query(null);//the mainService is always null here
  }
  @Autowired
  public void setMainService(MainService mainService) {
    this.mainService = mainService;
  }
}
package com.test.MVC.service.impl;

@Service("mainService")
public class MainServiceImpl implements MainService {//MainService: surface

  private JdbcTemplate jdbcTemplate;

  public List<Map<String, Object>> query(Integer number){...}//please ignore the content

  @Autowired
  public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {//inject bean
    this.jdbcTemplate = jdbcTemplate;
  }
}

我确实在xml文件中添加了以下设置

<context:component-scan base-package="com.test.MVC" />
<context:annotation-config/>

更新: 我刚刚发现控制器中的setter永远不会被调用。

1 个答案:

答案 0 :(得分:0)

这是因为您在ZK容器中搜索,而不是在弹簧容器中搜索。

Zk有一个特定的varbeleResolver。
请阅读:https://www.zkoss.org/wiki/ZK_Developer's_Reference/MVC/Controller/Wire_Variables