富客户端程序设计实例 - Bean(DAO+Service层) - Spring 注解对 Bean 的托管

10年前


        Spring的注解形式:@Repository、@Service、@Controller它们分别对应存储层Bean,业务层Bean,和展示层Bean。
        事实上在Spring中只有Bean的概念,只对Bean进行托管,但是为了开发人员直观的去发现这个bean到底属于哪个层面(比如他是属于服务层还是DAO层),你总不能都用@Service去注释吧,这样不容易分清是那个层面,显得混乱,所以才会用@Repository、@Service、@Controller。但其实他们本质上都还是被托管的Bean。
        Spring是一个非常优秀的框架,在依赖IOC编程方面,手工方式提供了两种方式注入Bean,XML配置和使用注解+自动扫描package的方式 。
        Spring框架扫描时,通过@Repository、@Service、@Controller这些注释找到了需要被托管的Bean,但Bean还依赖其他的类实例,比如:
protected SessionFactory sessionFactory; private BaseDao employeeDao;等等。他们需要被初始化成对象( BaseDao employeeDao = new EmployeeDaoImpl() ;样式 )  你
才能调用里面的方法;而在Spring的框架中,类实例的初始化是由Spring来完成的。那么你需要告诉Spring,哪个类实例需要被初始化,然后调用这个类实例中的方法。这就用到了@Resource。
 
方式1注解在字段上:
    @Resource(name="baseDao")
    private BaseDao baseDao;

方式2注解在***setter()方法上
    private BaseDao employeeDao
    public BaseDao getBaseDao()
    {
        return employeeDao;
    }
    @Resource
    public void setBaseDao(BaseDao employeeDao)
    {
        this.employeeDao = employeeDao;
    }


这里反复强调“类实例”,而不是