zoukankan      html  css  js  c++  java
  • 【Spring】Spring之浅析Spring框架的搭建

    Spring是什么

    Spring是一个开源的容器框架,用于配置bean并且维护bean之间关系的。其主要的思想就是IOC(Inversion Of Control,控制反转)或者称作DI(Dependency Injection,依赖注入)。IOC的解释就是程序中对象的获取方式发生反转,最初由new方式创建对象转化为由容器创建,注入,这样可以降低对象之间的耦合度。依赖注入,就是IOC的另一种说法,程序中被注入的对象依赖IOC容器中配置的对象。

    Spring的结构图:

    搭建Spring框架步骤

    1. 下载Spring开发包,Spring-4.3.4完整开发包下载
    2. 在JavaProject下面建立一个lib目录,将开发包下面的libs目录里的所有以spring开头的jar文件,和commons-logging文件都拷贝到新建的lib里面。
    3. 将拷贝的文件全部选中,然后添加到Build path里。

    简单Demo

    我的结构目录:

    1. 建立一个User类

      package cn.shop.bean;
      
      import java.sql.Date;
      
      public class User {
      
          private int id;
          private String login_name;
          private String password;
          private Date birth;
      
          public User() {
              super();
          }
      
          public User(int id, String login_name, String password, Date birth) {
              super();
              this.id = id;
              this.login_name = login_name;
              this.password = password;
              this.birth = birth;
          }
      
          public int getId() {
              return id;
          }
      
          public void setId(int id) {
              this.id = id;
          }
      
          public String getLogin_name() {
              return login_name;
          }
      
          public void setLogin_name(String login_name) {
              this.login_name = login_name;
          }
      
          public String getPassword() {
              return password;
          }
      
          public void setPassword(String password) {
              this.password = password;
          }
      
          public Date getBirth() {
              return birth;
          }
      
          public void setBirth(Date birth) {
              this.birth = birth;
          }
      
          @Override
          public String toString() {
              return "User [id=" + id + ", login_name=" + login_name + ", password=" + password + ", birth=" + birth + "]";
          }
      
      }
      User.java
    2. 建立一个UserDao类

      package cn.shop.dao;
      
      import java.util.List;
      
      import org.springframework.jdbc.core.BeanPropertyRowMapper;
      import org.springframework.jdbc.core.support.JdbcDaoSupport;
      
      import cn.shop.bean.User;
      
      public class UserDao extends JdbcDaoSupport {
          
          public List<User> selectAllUser(){
              return getJdbcTemplate().query("select * from xdl_user", new BeanPropertyRowMapper<User>(User.class));
          }
      
      }
      UserDao

      该类继承了JdbcDaoSupport类,该类里面有一个dataSource属性,该属性是用来创建jdbcTemplate用的。因为UserDao类直接继承了JdbcDaoSupport,因此可以拥有dataSource,便于后面在配置文件中设置。

      上面除了query,还有queryForObject、update、execute。

      new BeanPropertyRowMapper<User>(User.class)

      这样代码采用了反射技术,就是把查询到结果集反射到User类的属性上。因此该类的属性应该和数据表中的字段名对应,可以忽略大小写。

      当然除了使用BeanPropertyRowMapper,还可以使用RowMapper。

    3. 建立一个Test类

      package cn.shop.test;
      
      import java.util.List;
      
      import org.junit.Test;
      import org.springframework.context.ApplicationContext;
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      
      import cn.shop.bean.User;
      import cn.shop.dao.UserDao;
      
      public class UserDaoTest {
      
          @Test
          public void Test() throws Exception {
              ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
              UserDao userDao=ac.getBean("userDao", UserDao.class);
              List<User> users = userDao.selectAllUser();
              System.out.println(users);
          }
      }
      UserDaoTest.java

      ApplicationContext是一个接口,由ClassPathXmlApplicationContext寻找applicationContext这个文件,在开发包里一个index.html的网页文件,读者可以在里面查找相应Spring版本的API文档。

      ClassPathXmlApplicationContext类用来加载文件

      ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");

    4. 建立applicationContext文件

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:context="http://www.springframework.org/schema/context" 
          xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
          xmlns:jee="http://www.springframework.org/schema/jee" 
          xmlns:tx="http://www.springframework.org/schema/tx"
          xmlns:aop="http://www.springframework.org/schema/aop" 
          xmlns:mvc="http://www.springframework.org/schema/mvc"
          xmlns:util="http://www.springframework.org/schema/util"
          xmlns:jpa="http://www.springframework.org/schema/data/jpa"
          xsi:schemaLocation="
              http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
              http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd
              http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.1.xsd
              http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
              http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
              http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
              http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
              http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd">
          
          <!--导入数据库相关文件-->
          <util:properties id="db" location="classpath:db.properties"></util:properties>
          
           <bean id="database" class="org.apache.commons.dbcp.BasicDataSource"> 
              <!-- 驱动地址 -->
              <property name="driverClassName" value="#{db.driverClassName}"></property>
              <!-- 数据库的连接地址 -->
              <property name="url" value="#{db.url}"></property>
              <!-- 数据库的帐号 -->
              <property name="username" value="#{db.username}"></property>
              <!--  数据库的密码 -->
              <property name="password" value="#{db.password}"></property>
           </bean>
          
          <bean id="userDao" class="cn.shop.dao.UserDao">
          <!-- 
              在调用set方法进行赋值, 
              Spring容器是通过反射技术 ,根据我们传递的name参数 , 得到对应的set方法名称, 将其调用
           -->
              <property name="dataSource" ref="database"></property>
          </bean>  
      </beans>
      applicationContext.xml
    5. 建立db.properties文件

      driverClassName=oracle.jdbc.OracleDriver
      url=jdbc:oracle:thin:@localhost:1521:xe
      password=517839
      username=system

      关于上面beans的一些属性的使用,读者可以参见:Spring创建对象的三种方式

    Spring-tool-suite的是什么

    Spring-tool-suite就是一个方便Spring开发的工具,在使用之前是需要进行安装的,Eclipse安装Spring-tool-suite

    这里介绍的配置Spring的方法,不足以达到SpringMVC的使用,关于SpringMVC的配置可以参见SpringMVC的非注解配置的两种方式

    参考文章

    http://blog.csdn.net/zoutongyuan/article/details/27073683

    本文为博主原创文章,如需转载请注明出处。

  • 相关阅读:
    Appium学习笔记||十一、Appium按键操作
    Appium学习笔记||九、操作不可见元素
    Appium学习笔记||八、滑动页面
    Appium学习笔记||七、用UIAutomator API定位
    Appium学习笔记||六、根据Xpath寻找元素
    Appium学习笔记||五、Tap方法
    enumerate 函数
    python 复制 浅copy 深copy 的区别
    听歌都能听出来代码...
    for 循环时候 pop现象
  • 原文地址:https://www.cnblogs.com/HDK2016/p/6217274.html
Copyright © 2011-2022 走看看