结构图
代码
GoodsBIZ.java
package com.biz;
import com.dao.GoodsDao;
public class GoodsBIZ {
private GoodsDao goodsDao;
public GoodsDao getGoodsDao() {
return goodsDao;
}
public void setGoodsDao(GoodsDao goodsDao) {
this.goodsDao = goodsDao;
}
public void save(){
System.out.println("GoodsBIZ.save() is called…");
this.goodsDao.save();
}
}
GoodsController.java
package com.controller;
import com.biz.GoodsBIZ;
public class GoodsController {
private GoodsBIZ goodsBIZ;
public GoodsController(GoodsBIZ goodsBIZ){
System.out.println("GoodsController的有参构造被调用");
this.goodsBIZ = goodsBIZ;
}
public void save(){
System.out.println("GoodsController.save() is called…");
goodsBIZ.save();
}
}
[/sourcecode]
[sourcecode language=”java” title=”com.dao.GoodsDao.java”]
package com.dao;
public interface GoodsDao {
public void save();
}
GoodsDaoImpl.java
package com.dao.impl;
import com.dao.GoodsDao;
public class GoodsDaoImpl implements GoodsDao {
@Override
public void save() {
System.out.println("GoodsDaoImpl.save() is called…");
}
}
DaoFactory.java
package com.factory;
import com.dao.GoodsDao;
import com.dao.impl.GoodsDaoImpl;
public class DaoFactory {
public static GoodsDao createDao(){
return new GoodsDaoImpl();
}
public GoodsDao getDao(){
return new GoodsDaoImpl();
}
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<bean name="goodsDao" class="com.dao.impl.GoodsDaoImpl"/>
<bean name="goodsBIZ" class="com.biz.GoodsBIZ">
<property name="goodsDao"> <!– GoodsBIZA有个属性叫goodsDAO –>
<ref bean="goodsDao"/> <!–依赖。引用了上面那个bean(1) –>
</property>
</bean>
<bean name="goodsController" class="com.controller.GoodsController">
<constructor-arg name="goodsBIZ" ref="goodsBIZ"/>
</bean>
<bean name="dao1" class="com.factory.DaoFactory" factory-method="createDao"/>
<bean name="daoFactory" class="com.factory.DaoFactory"/>
<bean name="dao2" factory-bean="daoFactory" factory-method="getDao" scope="prototype"/>
<!– scope属性默认为”singleton”,表示单例;取prototype代表多例 –>
</beans>
SpringTest.java
package com.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.biz.GoodsBIZ;
import com.controller.GoodsController;
import com.dao.GoodsDao;
public class SpringTest {
public static void main(String[] args) {
@SuppressWarnings("resource")
ApplicationContext context =
new ClassPathXmlApplicationContext("/applicationContext.xml");
//注释掉的是不同的方法创建出的对象
/*GoodsDao goodsDao = (GoodsDao) context.getBean("goodsDao");
goodsDao.save();*/
/*GoodsBIZ goodsBIZ = (GoodsBIZ) context.getBean("goodsBIZ");
goodsBIZ.save();*/
/*GoodsController goodsController = (GoodsController) context.getBean("goodsController");
goodsController.save();*/
/*GoodsDao dao1 = (GoodsDao) context.getBean("dao1");
System.out.println(dao1);*/
GoodsDao dao21 = (GoodsDao) context.getBean("dao2");
System.out.println(dao21);
GoodsDao dao22 = (GoodsDao) context.getBean("dao2");
System.out.println(dao22);
System.out.println(dao21 == dao22);
}
}
评论