转载请注明出处.谢谢
现在采用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就可以了. 先到这里吧. 不写了.吃点东西.好饿.生日的时候不能饿肚子.