【Spring】Spring之浅析Spring框架的搭建
Spring是什么
Spring是一个开源的容器框架,用于配置bean并且维护bean之间关系的。其主要的思想就是IOC(Inversion Of Control,控制反转)或者称作DI(Dependency Injection,依赖注入)。IOC的解释就是程序中对象的获取方式发生反转,最初由new方式创建对象转化为由容器创建,注入,这样可以降低对象之间的耦合度。依赖注入,就是IOC的另一种说法,程序中被注入的对象依赖IOC容器中配置的对象。
Spring的结构图:
搭建Spring框架步骤
- 下载Spring开发包,Spring-4.3.4完整开发包下载。
- 在JavaProject下面建立一个lib目录,将开发包下面的libs目录里的所有以spring开头的jar文件,和commons-logging文件都拷贝到新建的lib里面。
- 将拷贝的文件全部选中,然后添加到Build path里。
简单Demo
我的结构目录:
-
建立一个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 + "]"; } }
-
建立一个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)); } }
该类继承了JdbcDaoSupport类,该类里面有一个dataSource属性,该属性是用来创建jdbcTemplate用的。因为UserDao类直接继承了JdbcDaoSupport,因此可以拥有dataSource,便于后面在配置文件中设置。
上面除了query,还有queryForObject、update、execute。
new BeanPropertyRowMapper<User>(User.class)
这样代码采用了反射技术,就是把查询到结果集反射到User类的属性上。因此该类的属性应该和数据表中的字段名对应,可以忽略大小写。
当然除了使用BeanPropertyRowMapper,还可以使用RowMapper。
-
建立一个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); } }
ApplicationContext是一个接口,由ClassPathXmlApplicationContext寻找applicationContext这个文件,在开发包里一个index.html的网页文件,读者可以在里面查找相应Spring版本的API文档。
ClassPathXmlApplicationContext类用来加载文件
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
-
建立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>
-
建立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
本文为博主原创文章,如需转载请注明出处。