本Demo实现一个简单的数据源并注入类对象,然后通过一个Main函数进行调用测试
不想说太多理论知识 由于能力有限 怕说错误导人 请见谅 直接进入正题.
1.配置文件 beans-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</property>
<property name="url">
<value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs</value>
</property>
<property name="username">
<value>sa</value>
</property>
<property name="password">
<value></value>
</property>
</bean>
<bean id="daoTest" class="com.daodemo.DaoTest">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
</beans>
注意:这个配置文件放在工程根目录下即可,关于目录调用访问问题可自行测试.
org.springframework.context.support包下面几个读取配置文件的类 访问路径都有区别.
2.业务逻辑测试类(一个简单的查询操作) DaoTest.java
package com.daodemo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.sql.DataSource;
public class DaoTest {
public DataSource dataSource;
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public ResultSet getEmpName(){
ResultSet rs = null;
try{
Connection con = dataSource.getConnection();
String sql = "select fname,lname from employee";
PreparedStatement pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
}catch(Exception e){
e.printStackTrace();
}
return rs;
}
}
注意:这个类里必须要有setDataSource方法 并且具有dataSource属性,否则配置文件中的
<bean id="daoTest" class="com.daodemo.DaoTest">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
将不能完成依赖注入
3.测试类 DaoMain.java
package com.daodemo;
import java.sql.ResultSet;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class DaoMain {
public static void main(String[] args) {
try{
//应用程序上下文ApplicationContext类 是一个接口 不能直接初始化,需要用支持包中的实现类来创建context 对象
ApplicationContext context = new FileSystemXmlApplicationContext("beans-config.xml");
//用context来获得daoTest bean , 这个类中的dataSource已经被注入,所以无须在业务逻辑中再初始化数据源等操作.
DaoTest daoTest = (DaoTest) context.getBean("daoTest");
ResultSet rs = daoTest.getEmpName();
while(rs.next()){
System.out.println(rs.getString("fname")+ " " +rs.getString("lname"));
}
}catch(Exception e){
e.printStackTrace();
}
}
}
注意:这个类中FileSystemXmlApplicationContext 也可以换成其他的类来读取bans-config.xml文件 来获得bean
4.输出结果
Aria Cruz
Ann Devon
Annette Roulet
............部分省略...............
Timothy O'Rourke
Victoria Ashworth
Yoshi Latimer