Spring3.0.6 +mybatis 3.0.6+JUnit+Log4j环境搭建
搭建Spring:
上个星期天开始做老师给的东西,这次打算用上刚学习了得MyBatis,然后就还想要要能上JAVA里面很强大的很好用的Spring框架,但是我以前也没有学过,直接是硬着头皮来做的。因为我采用的是mybatis-3.0.6-bundle+spring-3.0.6.RELEASE这两个版本的整合,都比较新,所以网上资料还是很少的。所以遇到了很多问题,故作此次总结,希望以后能帮助到各位。
准备工作:
1. 工欲善其事必先利其器,首先我们需要准备好我们需要的东西。列表如下:
文件 | 说明 |
spring-framework-3.0.6.RELEASE-with-docs.zip | Spring的开发框架 |
mysql-connector-java-5.1.13-bin.jar | Mysql的驱动包 |
commons-logging-1.1.1-bin.zip | Spring开发的依赖包,这个包很重要,我刚开始的时候因为这个包没有加入,一直启动tomcat出错。 |
mybatis-3.0.6-bundle.zip | Mybatis的开发框架 |
mybatis-spring-1.0.3-SNAPSHOT-bundle | Mybatis和spring的整合包。因为spring3.0比mybatis3.0早出来,所以spring3.0并不支持mybatis3.0。所以这个包是mybatis出的,为了让spring3.0支持mybatis3.0 |
Commons-dbcp.jar | 这两个是spring的数据源支持包。就是为了在spring中使用数据源。 |
Commons-pool.jar | |
jakarta-log4j-1.2.8.zip | 日志记录包 |
上面的东西大家都可以去官网下载,我就不给地址了,一个个的google吧,肯定能下到的。
2. 解压spring-framework-3.0.6.RELEASE-with-docs.zip,找到dist目录,下面的就是spring会用到的jar包了,具体jar包得作用如下:
org.springframework.aop-3.0.6.RELEASE | Spring的面向切面编程,提供AOP(面向切面编程)实现 |
org.springframework.asm- 3.0.6.RELEASE | Spring独立的asm程序,Spring2.5.6的时候需要asmJar 包3.0.6开始提供他自己独立的asmJar |
org.springframework.aspects- 3.0.6.RELEASE | Spring提供对AspectJ框架的整合 |
org.springframework.beans-3.0.6.RELEASE | SpringIoC(依赖注入)的基础实现 |
org.springframework.context.support-3.0.6.RELEASE | Spring-context的扩展支持,用于MVC方面 |
org.springframework.context-3.0.6.RELEASE | Spring提供在基础IoC功能上的扩展服务,此外还提供许多企业级服务的支持,如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等 |
org.springframework.core-3.0.6.RELEASE | Spring3.0.6的核心工具包 |
org.springframework.expression-3.0.6.RELEASE | Spring表达式语言 |
org.springframework.instrument.tomcat-3.0.6.RELEASE | Spring3.0.6对Tomcat的连接池的集成 |
org.springframework.instrument-3.0.6.RELEASE | Spring3.0.6对服务器的代理接口 |
org.springframework.jdbc-3.0.6.RELEASE | 对JDBC的简单封装 |
org.springframework.jms-3.0.6.RELEASE | 为简化JMS API的使用而作的简单封装 |
org.springframework.orm-3.0.6.RELEASE | 整合第三方的ORM框架,如hibernate,ibatis,jdo,以及 spring的JPA实现 |
org.springframework.oxm-3.0.6.RELEASE | Spring 对Object/XMl的映射支持,可以让Java与XML之间来回切换 |
org.springframework.test-3.0.6.RELEASE | 对Junit等测试框架的简单封装 |
org.springframework.transaction-3.0.6.RELEASE | 为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理 |
org.springframework.web.portlet-3.0.6.RELEASE | 基于protlet的MVC实现 |
org.springframework.web.servlet-3.0.6.RELEASE | 基于servlet的MVC实现 |
org.springframework.web.struts-3.0.6.RELEASE | 整合Struts的时候的支持 |
org.springframework.web-3.0.6.RELEASE | SpringWeb下的工具包 |
搭建Spring步骤:
3. 在myeclipse中新建一个web项目,名字叫做TestSpring2,为了省事,直接将上面所有的spring的jar包导入lib文件夹。具体也可以根据上面有选择性的导入。
4. 新建spring的配置文件,名字可以随便起,但是要注意,这个文件的路径是需要在web.xml中配置的,我起名叫做ApplicationContext.xml,放在了web-inf目录下,内容如下:
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!-- 这个地方开始放置所有bean的配置信息 --> </beans> |
记得如果拷贝这里的内容最好先拷贝到记事本,再拷贝到myeclipse下面去,就不会报错了。
5. 找到web.xml文件,打开,加入如下的代码:
<!-- spring的监听以及配置文件加载信息 --> <context-param> <param-name>contextConfigLocation</param-name> <!-- 上面配置的spring配置文件的路径,区分大小写 --> <param-value>WEB-INF/ApplicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> |
按理来上,做好上面的配置,spring就应该配置好了。但是,如果此时部署到tomcat,在tomcat的config目录中server.xml的最后倒数第三行左右,在</Host>这个结束标签之前加入如下配置:
<Context path="/course" docBase="D:\Workspaces\MyEclipse8.5\TestSpring2\WebRoot" reloadable="true" /> |
Path的值是浏览器的访问项目路径,docBase是项目WebRoot的绝对路径
10. 先配置spring的数据源,也就是配置数据库的连接。
11. 将mysql的驱动包拷贝进lib文件夹,在新建一个properties文件在web-inf文件夹下面,内容如下:
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/projectsystem user=root password=root |
12. 配置spring的配置文件ApplicationContext.xml:
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!-- 这个地方开始放置所有bean的配置信息 --> <!--配置jdbc.properties文件的位置信息,路径还是区分大小写 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations" value="WEB-INF/jdbc.properties" /> </bean> <!-- 读取jdbc.properties文件,配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${user}" /> <property name="password" value="${password}" /> <!-- 数据库连接池配置 --> <property name="initialSize" value="60" /><!-- 初始化连接数量 --> <property name="maxActive" value="100" /><!-- 最大连接数量 --> <property name="maxIdle" value="50" /><!-- 最大空闲连接数量 --> <property name="minIdle" value="10" /><!-- 最小空闲连接数量 --> </bean> </beans> |
这个里面的value使用了${}表达式,{}中的名称就是上面jdbc.properties文件中对应的字段名称。
但是这个时候需要将Commons-dbcp.jar和Commons-pool.jar导入进lib包下。
到这里,Spring的数据源就配置成功了。
13. 然后我们写一个vo类 TestTable.java,内容如下:
package org.yhb.vo; public class TestTable { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } |
14. ITestTableDAO.java这是一个接口文件,如下:
package org.yhb.vo.dao; public interface ITestTableDAO { public void doInsert(); } |
15. ITestTableDAOImpl.java实现类,实现了上面的接口:
package org.yhb.vo.impl; import org.springframework.jdbc.core.support.JdbcDaoSupport; import org.yhb.vo.dao.ITestTableDAO; public class ITestTableDAOImpl extends JdbcDaoSupport implements ITestTableDAO { //这个类继承了JdbcDaoSupport类 public void doInsert() { String sql="insert into testtable (id,name) values(1,'yuanmomo')"; this.getJdbcTemplate().execute(sql); } } |
16. 在写一个service类,调用该实现类,实现业务逻辑处理:
package org.yhb.vo.service; import org.yhb.vo.dao.ITestTableDAO; import org.yhb.vo.impl.ITestTableDAOImpl; public class ITestTableDAOService implements ITestTableDAO { private ITestTableDAOImpl testImpl; public ITestTableDAOImpl getTestImpl() { return testImpl; } //这个setter和重要,setter方式只spring在实现注入的时候调用的方法 public void setTestImpl(ITestTableDAOImpl testImpl) { this.testImpl = testImpl; } public void doInsert() { this.testImpl.doInsert(); } } |
17. 再次配置spring的配置文件ApplicationContext.xml,添加入下列的bean的配置信息:
<!-- 配置实现类,注入数据源 --> <bean id="ITestTableDAOImpl" class="org.yhb.vo.impl.ITestTableDAOImpl"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 配置service类,注入上面的实现类 --> <bean id="ITestTableDAOService" class="org.yhb.vo.service.ITestTableDAOService"> <property name="testImpl" ref="ITestTableDAOImpl" /> </bean> |
18. 此时可以启动一下tomcat,会发现正常启动,无报错。
19. 接下来写一个servlet,TestServlet.java在org.yhb.test包下。代码如下:
package org.yhb.test; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.context.ApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import org.yhb.vo.service.ITestTableDAOService; public class TestServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //初始化Spring的容器,得到一个ApplicationContext对象 ApplicationContext context=WebApplicationContextUtils. getWebApplicationContext(this.getServletContext()); //从context的得到一个bean,实例化对象 ITestTableDAOService dao=(ITestTableDAOService)context.getBean("ITestTableDAOService"); System.out.println("开始插入数据....."); dao.doInsert(); System.out.println("插入成功!!!!!!!!!"); } } |
20. 在web.xml中配置该servlet,如下:
<!-- 配置TestServlet --> <servlet> <servlet-name>testServlet</servlet-name> <servlet-class>org.yhb.test.TestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>testServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> |