首页 > 代码库 > 使用注解实现IOC的配置

使用注解实现IOC的配置

一、使用注解实现IoC的配置
        /**
         * 员工实现类,实现Dao接口,负责User类的持久化操作
         **/
        //通过注解定义一个DAO
        @Component("employeeDao")
        public class EmployeeDaoImpl implements EmployeeDao{
            public void save(Employee employee){
                //这里并未实现完整的数据库操作,仅为说明问题
                System.out.printLn("保存用户信息到数据库");
            }
        }
        
        以上代码通过注解定义了一个名为employeeDao的Bean 与<bean id="employeeDao" class="com.dao.impl.EmployeeDaompl"/>
            等效。除了@Component,Spring还提供了3个特殊的注解
                @Repository:用于标注DAO类
                @Service:用于标注业务类
                @Controller:用于标注控制器类

二、使用注解实现自动装配
      1、Spring提供了@Autowired注解实现Bean的自动装配
        
        /**
         *员工业务类,实现对Employee功能的业务管理
         **/
         @Service("employeeBiz");
         public class EmployeeBizImpl implements EmployeeBiz{
            //声明接口类的引用和具体实现类解耦和
            @AutoWired
            private EmployeeDao employeeDao;
            
            //构造函数 得到SessionFactory
            @Autowired
            public ClaimVoucherDaoImpl(@Qualifier("sessionFactory") SessionFactory sessionFactory){
                this.setSessionFactory(sessionFactory);
            }
            
            public ClaimVoucherDaoImpl(){
                
            }
         }
        
        以上代码通过@Service标注一个业务Bean,并使用@Autowired为dao属性设置自动装配,且@AutoWired默认采用
                按类型的方式
      2、若要采用按名称匹配的方式,则可以使用@Qualifier指定
        
        /**
         *员工业务类,实现对Employee功能的业务管理
         **/
         @Service("employeeBiz");
         public class EmployeeBizImpl implements EmployeeBiz{
            //声明接口类的引用和具体实现类解耦和
            @AutoWired
            @Qualifier("employeeDao");
            private EmployeeDao employeeDao;
            
            
            //构造函数 得到SessionFactory
            @Autowired
            public ClaimVoucherDaoImpl(@Qualifier("sessionFactory") SessionFactory sessionFactory){
                this.setSessionFactory(sessionFactory);
            }
            
            public ClaimVoucherDaoImpl(){
                
            }
         }
      3、@Autowired也可以对方法进行标注
      
        /**
         *员工业务类,实现对Employee功能的业务管理
         **/
         @Service("employeeBiz");
         public class EmployeeBizImpl implements EmployeeBiz{
            //声明接口类的引用和具体实现类解耦和
            private EmployeeDao employeeDao;
            
            //dao属性的setter访问器
            @AutoWired
            public void setEmployeeDao(EmployeeDao employeeDao){
                this.employeeDao = employeeDao;
            }
            
            //构造函数 得到SessionFactory
            @Autowired
            public ClaimVoucherDaoImpl(@Qualifier("sessionFactory") SessionFactory sessionFactory){
                this.setSessionFactory(sessionFactory);
            }
            
            public ClaimVoucherDaoImpl(){
                
            }
                
         }
        
三、使用注解实现控制
        @Controller("employeeAction")
        public class EmployeeAction extends ActionSupport {
            //封装雇员登陆的信息
            private SysEmployee sysemployee;
            
            //雇员业务属性
            @Autowired
            @Qualifier("employeeBiz")
            private EmployeeBiz employeeBiz;
            
            
            //封装getter和setter 进行设值注入
            public EmployeeBiz getEmployeeBiz() {
                return employeeBiz;
            }
            public SysEmployee getSysemployee() {
                return sysemployee;
            }
            public void setSysemployee(SysEmployee sysemployee) {
                this.sysemployee = sysemployee;
            }
            public void setEmployeeBiz(EmployeeBiz employeeBiz) {
                this.employeeBiz = employeeBiz;
            }
        }
        
四、使用注解指定Bean的作用域
        /**
         *员工业务类,实现对Employee功能的业务管理
         **/
         @Scope("prototype");
         @Service("employeeBiz");
         public class EmployeeBizImpl implements EmployeeBiz{
            //声明接口类的引用和具体实现类解耦和
            @AutoWired
            @Qualifier("employeeDao");
            private EmployeeDao employeeDao;
         }
五、加载注解定义的Bean
        
        <!--扫描包中注解标注的类-->
        <context:component-scan base-package="com.bdqn" />

使用注解实现IOC的配置