轉載請注明出處.謝謝
現在采用spring的話會怎么樣呢.(whyspring2的代碼)
這時候,就不需要UserDaoFactory類
而UserManager類修改成:
注意看:不需寫單例了,也不用建工廠,只需要簡簡單單的把你需要的元素(如本例中的UserDao)建好,并且設置setter方法(也可以用構造方法,但不推薦).接下來的new 等等事情就交給spring來做.
 1package com.zyl.spring.manager;
 2
 3import com.zyl.spring.dao.UserDao;
 4
 5
 6public class UserManager {
 7    private UserDao userdao;//要spring new對象需要用構造方法.或者使用setter方法(推薦使用)
 8   // UserManager類實例化的時候.UserManager中依賴的東西比如UserDao通過setter和配置文件幫你實例化.(這就是依賴注入)
 9    
10    public void save(String username,String password){
11        userdao.save(username, password);
12    }

13    
14    public void delete(String userid){
15        
16    }

17    
18    
19    
20    public void update(String username,String password){
21        
22    }

23
24    public UserDao getUserdao() {
25        return userdao;
26    }

27
28    public void setUserdao(UserDao userdao) {
29        this.userdao = userdao;
30    }

31}

32

配置文件中:
 1<?xml version="1.0" encoding="UTF-8"?>
 2<beans
 3    xmlns="http://www.springframework.org/schema/beans"
 4    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
 6<!-- 以下注冊所需要的元素  spring通過配置文件可以很好的管理你的對象. 在類中定義setter,sping可以幫忙你注入對象-->    
 7<bean id="userDao4Mysql567" class="com.zyl.spring.dao.UserDao4Mysql"/>
 8<bean id="userDao4Oracle123" class="com.zyl.spring.dao.UserDao4Oracle"/>
 9
10<bean id="userManager5566" class="com.zyl.spring.manager.UserManager">
11  <property name="userdao" ref="userDao4Oracle123" />
12
13</bean>
14</beans>
bean id是可以隨便取名的,但是在所有使用的xml文件中,bean id不可以重復.
class就是bean id所實際代表的類的路徑咯
在第7.8兩行配置UserDao的2個實現類
在第10行,配置UserManager類.UserManager類中有屬性private UserDao userdao;
    在第11行通過property屬性注冊它,注意property name的值是UserManager類中定義變量時使用的變量名哦.
     而ref 屬性就是指向bean id名相同的那個類咯.這個完成的功能是什么? 不要告訴我,你不知道.回憶下上一個項目吧.
    這樣如果你要修改引用,在ref中修改就可以了.注意,它的值是bean id. 當然它也可以是其他的東西.
接下來是client的代碼:
配置的東西呢,大概就是讓spring去xml中找咯
然后通過UserManager的實例從factory中取得bean id為userManager5566的類 (這里要轉型 )
接下來就可以用了.
package com.zyl.spring.client;

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

import com.zyl.spring.manager.UserManager;


public class Client {

    
/**
     * 
@param args
     
*/

    
public static void main(String[] args) {
        
//通過配置文件初始化bean工廠 
        BeanFactory factory =new ClassPathXmlApplicationContext("applicationContext.xml");//加上配置文件xml的名字
        
//通過bean工廠得到相應的對象(UserManager)    
        UserManager userManager=(UserManager)factory.getBean("userManager5566");//即為xml中配置的id名
        
        userManager.save(
"111""pa");
    }


}

接下來,讓我們見證奇跡的一刻:(偶爾模仿一下劉謙,關注他有2年了,今年他也上春晚:) )
打印的效果是一樣的. here is mysql
修改引用的話,在xml中修改ref就可以了. 先到這里吧. 不寫了.吃點東西.好餓.生日的時候不能餓肚子.