SpringMVC构建REST接口:第三篇 设置文档结构及配置文件

这一篇,我们对项目的文档结构及所需要的配置文件进行设置,对于REST的实现,还是属于准备阶段。

  一、设置项目的文档结构

                 第一步,在src\main\java下,添加包(package)com.jiahe.rest.demo2

                第二步,在资源管理器中,在src\main\java\com\jiahe\rest文件夹下依次建立文件夹util、models、requestmodels、responseModels、vo、dao、service、controller

以及在service文件夹下建立impl文件夹

                              文件夹说明:

                              util,存放通用的一些算法

                             models,存放数据库所对于的表的对象

                             requestmodels,存放REST接口输入参数的对象

responseModels,存放REST接口输出参数的对象

vo,存放REST接口结果的ViewModel

dao,存放数据层的接口类以及myBatis的映射文件

                            service,存放服务层的接口类

service\impl,存放服务层的实现类

                            controller,存放对外暴露的接口的实现类


通过上面的文档结构,我们发现没有数据层的实现类。对,我们不需要编写数据层的实现类,通过mybatis-spring把数据层的接口类和myBatis的映射文件进行关联,从而实现。完整的文档结构如图3-1:


图3-1

第三步,在src\main\resources中,建立文件夹properties。

第四步,在src\main\resources\properties添加数据库连接的配置文件config.properties

 #database Connect Parameter 数据库参数配置
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.34.194:3306/?useUnicode=true&characterEncoding=UTF-8  修改ip地址
jdbc.username=root                                                                                                                                 修改数据库的账号
jdbc.password=123456                                                                                                                            修改数据库账号对应的密码

第五步,src\main\resources添加数据源连接池的的配置文件dataSource.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
        "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!--连接池中保留的最小连接数。-->
<property name="minPoolSize" value="1"/>
<!--连接池中保留的最大连接数。Default: 15-->
<property name="maxPoolSize" value="15"/>
<!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3-->
<property name="initialPoolSize" value="3"/>
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0-->
<property name="maxIdleTime" value="0"/>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3-->
<property name="acquireIncrement" value="2"/>
<!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0-->
<property name="maxStatements" value="0"/>
<!--每60秒检查所有连接池中的空闲连接。Default: 0-->
<property name="idleConnectionTestPeriod" value="60"/>
<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30-->
<property name="acquireRetryAttempts" value="300"/>
<!--
获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效
保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试
获取连接失败后该数据源将申明已断开并永久关闭。Default: false
-->
<property name="breakAfterAcquireFailure" value="false"/>
<!--
因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的
时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable
等方法来提升连接测试的性能。Default: false
-->
<property name="testConnectionOnCheckout" value="false"/>
</bean>
</beans>

这个文件,在开发、测试环节,不用修改,到生产环境时,才需要修改连接池的最大、最小连接数量值。

第六步、src\main\resources添加日志的的配置文件log4j.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" 
            "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
 <!-- 控制台输出 -->
 <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
   <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d{HH:mm:ss}(%F:%L)[%-5p] %m%n" />
  </layout>
 </appender>
<!-- 文件输出 -->
 <appender name="R" class="org.apache.log4j.FileAppender">
     <layout class="org.apache.log4j.PatternLayout">
     <param name="ConversionPattern" value="%d{HH:mm:ss}(%F:%L)[%-5p] %m%n" />
     <param name="File" value="info.log"/>
  </layout>
 </appender>
 <!-- 设置日志输出级别 -->
 <category name="java.sql">
      <priority value="debug" />
 </category>
 <category name="com.ibatis">
      <priority value="debug" />
 </category>
 <category name="com.jiahe.rest.demo2">                          项目的包名
   <priority value="debug" />
 </category>
 <root>
     <priority value="error" />
     <appender-ref ref="stdout" />
 </root>
</log4j:configuration>

这个文件,在开发、测试环节,不用修改,到生产环境时,根据日志级别对日志输出进行修改。

第七步,src\main\resources添加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:aop="http://www.springframework.org/schema/aop"  
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xsi:schemaLocation="  
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
     http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd  
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">  
    <!-- 数据库配置参数的设置 -->
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
 <list><value>classpath*:properties/config.properties</value></list>
  </property>
</bean>
    <!-- 导入数据源 -->
<import resource="classpath:dataSource.xml" /> 
      
<!-- 创建SqlSessionFactory -->     
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource" />  
        <property name="typeAliasesPackage" value="com.jiahe.rest.demo2.models" />                项目models
    </bean> 
    
    <!-- 扫描service层 
    <context:component-scan base-package="com.jiahe.rest.demo2.service" />                            不用
     --> 
    <!-- 开启事务注解驱动 -->  
    <tx:annotation-driven />  
    <!-- 事务管理器 -->  
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
        <property name="dataSource" ref="dataSource" />  
    </bean>   


    <!-- 自动扫描映射器 -->  
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
    <property name="basePackage" value="com.jiahe.rest.demo2.dao" />    项目中mybatis映射文件(配置文件)、数据层所在文件夹
    </bean>  
</beans>  

这个文件,修改两个地方项目的models和数据库的映射文件的位置

第八步,修改src\main\webapp\WEB-INF\web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  
<display-name>Archetype Created Web Application</display-name>
 
<!-- 以下3项参数与log4j的配置相关 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<!--
<param-value>/WEB-INF/classes/log4j.properties</param-value>
-->
<param-value>/WEB-INF/classes/log4j.xml</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 设置Spring容器加载配置文件路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<!-- 解决工程编码过滤器 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param> 
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Spring view分发器 -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

这个文件,目前不用修改,等用拦截或过滤器时再修改.

第九步、在src\main\webapp\WEB-INF文件夹下增加dispatcher-servlet.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:p="http://www.springframework.org/schema/p"
  xmlns:aop="http://www.springframework.org/schema/aop" 
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:mvc="http://www.springframework.org/schema/mvc" 
  xmlns:tx="http://www.springframework.org/schema/tx" 
  
  xsi:schemaLocation="http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd 
http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

<!-- 开启注解配置 -->  
    <context:annotation-config /> 
    <!--  annotation默认的方法映射适配器 
    <bean id="handlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 
    -->
    <!-- 1:对com.jiahe.rest.demo2包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->
    <context:component-scan base-package="com.jiahe.rest.demo2" />
<!-- 2:启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->  
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<!-- 3:对模型视图名称的解析,即在模型视图名称添加前后缀 --> 
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>

    <!--注册个 json 解析器,支持json-->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
</list>
</property>
</bean>
<!-- 设置上传文件大小的参数-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<property name="maxUploadSize" value="2147483648"/>
</bean>
</beans>


经过上面漫长的九步,我们所有的环境搭建好了,可以开始写接口了。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值