系统架构师——搭建SpringMVC,Spring,Mybatis框架——从模块开发到系统架构搭建

做程序员已经有几年时光了,在期间参与过Android软件开发。Java软件开发,但就Java软件开发来说,由于项目模块众多而且复杂,从来没有自己搭建过项目框架,都是参与模块开发。每个人都一样,谁不向往成为项目中核心的一员或者成为系统架构师,项目经理等,我和众多的程序员一样,每天早早的上班,挤过公交,挤过地铁。在上海这座美丽的城市拼搏,最近终于成为了项目的主干,核心人物,我想记录下一路走来的点滴。


曾经面试过上百家的企业,当问到你独立搭建过架构吗?我只能说没有,因此拼搏几年也没拿过高薪。你是否也这样呢?那就和我一起向架构师、项目经理、团队核心努力吧,一起去追逐我们的梦想和高薪。

思路:

1、分析需求,你要做什么,目标产品具有什么特点出发(决定了你需要什么样的jar包)

2、确定搭建的技术架构,即就是采用什么样的技术,使用什么样的层次结构使得项目更容易扩展,易维护,以及多项目的架构重用(以不变应万变)

3、确定开发工具和搭建项目的工具(统一代码管理和jar管理,团队环境一致不容易出现莫名的错误)

4、实施搭建

5、测试


技术架构:spring4.1.9+springMVC+Mybatis3.2.6+jsp+javascript

开发工具:1、idea2017(统一的代码开发工具)

                  2、maven3.5(用于jar管理和项目构建测试和打包)

                  3、svn(代码统一服务器管理)

                  4、Oracle数据库+pl/sql客户端(连接数据库建表)

                  5、PowerDesigner15.3(用于数据库设计和表结构管理)

开发环境:jdk1.8(支持Java),UTF-8

项目结构:

系统架构师——搭建SpringMVC,Spring,Mybatis框架——从模块开发到系统架构搭建_第1张图片

项目架构项目创建和pom.xml配置

系统架构师——搭建SpringMVC,Spring,Mybatis框架——从模块开发到系统架构搭建_第2张图片

项目目录结构:

系统架构师——搭建SpringMVC,Spring,Mybatis框架——从模块开发到系统架构搭建_第3张图片

项目架构师为了重复使用架构模块防止每次找必须jar包,该项目我们只需要配置pom.xml配置就好。具体如下:


  4.0.0
  com.banwxf.schoolspring
  school_spring
  jar
  1.0-SNAPSHOT
  school_spring Maven Webapp
  http://maven.apache.org

  
    4.1.9.RELEASE
    3.2.6
    1.2.0
    UTF-8
  

  
    
      org.springframework
      spring-core
      ${spring.version}
    
    
      org.springframework
      spring-webmvc
      ${spring.version}
    
    
      org.springframework
      spring-web
      ${spring.version}
    
    
      org.springframework
      spring-test
      ${spring.version}
      jar
      test
    
    
      org.springframework
      spring-context
      ${spring.version}
    
    
      org.springframework
      spring-context-support
      ${spring.version}
    
    
      org.springframework
      spring-tx
      ${spring.version}
    
    
      org.springframework
      spring-jdbc
      ${spring.version}
    

    
    
      org.mybatis
      mybatis
      ${mybatis.version}
    
    
      org.mybatis
      mybatis-spring
      ${mybatis_spring.version}
    
    
    
      mysql
      mysql-connector-java
      5.1.34
    
    
      junit
      junit
      4.11
      test
    


    
    
      c3p0
      c3p0
      0.9.1.2
    

    
    
      commons-dbcp
      commons-dbcp
      1.2.2
    

    
    
      com.oracle
      ojdbc7
      11.2.0
    

    
    
      commons-fileupload
      commons-fileupload
      1.3.1
    
    
      commons-lang
      commons-lang
      2.6
    
    
      commons-io
      commons-io
      2.0.1
    

    
    
      org.slf4j
      slf4j-api
      1.7.10
    
    
      org.slf4j
      slf4j-log4j12
      1.7.10
    
    
      log4j
      log4j
      1.2.17
    

 
  
    school_spring
    
      
        org.apache.maven.plugins
        maven-compiler-plugin
        
          1.8
          1.8
        
      
    
  

详细标签和jar包引入说明:

<dependency>
  <groupId>org.springframeworkgroupId>
  <artifactId>spring-coreartifactId>
  <version>${spring.version}version>
dependency>
该标签配置了spring的jar包的版本和坐标。${spring.version}引用的是 < properties >标签中对应的版本,名字自定义,按住Ctrl能够链接到
<properties>中,鼠标移动上去会显示对应版本,否则配置
< properties >

  <spring.version>4.1.9.RELEASEspring.version>
  <mybatis.version>3.2.6mybatis.version>
  <mybatis_spring.version>1.2.0mybatis_spring.version>
  <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
properties>
该标签配置了spring,mybatis等Jar的版本号,内部标签自定义,同理,所有用到的jar版本都可以配置在 properties中


<dependency>
  <groupId>org.mybatisgroupId>
  <artifactId>mybatisartifactId>
  <version>${mybatis.version}version>
dependency>
<dependency>
  <groupId>org.mybatisgroupId>
  <artifactId>mybatis-springartifactId>
  <version>${mybatis_spring.version}version>
dependency>
这是mybatis的包,在该架构中必须有该包

<dependency>
  <groupId>mysqlgroupId>
  <artifactId>mysql-connector-javaartifactId>
  <version>5.1.34version>
dependency>
这是MySQL链接包


<dependency>
  <groupId>c3p0groupId>
  <artifactId>c3p0artifactId>
  <version>0.9.1.2version>
dependency>
这是c3po数据库连接池,能控制数据库最大连接数等,需要在spring中进行配置,具体配置看后面


    <dependency>
      <groupId>com.oraclegroupId>
      <artifactId>ojdbc7artifactId>
      <version>11.2.0version>
    dependency>
这是oracle的驱动包用于连接oracle数据库,配合c3p0使用,要连接oracle数据库必须有


<dependency>
  <groupId>commons-fileuploadgroupId>
  <artifactId>commons-fileuploadartifactId>
  <version>1.3.1version>
dependency>
<dependency>
  <groupId>commons-langgroupId>
  <artifactId>commons-langartifactId>
  <version>2.6version>
dependency>
<dependency>
  <groupId>commons-iogroupId>
  <artifactId>commons-ioartifactId>
  <version>2.0.1version>
dependency>
这三个是,spring上传下载文件必须的包,如果不需要上传下载可不需要次jar包,该包可不需要


<dependency>
  <groupId>org.slf4jgroupId>
  <artifactId>slf4j-apiartifactId>
  <version>1.7.10version>
dependency>
<dependency>
  <groupId>org.slf4jgroupId>
  <artifactId>slf4j-log4j12artifactId>
  <version>1.7.10version>
dependency>
<dependency>
  <groupId>log4jgroupId>
  <artifactId>log4jartifactId>
  <version>1.2.17version>
dependency>
该包是日志输出相关jar,需要专门配置,并非必须,只是辅助开发和系统日志处理。

其他相关jar包说明和引入


<dependency>
  <groupId>com.fasterxml.jackson.coregroupId>
  <artifactId>jackson-coreartifactId>
  <version>2.7.4version>
dependency>

<dependency>
  <groupId>com.fasterxml.jackson.coregroupId>
  <artifactId>jackson-annotationsartifactId>
  <version>2.7.4version>
dependency>
<dependency>
  <groupId>com.fasterxml.jackson.coregroupId>
  <artifactId>jackson-databindartifactId>
  <version>2.7.4version>
dependency>
这三个是用于json输出相关jar包,在spring4.1.9及以上必须使用,需要在spring的配置文件中配置


<dependency>
  <groupId>javax.servletgroupId>
  <artifactId>servlet-apiartifactId>
  <version>2.5version>
  <scope>providedscope>
dependency>
这个是servlet相关的jar包


<dependency>
  <groupId>org.apache.poigroupId>
  <artifactId>poiartifactId>
  <version>3.9version>
dependency>
<dependency>
  <groupId>org.apache.poigroupId>
  <artifactId>poi-ooxmlartifactId>
  <version>3.9version>
dependency>
<dependency>
  <groupId>org.apache.xmlbeansgroupId>
  <artifactId>xmlbeansartifactId>
  <version>2.4.0version>
dependency>
这是用于导入或导出成office文件相关的


<dependency>
  <groupId>net.sourceforgegroupId>
  <artifactId>pinyin4jartifactId>
  <version>2.5.0version>
dependency>
这是汉子拼音相关的,能够获取汉子拼音等功能


<dependency>
  <groupId>javax.servletgroupId>
  <artifactId>servlet-apiartifactId>
  <version>2.5version>
  <scope>providedscope>
dependency>

<dependency>
  <groupId>org.apache.geronimo.specsgroupId>
  <artifactId>geronimo-servlet_3.0_specartifactId>
  <version>1.0version>
  <scope>providedscope>
dependency>
这是spring当中使用httpservlet相关的,以及加载spring必须的,不能缺少,缺少web.xml的过滤器和分发配置就会报错,如下

系统架构师——搭建SpringMVC,Spring,Mybatis框架——从模块开发到系统架构搭建_第4张图片

<dependency>
  <groupId>com.banwxf.utilsgroupId>
  <artifactId>school_utilsartifactId>
  <version>1.0-SNAPSHOTversion>
dependency>
这是对本地工具项目的依赖,包括架构也要这样依赖。

这样所有的jar配置就完成了,后续就是加载spring和整合springmvc,mybatis使其成为一个整体。


二、整合springMVC+spring+mybatis+数据库需要编写如下文件:

系统架构师——搭建SpringMVC,Spring,Mybatis框架——从模块开发到系统架构搭建_第5张图片

先看jdbc配置:jdbc.properties,名字随便定义,在spring配置文件中能加载到即可

#jdbc.driverClassName=com.mysql.jdbc.Driver
#jdbc.url=jdbc:mysql://localhost:3306/jkdb?characterEncoding=utf-8
#jdbc.username=root
#jdbc.password=root

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:XE
jdbc.username=xysq
jdbc.password=xysq

c3p0.pool.maxPoolSize=20
c3p0.pool.minPoolSize=5
c3p0.pool.initialPoolSize=3
c3p0.pool.acquireIncrement=2
里面配置了c3p0和数据库驱动,数据库用户名和密码,连接地址,最大连接池等。

先看spring配置文件:文件名可以随便起





	
	

	
	

	
	
		
		
		
		

		
		
		
		
	

	
	
		
		
		
		
	

	
	
		
	
	
	
		
			
			
			
			
			
			
			
		
	

该文件主要配置了

1、加载jdbc文件,整合c3p0,注意spring中引用变量按住Ctrl能链接到,否则说明文件没找到,路径错误。

2、获取mybatis的对象

3、事务控制

4、service和dao的扫描路径

注意:其中文件头是必须的,而且后面的版本要和所引用jar一致,可以去jar底下找配置文件拷贝一个,也可以拷贝低版本的改后面的版本号

再看mybatis配置文件:名字自定义






该文件中不需要写任何东西,因为全部交给spring了

springmvc的配置:文件名随便定义





	
	

	
	
		
			
				
				
				
			
		
	
	
	
	
	
		
			
				
			
		
	


	
	
	

	
	
		
		
			5242880
		
	

	
		
		
	


该文件中需要配置controller的扫描路径,自定义过滤器,自定义异常处理器,文件上传,和必须有的视图解析器。注意springmvc是通过id加载的所以id中的名字必须是这样的,不能随便定义。

这些类在上述jar包中,文件在文件上传下载相关jar包中。


最后一步,加载spring框架。我们需要在web.xml中配置:




  Archetype Created Web Application


  
  
  	contextConfigLocation
  	classpath:applicationContext.xml
  

  
  	org.springframework.web.context.ContextLoaderListener
  

	
	
		springmvc
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			classpath:springmvc.xml
		
		
		
			detectAllHandlerExceptionResolvers
			false
		
	


	
		springmvc
		/*
	

	
	
		SpringEncoding
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			utf-8
		
	
	
		SpringEncoding
		/*
	



该文件配置了spring的配置文件名字是你定义的spring文件名,spring监听,请求分发,异常处理屏蔽,防乱码,请求过滤,详细说明如下:

<context-param>
   <param-name>contextConfigLocationparam-name>
   <param-value>classpath:applicationContext.xmlparam-value>
context-param>

<listener>
   <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>
加载spring和监听,applicationContext.xml是你的spring配置文件,按Ctrl必须连接到,名字不能变。
 
  

<servlet>
   <servlet-name>springmvcservlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
   <init-param>
      <param-name>contextConfigLocationparam-name>
      <param-value>classpath:springmvc.xmlparam-value>
   init-param>
   
   <init-param>
      <param-name>detectAllHandlerExceptionResolversparam-name>
      <param-value>falseparam-value>
   init-param>
servlet>
<servlet-mapping>
   <servlet-name>springmvcservlet-name>
   <url-pattern>/*url-pattern>
servlet-mapping> 
springmvc的加载配置,springmvc.xml 是你的springmvc的配置文件,同理可以链接,org.springframework.web.servlet.DispatcherServlet 该类依赖servlet-api这个包需要引入,下面的springmvc的映射
中按Ctrl将链接到上面配置,配置了url的拦截方式,可以是.action或.do,/*表示拦截所有


<filter>
   <filter-name>SpringEncodingfilter-name>
   <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
   <init-param>
      <param-name>encodingparam-name>
      <param-value>utf-8param-value>
   init-param>
filter>
<filter-mapping>
   <filter-name>SpringEncodingfilter-name>
   <url-pattern>/*url-pattern>
filter-mapping>
同理,这是spring强制utf-8的过滤器。


这样整个springmvc+spring4.1.9+mybatis3.2.6就搭建成功了,启动tomcat进行测试或者采用Junit测试即可。

你可能感兴趣的:(java,EE)