使用注解實現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" />


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM