轉載請注明出處.謝謝
現在采用spring的話會怎么樣呢.(whyspring2的代碼)
這時候,就不需要UserDaoFactory類
而UserManager類修改成:
注意看:不需寫單例了,也不用建工廠,只需要簡簡單單的把你需要的元素(如本例中的UserDao)建好,并且設置setter方法(也可以用構造方法,但不推薦).接下來的new 等等事情就交給spring來做.
1
package com.zyl.spring.manager;
2
3
import com.zyl.spring.dao.UserDao;
4
5
6
public 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就可以了. 先到這里吧. 不寫了.吃點東西.好餓.生日的時候不能餓肚子.