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