1.1 项目结构
1.2 无参构造方法
配置bean.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--配置客户service
标签:
bean:配置javaBean对象
属性:
id:唯一标识名称
class:类的全路径
注意:默认调用类的无参数构造方法,实例化对象
-->
<bean id="customerService" class="cn.guardwhy.service.impl.CustomerServiceImpl"></bean>
<!--配置客户dao:
标签:
bean:配置javaBean对象
属性:
id:唯一标识名称
class:类的全路径
scope:设置bean的作用范围
属性取值:singleton:单例(默认值) prototype:多例
init-method:执行初始化,在构造方法执行后立即执行
destroy-method:执行销毁,在销毁spring容器的前执行
注意:默认调用类的无参数构造方法,实例化对象
-->
<bean id="customerDao" class="cn.guardwhy.dao.impl.CustomerDaoImpl"
scope="singleton" init-method="init" destroy-method="destroy"></bean>
</beans>
1.3 静态工厂方法
静态工厂类
package cn.guardwhy.factory;
import cn.guardwhy.dao.CustomerDao;
import cn.guardwhy.dao.impl.CustomerDaoImpl;
/**
* 静态工厂方法,实例化对象
*/
public class StaticFactoryBean {
/**
* 静态工厂方法
*/
public static CustomerDao createCustomerDao(){
// 返回结果
CustomerDao customerDao = null;
System.out.println("静态工厂方法实例化对象---------start");
customerDao = new CustomerDaoImpl();
System.out.println("静态工厂方法实例化对象----------end");
return customerDao;
}
}
配置bean.xml
<!--静态工厂方法实例化对象,说明:
属性:
id:唯一标识名称
class:类全路径
factory-method:指定工厂方法
-->
<bean id="staticDao" class="cn.guardwhy.factory.StaticFactoryBean"
factory-method="createCustomerDao"></bean>
表现层
CustomerController
package cn.guardwhy.controller;
import cn.guardwhy.dao.CustomerDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 客户controller
*/
public class CustomerController {
public static void main(String[] args) {
// 1.加载spring配置文件,创建IOC容器
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
// 2.静态工厂实例化对象
CustomerDao staticDao = (CustomerDao) context.getBean("staticDao");
// 3.保存用户
staticDao.saveCustomer();
}
}
执行结果
1.4 实例工厂方法
编写工厂类
package cn.guardwhy.factory;
import cn.guardwhy.dao.CustomerDao;
import cn.guardwhy.dao.impl.CustomerDaoImpl;
/**
* 实例工厂方法
*/
public class InstanceFactoryBean {
// 工厂方法
public CustomerDao createCustomerDao(){
// 1.返回结果
CustomerDao customerDao = null;
System.out.println("实例工厂方法实例化对象--------start");
customerDao = new CustomerDaoImpl();
System.out.println("实例工厂方法实例化对象--------end");
return customerDao;
}
}
配置bean.xml
<!--实例工厂方法实例化对象
第一步:配置静态工厂对象
第二步:factory-bean:指定工厂对象
factory-method:指定工厂方法
-->
<bean id="instanceFactory" class="cn.guardwhy.factory.InstanceFactoryBean"></bean>
<bean id="instanceDao" factory-bean="instanceFactory" factory-method="createCustomerDao"></bean>
表现层(Controller)
CustomerController
package cn.guardwhy.controller;
import cn.guardwhy.dao.CustomerDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 客户controller
*/
public class CustomerController {
public static void main(String[] args) {
// 1.创建spring IOC容器
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
// 2.实例工厂方法实例化对象
CustomerDao instanceDao = (CustomerDao) context.getBean("instanceDao");
// 3.保存用户
instanceDao.saveCustomer();
}
}
操作结果