--- layout: post title: 从零开始搭建spring-springmvc-mybatis-mysql和dubbo项目 category: 技术 tags: Spring keywords: description: --- {:toc} ## 一.准备开发环境 ### 1.工具软件 JDK1.7+,Eclipse J2EE 最新版,mysql5.6,maven3.x,tomcat7+等必须软件 ### 2.搭建maven项目开发环境 ### **[Eclipse从零配置Maven环境 笔记](http://blog.csdn.net/kisssun0608/article/details/45437621)** 现在搭建好的空的maven项目是这样的: ![这里写图片描述](http://img.blog.csdn.net/20160123184047072) ## 二.添加项目配置 ### 1.配置项目的pom文件 内容如下: ```XML 4.0.0 cn.jingzz.test Demo 0.0.1 4.2.1.RELEASE 1.8.0.RELEASE 3.2.6 1.2.0 5.1.29 10.2.0.4.0 2.5 2.2 1.2 1.1.39 2.0 2.2 1.1.3 2.4 3.3.1 1.2.1 1.2.17 1.7.6 1.6.1 1.0.17 1.2.3 1.7.4 0.8.0.RELEASE 1.0.4 0.9.2.1 6.8.8 4.11 5.3.7 4.2 3.1 3.15.0-GA 3.7.0.Final 1.1.7 2.1.4 4.2.1 1.1.39 3.1 0.8 3.4.6 0.1 2.5.0 2.1.0 1.3.6 2.6.1 3.1.0 6.1.26 1.0.0.GA 0.4 2.0-M5.1 3.0 2.2 3.0.8 2.3.3 1.6 2.8.5 UTF-8 1.7 org.springframework spring-core ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-jdbc ${spring.version} org.springframework spring-web ${spring.version} org.springframework spring-webmvc ${spring.version} org.springframework spring-aop ${spring.version} org.springframework spring-tx ${spring.version} org.springframework spring-orm ${spring.version} org.springframework spring-context-support ${spring.version} org.mongodb mongo-java-driver 2.13.0 org.springframework.data spring-data-commons 1.11.0.RELEASE org.springframework.data spring-data-mongodb ${mongo.version} org.mybatis mybatis ${mybatis.version} org.mybatis mybatis-spring ${mybatis-spring-version} com.mchange c3p0 ${c3p0.version} mysql mysql-connector-java ${mysql.version} commons-logging commons-logging ${commons-logging.version} log4j log4j ${log4j.version} org.slf4j slf4j-log4j12 ${slf4j.version} org.slf4j slf4j-api ${slf4j.version} javax.servlet servlet-api ${servlet-api.version} provided javax.servlet.jsp jsp-api ${jsp-api.version} provided javax.servlet jstl ${jstl.version} compile org.springframework spring-test ${spring.version} junit junit ${junit.version} org.testng testng ${testng.version} org.apache.commons commons-dbcp2 ${commons-dbcp2.version} org.apache.commons commons-pool2 ${commons-pool2.version} commons-io commons-io ${commons-io.version} org.apache.commons commons-lang3 ${commons-lang3.version} org.apache.commons commons-proxy 1.0 org.apache.commons commons-jexl 2.1.1 org.apache.commons commons-exec 1.2 org.apache.commons commons-compress 1.8 org.apache.commons commons-daemon 1.0.9 org.apache.commons commons-email 1.3.2 org.apache.commons commons-math 2.2 org.apache.commons commons-collections4 4.0 org.kuali.commons commons-beanutils 1.8.3-kuali-4 commons-dbutils commons-dbutils 1.5 org.apache.httpcomponents httpcore 4.3.2 org.apache.httpcomponents httpmime 4.3.3 org.apache.httpcomponents httpcore-nio 4.3.2 com.alibaba fastjson ${fastjson.version} org.aspectj aspectjweaver ${aspectjweaver.version} dom4j dom4j ${dom4j.version} net.sourceforge.htmlunit htmlunit 2.14 net.sourceforge.jwebunit jwebunit-htmlunit-plugin 3.2 xml-apis xml-apis 1.4.01 com.alibaba dubbo ${dubbo.version} org.javassist javassist ${javassist_version} io.netty netty ${netty_version} org.apache.mina mina-core ${mina_version} org.glassfish.grizzly grizzly-core ${grizzly_version} org.apache.httpcomponents httpclient ${httpclient_version} com.alibaba fastjson ${fastjson_version} org.apache.bsf bsf-api ${bsf_version} org.apache.zookeeper zookeeper ${zookeeper_version} com.github.sgroschupf zkclient ${zkclient_version} org.apache.curator curator-framework ${curator_version} com.googlecode.xmemcached xmemcached ${xmemcached_version} org.apache.cxf cxf-rt-frontend-simple ${cxf_version} org.apache.cxf cxf-rt-transports-http ${cxf_version} javax.servlet javax.servlet-api ${servlet_version} javax.validation validation-api ${validation_version} javax.cache cache-api ${jcache_version} org.jboss.resteasy resteasy-jaxrs 3.0.7.Final org.jboss.resteasy resteasy-client 3.0.7.Final org.jboss.resteasy resteasy-netty 3.0.7.Final org.jboss.resteasy resteasy-jdk-http 3.0.7.Final org.jboss.resteasy resteasy-jackson-provider 3.0.7.Final org.jboss.resteasy resteasy-jaxb-provider 3.0.7.Final com.esotericsoftware.kryo kryo 2.24.0 de.javakaffee kryo-serializers 0.26 de.ruedigermoeller fst 1.55 commons-fileupload commons-fileupload ${commons-fileupload.version} junit junit 3.8.1 test org.apache.kafka kafka_2.10 0.9.0.0 com.xxx.yyy.sns.im im_phosvr_api 0.0.1-SNAPSHOT src/main/java maven-compiler-plugin 3.1 1.7 1.7 maven-war-plugin 2.4 src/main/webapp false src/main/resources/META-INF true META-INF src/main/resources true **/*.xml **/*.properties ${project.build.directory}/classes resource true *.xml ${project.build.directory}/classes resource true *.properties ${project.build.directory}/classes ``` ### 2.配置web项目的最根本文件web.xml 内容如下: ```XML demo contextConfigLocation /WEB-INF/classes/applicationContext.xml log4jConfigLocation /WEB-INF/classes/log4j.properties springMVC org.springframework.web.servlet.DispatcherServlet 1 springMVC / org.springframework.web.context.ContextLoaderListener encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true encodingFilter /* 404 /jsps/error_404.jsp ``` ### 3.根据web.xml的加载创建并配置spring,log配置文件 其他配置文件一般放置在src/main/resources下 spring配置文件:applicationContext.xml 日志配置文件:log4j.properties ### 4.根据applicationContext.xml的加载创建并配置jdbc.properties,conf.properties等属性文件和applicationMybatis.xml,dubbo-consumer.xml等配置文件 jdbc配置文件: ```bash jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis_test?characterEncoding=utf-8 jdbc.username=root jdbc.password=xxx ``` 其他自定义配置文件: mybatis配置文件: **添加了druid数据库及监控** ```xml com.xxx.worktime.service.*.*Service.* ``` dubbo-consumer配置文件: ```xml ``` dubbo-provider配置文件: ```xml ``` log4j配置文件: ```shell log4j.rootLogger=INFO, stdout #Console log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %5p %c{1}:%L - %m%n #LogFile log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=../logs/jklog.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %5p %c{1}:%L - %m%n #Daily LogFile log4j.appender.dayfile=org.apache.log4j.DailyRollingFileAppender log4j.appender.dayfile.File=../logs/jklog.log log4j.appender.dayfile.DatePattern='.'yyyy-MM-dd'.log' log4j.appender.dayfile.Append=true log4j.appender.dayfile.layout=org.apache.log4j.PatternLayout log4j.appender.dayfile.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %5p %c{1}:%L - %m%n log4j.appender.logindb.layout=org.apache.log4j.PatternLayout log4j.logger.org.apache=INFO log4j.logger.com.mchange=INFO log4j.logger.org.springframework=INFO log4j.logger.org.apache.ibatis=INFO log4j.logger.org.mybatis.spring=INFO com.xxx.sns.imworkbench.dao.mybatis=INFO ``` ### 5.配置springmvc配置文件 因为没有在web.xml中加载,因此使用默认springmvc的设置名称和位置,为WEB-INF/springMVC-servlet.xml文件。 springmvc配置文件内容: ```xml ```