开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

体验Spring的“IoC容器”对开发过程中的简化

简介:
+关注继续查看
问题:设计一个 DAO组件,完成对某个数据库表的操作----DataSource也注入到我们的程序中。
1、在本项目中再增加一个DAO的接口
名称为DAOInterface,包名称为springj2seapp
在该接口中增加一个方法的定义
package springj2seapp;
import java.sql.ResultSet;
public interface DAOInterface
{
        public ResultSet SelectDBData(String select_SqlStatement);    //代表对数据的查询
public void closeCon();
}
2、再对该接口加以实现
       类名称为DAOInterfaceImpl,包名称为springj2seapp
编程该DAO组件类
package springj2seapp;
import java.sql.*;
import javax.sql.DataSource;
public class DAOInterfaceImpl implements DAOInterface
{
        DataSource dataSource=null;
        Connection con=null;
//以便能够将dataSource以属性注入的方式来注入
        public void setDataSource(DataSource dataSource)
        {
                  this.dataSource = dataSource;
        }
       public DAOInterfaceImpl()
       {
              super();
              // TODO 自动生成构造函数存根
       }
       public ResultSet SelectDBData(String select_SqlStatement)
       {
           try
           {
             con = dataSource.getConnection();
           }
           catch (SQLException ex)
           {
             System.out.println(ex.getMessage());
           }
           ResultSet rs=null;
           try
           {
             java.sql.PreparedStatement pstmt = con.prepareStatement(select_SqlStatement,
                 ResultSet.TYPE_SCROLL_SENSITIVE,
                 ResultSet.CONCUR_UPDATABLE);
             rs = pstmt.executeQuery();
           }
           catch (SQLException e)
           {
             System.out.println(e.getMessage());
           }
              return rs;
       }
       public void closeCon()
       {
              try
              {
                     con.close();
              }
              catch (SQLException e)
              {
                      System.out.println(e.getMessage());
              }
       }
}
3、修改前面的业务组件类
package springj2seapp;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
public class UserInfoManage implements UserInfoInterface
{
       boolean okOrNot;
       private Date dateBean=null;  
       DAOInterface oneDAOBean=null;   
       public UserInfoManage()
       {
新增加一个DAO的对象参数
              super();
              // TODO 自动生成构造函数存根
       }
       public UserInfoManage(UserInfoVO oneUserInfo, Date dateBean, DAOInterface oneDAOBean)
       {
              this.dateBean=dateBean;
              this.oneDAOBean=oneDAOBean;
              doUserLogin(oneUserInfo);
              // TODO 自动生成构造函数存根
       }
       public  boolean doUserLogin(UserInfoVO oneUserInfo)
       {
              String userName=oneUserInfo.getUserName();
              String userUserPassWord=oneUserInfo.getUserPassWord();             
              String sqlText="select * from userInfo where userName ='"+userName+
                                       "' and userPassWord ='"+userUserPassWord+"'";
              ResultSet rs=oneDAOBean.SelectDBData(sqlText);
              try
              {
                     if(rs.next())
                     {
                            okOrNot=true;
                     }
                     else
                     {
                            okOrNot=false;
                     }
              }
              catch (SQLException e)
              {
                     e.printStackTrace();
记得注释掉下面的哦
              }
              oneDAOBean.closeCon();
              //okOrNot=userName.equals("yang")&&userUserPassWord.equals("1234");
              String loginTime=dateBean.toLocaleString();
              System.out.println("您的登录时间是:"+loginTime);
              return okOrNot;
       }
       public boolean getUserLogin()
       {
              return okOrNot;
       }    
}
4、在*.xml配置文件中添加DataSource以及DAO组件的注入
<bean id="oneUserInfoManage" class="springj2seapp.UserInfoManage">
  <constructor-arg>
      <ref bean="oneUserInfo"/>
  </constructor-arg>
  <constructor-arg>
       <ref bean="dateBean"/>
  </constructor-arg>
  <constructor-arg>
       <ref bean="oneDAOBean"/>
  </constructor-arg>
</bean>
<bean id="oneUserInfo" class="springj2seapp.UserInfo">
此时的用户名称和密码可以是数据库表中存在的
    <property name="userName">
              <value>admin</value>
       </property>
新增加一个DataSource的声明
       <property name="userPassWord">
              <value>admin</value>
       </property>
</bean>
  <bean id="dateBean" class="java.util.Date"/>   
  <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://localhost:1433;DatabaseName=WebStudyDB</value>
        </property>
        <property name="username">
            <value>sa</value>
        </property>
        <property name="password">
            <value>1234</value>
        </property>
</bean>
<bean id="oneDAOBean"  class="springj2seapp.DAOInterfaceImpl">
       <property name="dataSource">
新增加一个DAO组件的声明
              <ref bean="dataSource"/>
       </property>
</bean>
5、启动数据库服务器
并且应该有一个数据库文件WebStudyDB,在该数据库中有一个userInfo数据库表
用户帐号为sa,并且密码为1234
6、将SQLServer2000JDBC驱动程序的*.jar文件导入到我们的项目中
msbase.jarmssqlserver.jarmsutil.jar
7、执行本程序
将出现下面的登录成功的提示
8、体验IoCDAO 的松散的支持
也可以对前面的DataSource改变为Apache DBCPDataSourceorg.apache.commons.dbcp.BasicDataSource
1)将*.xml中的DataSource的创建的实现类由
org.springframework.jdbc.datasource.DriverManagerDataSource
改变为org.apache.commons.dbcp.BasicDataSource
注意:*.xml中的其它的配置标签不需要改变。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName">
            <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
        </property>
        <property name="url">
            <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=WebStudyDB</value>
        </property>
        <property name="username">
            <value>sa</value>
        </property>
        <property name="password">
            <value>1234</value>
        </property>
</bean>
  
2)在本项目中添加对应的DBCP的驱动程序的*.jar包文件
commons-collections.jarcommons-dbcp-1.2.1.jarcommons-pool-1.2.jar
3)再执行该项目
将出现下面的登录成功的提示
 
 









本文转自 weijie@java 51CTO博客,原文链接:http://blog.51cto.com/weijie/66499,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SpringMVC的执行流程
SpringMVC的执行流程
11 0
工作三年,小胖问我什么是 Spring 的 IoC 和 AOP?真的菜!
工作三年,小胖问我什么是 Spring 的 IoC 和 AOP?真的菜!
23 0
SpringMVC(一)——【快速入门、执行流程、组件分析】
SpringMVC(一)——【快速入门、执行流程、组件分析】
42 0
SpringMVC整个执行流程
在SSM (或SSH) 框架整合使用后,基本骨架看上去还是MVC的结构. MyBatis整合一些数据封装方法节省了DAO层的代码量, Spring提供了AOP,IoC( DI 具体实现 ). 而SpringMVC将原先整个模型层,视图层,控制层进行了更好的管理. 加入框架之后,程序可以更好的进行测试.  将编程看作是一门艺术,而不单单是个技术。
1373 0
Spring编程式和声明式事务实例讲解
Spring支持两种方式的事务管理: 编程式事务管理: 通过Transaction Template手动管理事务,实际应用中很少使用, 使用XML配置声明式事务: 推荐使用(代码侵入性最小),实际是通过AOP实现
3929 0
[预告]SI 系列入门 之 手把手构建 Spring-MyBatis 工程
本周末 2014-11-30 再利用业务时间继续研究  MyBatis 及  Spring-MyBatis 最简化的 MySql 数据库操作,以及使用 MyBatis Generator 从数据库中自动生成 Java Model、Mapper 等代码,尚不知 Service 是否能自动生成,生成的接口是否以 I 开头。
915 0
+关注
20377
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载