体验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,如需转载请自行联系原作者
目录
相关文章
|
8月前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
7802 109
|
10月前
|
前端开发 Java API
利用 Spring WebFlux 技术打造高效非阻塞 API 的完整开发方案与实践技巧
本文介绍了如何使用Spring WebFlux构建高效、可扩展的非阻塞API,涵盖响应式编程核心概念、技术方案设计及具体实现示例,适用于高并发场景下的API开发。
709 0
|
8月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
8月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
8月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
735 2
|
9月前
|
安全 数据可视化 Java
AiPy开发的 Spring 漏洞检测神器,未授权访问无所遁形
针对Spring站点未授权访问问题,现有工具难以检测如Swagger、Actuator等组件漏洞,且缺乏修复建议。全新AI工具基于Aipy开发,具备图形界面,支持一键扫描常见Spring组件,自动识别未授权访问风险,按漏洞类型标注并提供修复方案,扫描结果可视化展示,支持导出报告,大幅提升渗透测试与漏洞定位效率。
|
10月前
|
缓存 Java API
Spring WebFlux 2025 实操指南详解高性能非阻塞 API 开发全流程核心技巧
本指南基于Spring WebFlux 2025最新技术栈,详解如何构建高性能非阻塞API。涵盖环境搭建、响应式数据访问、注解与函数式两种API开发模式、响应式客户端使用、测试方法及性能优化技巧,助你掌握Spring WebFlux全流程开发核心实践。
1546 0
|
10月前
|
存储 NoSQL Java
探索Spring Boot的函数式Web应用开发
通过这种方式,开发者能以声明式和函数式的编程习惯,构建高效、易测试、并发友好的Web应用,同时也能以较小的学习曲线迅速上手,因为这些概念与Spring Framework其他部分保持一致性。在设计和编码过程中,保持代码的简洁性和高内聚性,有助于维持项目的可管理性,也便于其他开发者阅读和理解。
261 0
|
12月前
|
Java API 网络架构
基于 Spring Boot 框架开发 REST API 接口实践指南
本文详解基于Spring Boot 3.x构建REST API的完整开发流程,涵盖环境搭建、领域建模、响应式编程、安全控制、容器化部署及性能优化等关键环节,助力开发者打造高效稳定的后端服务。
1416 1
|
10月前
|
存储 持续交付 Docker
Docker:颠覆传统开发的轻量级容器革命
Docker:颠覆传统开发的轻量级容器革命