解决方案 »

  1.   

    <!-- 需要扫描的标注了@Controller的类 -->
    <context:component-scan base-package="com.jfpal">
    <context:include-filter type="regex"
    expression=".*.*.action.*" />
    <!-- 这里排除service,防止事务失效 -->
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/> 
    </context:component-scan>
      

  2.   

    上面写的是 mvc的配置,在自动注入controller的时候 ,配置的
      

  3.   

    首先谢谢你的回复<context:include-filter type="regex" expression=".*.*.action.*" />和<context:component-scan base-package="com.stock" use-default-filters="false">
        <context:include-filter expression=".*Controller$" type="regex"/>   
    </context:component-scan>应该是等同的吧
    我按你的方法配置后结果还是一样的,在MVC配置扫描action包下的controller的时候,会报没有service的错(controller里有各种service的自动注入)给我的感觉就像两个配置是独立开,没有相互影响一样(核心配置扫描到的service在mvc扫描的时候没生效)不知道是不是我的web.xml配置有问题
      

  4.   

    给我的感觉就是Spring Bean容器中没有Service的Bean,所以依赖注入的时候找不到
    你这里貌似也没有说到扫描Service类呀
    我也不知道我说得对不对
      

  5.   

    @Honwhy 
    首先也谢谢你回答我的问题spring核心配置是不是在springmvc配置前边儿扫描?<context:component-scan base-package="com.stock">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>如果是的话,这个配置是说在spring核心扫描的时候不扫描Controller,那Service和dao应该在这次扫描中就添加到spring 容器里了吧.
    在springmvc扫描的时候,service应该是存在的呀,这里我不是很理解.
      

  6.   

    @luopotaotao
    感谢你的答复,我这里附上我的dao,service,action代码dao:(部分代码)@Repository
    public class UserDao extends AbstractDao<User, Long> { protected Class<User> getClassType() {
    return User.class;
    } public User findByUserName(User o) {
    return super.queryForObject("SELECT_USER_INFO", o.getUserName());
    }
    service:(部分代码)@Service
    @Transactional
    public class UserService extends AbstractService<User, Long> { private UserDao userDao;

    public UserDao getUserDao() {
    return userDao;
    } @Autowired
    public void setUserDao(UserDao userDao) {
    this.setBaseDao(userDao);
    this.userDao = userDao;
    }action:(部分代码)@Controller
    public class LoginController { private Log log = LogFactory.getLog(this.getClass());
    private String path;
    @Autowired
    private UserService userService;
    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String inLogin(Map<String, Object> model) {
    return "login/login";
    } @RequestMapping({ "/", "/welcome" })
    public String inMain(Map<String, Object> model, HttpSession session) {
    path = "main/main";
    holdCurrentUser(model, session); return path;
    }
      

  7.   


    @Autowired
        public void setUserDao(UserDao userDao) {
            this.setBaseDao(userDao);
            this.userDao = userDao;
        }对Spring不太了解,但在setUserDao(UserDao userDao)里递归调用setUserDao(dao),会否造成无限循环??
      

  8.   

    问题解决,原因是容器加载冲突
    解决办法,核心扫描dao,service,服务扫描action
    ps:如有使用security注意userService,切记切记