解决方案 »

  1.   

    标题有点写得不合适,反正不管是Dao或者是Service,都是说在POJO中注入一个功能类
      

  2.   

    我自己找到一个解决办法,现提交上来跟大家交流下:
    首先,我想的是被注入的对象还得是从spring的容器里取,就是取spring已经初始化好的实例,所以我写了个外部函数,用来通过实例名来取实例,外部函数是这么写的:package com.XXX.learn.control.utils;import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.stereotype.Repository;
    @Repository
    public class SpringUtil implements ApplicationContextAware {
        private static ApplicationContext applicationContext;
        @Override
        public void setApplicationContext(ApplicationContext context) throws BeansException {
         SpringUtil.applicationContext = context;
        }
        public static Object getBean(String name){
            return applicationContext.getBean(name);
        }
        /**
         * 成功获取到ApplicationContext对象时返回true;反之则返回false
         */
        public static Boolean isReady() {
         return SpringUtil.applicationContext != null;
        }
    }
    第二步,在实体类中如此写:public class  User {    private ISomeService someService;    public User() {
            System.out.println("========================>User 被创建");
            if(SpringUtil.isReady()) {
                  this.someService = (ISomeService) SpringUtil.getBean("someService");
            }
        }
        
        //省略其他... ...
    }
    之所以要用isReady,是因为在应用启动时,在SpringUtil.applicationContext还未被注值时,调用getBean()是会出现空指针的;因此此方法的局限应该在于需在应用启动后再初始化此实体类时才能正确将指定属性注入。
      

  3.   

    被三层架构给毒害了,,,
    Spring注入dao,注入service和注入其它的类有什么区别吗??
    没有的.Spring功能远比你现在这样用的强大.
      

  4.   

    无法归类的bean 可以使用@Component来进行注解  写在类上   替代@Service等
    而 @Repository是注解在dao上的  
    @Component注解接口也是spring定义出来的.
      

  5.   


    我有些不明白了,我到不是说不能注入,我是想用自动注入,就是在这个类实例化时就把它的某个类属性注入值,这应该跟dao、service不一样吧,dao之类也是由spring实例化的,但bean相当于是自己new的
      

  6.   

    这样不可以吧,bean就是用来封装数据的,比如我查询得到一个User的List,这里面的n个User实例相当于是hibernate组装的(new出来的);在bean上加@Component不起作用吧
      

  7.   

    通过加注解注入肯定是不可能的,因为hibernate的内部实现跟spring没啥关系,所以通过hibernate查询出来的对象不会自动注入。
    像你那种方式肯定可以,不过奇怪的是为什么有这种奇怪的写法。同样的需求应该可以有很多种方式来实现吧。
      

  8.   

    在实体类中注入一个Service,可以当然可以,但是这个用法觉得很别扭。