1.setter注入:
          beans.xml:
          <?xml version="1.0" encoding="UTF-8"?>

          <!--
            - Application context definition for JPetStore's business layer.
            - Contains bean references to the transaction manager and to the DAOs in
            - dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation").
            
          -->
          <beans xmlns="http://www.springframework.org/schema/beans"
                  xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
                  xmlns:aop
          ="http://www.springframework.org/schema/aop"
                  xmlns:tx
          ="http://www.springframework.org/schema/tx"
                  xsi:schemaLocation
          ="
                      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
                      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
          >
              
              
          <bean name="userDao" class="com.linying.dao.UserDao"></bean>
              
              
          <bean name="userDomain" class="com.linying.domain.User"></bean>
              
              
          <bean name="userAction" class="com.linying.service.UserAction">
                  
          <property name="user" ref="userDomain"></property>
                  
          <property name="userDao" ref="userDao"></property> 
             
              
          </bean>    
              
          </beans>

          User.java:
          package com.linying.domain;

          /**
           * 領域對象
           * 
           * 
          @author Ying-er
           * @time 2010-6-20 上午10:01:05
           * @mail melody.crazycoding@gmail.com
           * 
          @version 1.00
           
          */
          public class User {
              
          private int id;

              
          private String name;

              
          private String password;

              
          public User() {
                  System.out.println(
          "User構造");
              }

              
          public String getName() {
                  
          return name;
              }

              
          public void setName(String name) {
                  
          this.name = name;
              }

              
          public String getPassword() {
                  
          return password;
              }

              
          public void setPassword(String password) {
                  
          this.password = password;
              }

              
          public int getId() {
                  
          return id;
              }

              
          public void setId(int id) {
                  
          this.id = id;
              }
          }

          UserDao.java:
          package com.linying.dao;

          import com.linying.domain.User;

          /**
           * UserDao
           * 
           * 
          @author Ying-er
           * @time 2010-6-20 上午10:17:55
           * @mail melody.crazycoding@gmail.com
           * 
          @version 1.00
           
          */
          public class UserDao {
              
          public UserDao() {
                  System.out.println(
          "UserDao構造");
              }

              
          public void insert(User user) {
                  System.out.println(
          "執行insert方法");
              }
          }

          UserAction.java:
          package com.linying.service;

          import com.linying.dao.UserDao;
          import com.linying.domain.User;

          /**
           * UserAction
           * 
           * 
          @author Ying-er
           * @time 2010-6-20 上午10:28:16
           * @mail melody.crazycoding@gmail.com
           * 
          @version 1.00
           
          */
          public class UserAction {
              
          private User user;

              
          private UserDao userDao;

              
          public UserAction() {
                  System.out.println(
          "UserAction構造");
              }

              
          /**
               * 保存User對象
               * 
               
          */
              
          public void saveUser() {
                  userDao.insert(user);
                  System.out.println(
          "saveUser方法被調用");
              }

              
          public void setUser(User user) {
                  
          this.user = user;
                  System.out.println(
          "setUser方法被調用");
              }

              
          public void setUserDao(UserDao userDao) {
                  
          this.userDao = userDao;
                  System.out.println(
          "setUserDao方法被調用");
              }


          }

          測試——Main.java:
          package com.linying;

          import org.springframework.beans.factory.BeanFactory;
          import org.springframework.context.support.ClassPathXmlApplicationContext;

          import com.linying.service.UserAction;

          /**
           * 測試程序入口
           * 
           * 
          @author Ying-er
           * @time 2010-6-20 上午11:20:24
           * @mail melody.crazycoding@gmail.com
           * 
          @version 1.00
           
          */
          public class Main {

              
          /**
               * 
          @param args
               
          */
              
          public static void main(String[] args) {
                  
          // TODO Auto-generated method stub
                  BeanFactory bf = (BeanFactory) (new ClassPathXmlApplicationContext(
                          
          "beans.xml"));

                  UserAction userAction 
          = (UserAction) bf.getBean("userAction");
                  userAction.saveUser();

              }

          }

          控制臺輸出:
          UserDao構造
          User構造
          UserAction構造
          setUser方法被調用
          setUserDao方法被調用
          執行insert方法
          saveUser方法被調用

          2.靜態工廠注入
          修改beans.xml:
              <bean name="userDao" class="com.linying.factory.DaoFactory" factory-method="getUserDao"></bean>
              
              
          <bean name="userDomain" class="com.linying.domain.User"></bean>
              
              
          <bean name="userAction" class="com.linying.service.UserAction">
                  
          <property name="user" ref="userDomain"></property>
                  
          <property name="userDao" ref="userDao"></property>    
              
          </bean>

          增加工廠:
          package com.linying.factory;

          import com.linying.dao.UserDao;
          /**
           * Dao靜態工廠
           * 
          @author Ying-er
           * @time 2010-6-20 下午04:23:25
           * @mail melody.crazycoding@gmail.com
           * 
          @version 1.00
           
          */
          public class DaoFactory {
              
          public static UserDao getUserDao(){
                  
          return new UserDao();
              }
          }

          控制臺輸出:
          UserDao構造
          User構造
          UserAction構造
          setUser方法被調用
          setUserDao方法被調用
          執行insert方法
          saveUser方法被調用

          3.實例工廠注入
          修改beans.xml:
              <bean name="daoFactory" class="com.linying.factory.DaoFactory"></bean>
              
              
          <bean name="userDao" factory-bean="daoFactory" factory-method="getUserDao"></bean>
              
              
          <bean name="userDomain" class="com.linying.domain.User"></bean>
              
              
          <bean name="userAction" class="com.linying.service.UserAction">
                  
          <property name="user" ref="userDomain"></property>
                  
          <property name="userDao" ref="userDao"></property>    
              
          </bean>

          增加實例工廠:
          package com.linying.factory;

          import com.linying.dao.UserDao;
          /**
           * Dao實例工廠
           * 
          @author Ying-er
           * @time 2010-6-20 下午04:23:25
           * @mail melody.crazycoding@gmail.com
           * 
          @version 1.00
           
          */
          public class DaoFactory {
              
          public UserDao getUserDao(){
                  
          return new UserDao();
              }
          }

          控制臺輸出:
          UserDao構造
          User構造
          UserAction構造
          setUser方法被調用
          setUserDao方法被調用
          執行insert方法
          saveUser方法被調用

          4.構造器注入
          修改beans.xml:
              <bean name="userDao" class="com.linying.dao.UserDao"></bean>
              
              
          <bean name="userDomain" class="com.linying.domain.User"></bean>
              
              
          <bean name="userAction" class="com.linying.service.UserAction">
                  
          <constructor-arg ref="userDomain"></constructor-arg>
                  
          <constructor-arg ref="userDao"></constructor-arg> 
             
              
          </bean>   
          修改UserAction.java:
          package com.linying.service;

          import com.linying.dao.UserDao;
          import com.linying.domain.User;

          /**
           * UserAction
           * 
           * 
          @author Ying-er
           * @time 2010-6-20 上午10:28:16
           * @mail melody.crazycoding@gmail.com
           * 
          @version 1.00
           
          */
          public class UserAction {
              
          private User user;

              
          private UserDao userDao;

              
          public UserAction() {
                  System.out.println(
          "UserAction構造");
              }

              
          public UserAction(User user,UserDao userDao){
                  System.out.println(
          "UserAction構造(有參構造)");
                  
          this.user = user;
                  
          this.userDao = userDao;
              }

              
          /**
               * 保存User對象
               * 
               
          */
              
          public void saveUser() {
                  userDao.insert(user);
                  System.out.println(
          "saveUser方法被調用");
              }

          //    public void setUser(User user) {
          //        this.user = user;
          //        System.out.println("setUser方法被調用");
          //    }
          //
          //    public void setUserDao(UserDao userDao) {
          //        this.userDao = userDao;
          //        System.out.println("setUserDao方法被調用");
          //    }

          }

          控制臺輸出:
          UserDao構造
          User構造
          UserAction構造(有參構造)
          執行insert方法
          saveUser方法被調用

          5.集合注入
          beans.xml:
              <bean name="daoFactory" class="com.linying.factory.DaoFactory"></bean>

              
          <bean name="userDao" factory-bean="daoFactory"
                  factory-method
          ="getUserDao">
              
          </bean>

              
          <bean name="userDomain" class="com.linying.domain.User">
                  
          <property name="id">
                      
          <value>1</value>
                  
          </property>
                  
          <property name="name" value="admin"></property>
                  
          <property name="password" value="123"></property>
                  
          <!--property name="birthday" value="1987-06-20"></property>-->
                  
          <property name="listDemo">
                      <list>
                          
          <value>list-1</value>
                          
          <value>list-2</value>
                      
          </list>

                  
          </property>
                  
          <property name="setDemo">
                      <set>
                          
          <value>set-1</value>
                          
          <value>set-2</value>
                      
          </set>

                  
          </property>
                  
          <property name="mapDemo">
                      <map>
                          
          <entry key="k1" value="v1"></entry>
                          
          <entry key="k2" value="v2"></entry>
                      
          </map>

                  
          </property>
              
          </bean>

              
          <bean name="userAction" class="com.linying.service.UserAction">
                  
          <property name="user" ref="userDomain"></property>
                  
          <property name="userDao" ref="userDao"></property>
              
          </bean>

          User.java:
          package com.linying.domain;

          import java.util.Date;
          import java.util.List;
          import java.util.Map;
          import java.util.Set;

          /**
           * 領域對象
           * 
           * 
          @author Ying-er
           * @time 2010-6-20 上午10:01:05
           * @mail melody.crazycoding@gmail.com
           * 
          @version 1.00
           
          */
          public class User {
              
          private int id;

              
          private String name;

              
          private String password;

              
          private Date birthday;

              private List<String> listDemo;

              
          private Set<String> setDemo;

              
          private Map<String, String> mapDemo;


              
          public User() {
                  System.out.println(
          "User構造");
              }

              
          public String getName() {
                  
          return name;
              }

              
          public void setName(String name) {
                  
          this.name = name;
              }

              
          public String getPassword() {
                  
          return password;
              }

              
          public void setPassword(String password) {
                  
          this.password = password;
              }

              
          public int getId() {
                  
          return id;
              }

              
          public void setId(int id) {
                  
          this.id = id;
              }

              
          public Date getBirthday() {
                  
          return birthday;
              }

              
          public void setBirthday(Date birthday) {
                  
          this.birthday = birthday;
              }

              
          public List<String> getListDemo() {
                  
          return listDemo;
              }

              
          public void setListDemo(List<String> listDemo) {
                  
          this.listDemo = listDemo;
              }

              
          public Map<String, String> getMapDemo() {
                  
          return mapDemo;
              }

              
          public void setMapDemo(Map<String, String> mapDemo) {
                  
          this.mapDemo = mapDemo;
              }

              
          public Set<String> getSetDemo() {
                  
          return setDemo;
              }

              
          public void setSetDemo(Set<String> setDemo) {
                  
          this.setDemo = setDemo;
              }

          }

          Main.java:
          package com.linying;

          import org.springframework.beans.factory.BeanFactory;
          import org.springframework.context.support.ClassPathXmlApplicationContext;

          import com.linying.service.UserAction;

          /**
           * 測試程序入口
           * 
           * 
          @author Ying-er
           * @time 2010-6-20 上午11:20:24
           * @mail melody.crazycoding@gmail.com
           * 
          @version 1.00
           
          */
          public class Main {

              
          /**
               * 
          @param args
               
          */
              
          public static void main(String[] args) {
                  
          // TODO Auto-generated method stub
                  BeanFactory bf = (BeanFactory) (new ClassPathXmlApplicationContext(
                          
          "beans.xml"));

                  UserAction userAction 
          = (UserAction) bf.getBean("userAction");
                  System.out.println(userAction.getUser().getId());
                  System.out.println(userAction.getUser().getName());
                  System.out.println(userAction.getUser().getPassword());
          //        System.out.println(userAction.getUser().getBirthday());
                  System.out.println(userAction.getUser().getListDemo());
                  System.out.println(userAction.getUser().getSetDemo());
                  System.out.println(userAction.getUser().getMapDemo());
              }
          }

          控制臺輸出:
          UserDao構造
          User構造
          UserAction構造
          setUser方法被調用
          setUserDao方法被調用
          1
          admin
          123
          [list-1, list-2]
          [set-1, set-2]
          {k1=v1, k2=v2}





          posted on 2010-06-20 20:26 Ying-er 閱讀(4105) 評論(3)  編輯  收藏 所屬分類: SSH

          評論:
          # re: Spring的注入方法小結 2010-06-22 10:35 | 愛之谷
          UserDao構造
          User構造
          UserAction構造
          setUser方法被調用
          setUserDao方法被調用  回復  更多評論
            
          # re: Spring的注入方法小結 2010-06-22 20:21 | Ying-er
          @愛之谷
          啥意思?  回復  更多評論
            
          # re: Spring的注入方法小結[未登錄] 2010-06-24 08:41 | snail
          注入方式還挺多的啊!  回復  更多評論
            
          主站蜘蛛池模板: 台安县| 朝阳县| 仪征市| 班玛县| 女性| 南溪县| 满洲里市| 玉门市| 龙南县| 桂林市| 文昌市| 西城区| 图片| 巴塘县| 盐边县| 梧州市| 遂平县| 鲁山县| 明光市| 东港市| 二手房| 翁源县| 婺源县| 甘谷县| 德安县| 明星| 齐河县| 晋城| 梧州市| 杭锦后旗| 巧家县| 梅河口市| 昌都县| 本溪市| 浦东新区| 巴青县| 日土县| 那曲县| 丹凤县| 新疆| 福鼎市|