Spring练习二,分别利用静态工厂和实例工厂产生Connection对象;

为什么要用工厂方法:因为对于一些复杂的,没有办法直接通过构造器构建,可以创建 工厂 方法构建。例如:Connection对 象

 

1.因为要产生Connection所以要引入ojdbc.jar包

2.创建一个产生Connection对象的类

静态工厂就让getConnection方法变成静态的,产生对象时直接  .方法名()  调用

实例工厂则不加,但是在配置xml,和产生对象是会不同.

注意:这里就直接赋初始值了,如果要用构造器或者set方法注入,请参考Spring练习一

package ioc.day2.mytest1;

import java.sql.Connection;
import java.sql.DriverManager;

public class StaticConnectionFactory {
	private static String driver = "oracle.jdbc.driver.OracleDriver";
	private static String url = "jdbc:oracle:thin:@localhost:1521:xe";
	private static String user = "cyg";
	private static String password = "cyg";
	public static Connection getConnection() {
		System.out.println("getConnection-----------------方法");
		try {
			Class.forName(driver);
			Connection conn = DriverManager.getConnection(url, user, password);
			return conn;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new RuntimeException(e); 
		}		
	};
	
}

3.创建一个xml文件,并配置

1.静态工厂配置方法

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="conn" class="ioc.day2.mytest1.StaticConnectionFactory">
        <!-- 利用构造器传参
        <constructor-arg name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></constructor-arg>
        <constructor-arg name="user" value="cyg"></constructor-arg>
        <constructor-arg name="password" value="cyg"></constructor-arg> -->
    </bean>
</beans>

2.实例工厂配置方法

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="fa" class="ioc.day2.mytest1.StaticConnectionFactory">
        <!-- 利用构造器传参
        <constructor-arg name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></constructor-arg>
        <constructor-arg name="user" value="cyg"></constructor-arg>
        <constructor-arg name="password" value="cyg"></constructor-arg> -->
    </bean>
    <!-- 创建对象时自动调用里面的getConnection方法-->
     <bean id="conn" factory-bean="fa" factory-method="getConnection"></bean> 
</beans>

4.写测试类

1.静态工厂测试方法

package spring_jd2007;


import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import ioc.day2.mytest1.StaticConnectionFactory;


public class Myday2_Test {
	@Test
	public void testConnection() {
		ApplicationContext ac = new ClassPathXmlApplicationContext("ioc/day2/mytest1/Connection.xml");
		
		StaticConnectionFactory sconn = ac.getBean("conn",StaticConnectionFactory.class);
            //这里用 .方法名() 的方式调用,也可以在xml中配置直接调用方法,和实例工厂的方式一样
		System.out.println(sconn.getConnection());
		
		
	}
}

2.实例工厂测试方法

package spring_jd2007;

import java.sql.Connection;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;



public class Myday2_Test {
	@Test
	public void testConnection() {
		ApplicationContext ac = new ClassPathXmlApplicationContext("ioc/day2/mytest1/Connection.xml");
		
		
		Connection connection = ac.getBean("conn",Connection.class);
		System.out.println("--------");
		System.out.println(connection);
	}
}

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值