SpringMVC+Hibernate+Junit4+json基本框架近乎0配置

公司是做APP开发的,需要后台来提供接口,于是乎,这个任务就交给我,经过反复的尝试,学习和参考别人的demo,终于搭出自己还算满意的框架,SpringMVC+Sping3+Hibernate4+Junit4,没有使用Maven。下面一步一步的搭建吧!

首先是选择jar包,我把我用到的jar包上传到了网上,点我下载

我使用的事Eclipse,创建好webDynamic project之后,把lib直接粘贴到webcontent下就ok了!

第一步,配置web.xml,一切请求和初始化都是经过web.xml,代码为

 <servlet>
    <servlet-name>spring</servlet-name>
    <!-- servlet文件配置 -->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
                classpath:spring-servlet.xml
            </param-value>
    </init-param>
    <!-- 优先级,正数越小,优先级越高,如果相同,则按顺序加载 -->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <!-- 请求拦截,只要是带".do"的请求,都被拦截到此 -->
  <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

接下来是spring上下文配置文件

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml
        </param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

开始spring的配置

applicationContext.xml

<!-- 扫描注解配置的包 -->
    <context:component-scan base-package="com.dw.*" />

    <!-- 配置Spring 用于以后制作Web端的页面-->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/view/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <!-- 配置数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
        <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <!-- 后期需更改 -->
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_dw" />
        <property name="user" value="root" />
        <property name="password" value="root" />

        <!-- 初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default:3 -->
        <property name="initialPoolSize" value="1" />
        <!-- 连接池中保留的最小连接数 -->
        <property name="minPoolSize" value="1" />
        <!-- 连接池中保持的最大连接数。Default:15 -->
        <property name="maxPoolSize" value="300" />
        <!-- 最大空闲时间,60秒内未使用则被丢弃。若为0则永不丢弃。Default:0 -->
        <property name="maxIdleTime" value="60" />
        <!-- 当连接池中的连接耗尽的时候c3p0一次性同时获取的连接数。Default:3 -->
        <property name="acquireIncrement" value="5" />
        <!-- 每60秒检查所有连接池中的空闲连接。Default:0 -->
        <property name="idleConnectionTestPeriod" value="60" />

    </bean>

    <bean id="nativeJdbcExtractor"
        class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor">

    </bean>
    <!-- hibernate4的配置 -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="annotatedClasses">
            <list>
                <!-- 带有注解的实体类
                <value>com.dw.entity.User</value>
                <value>com.dw.entity.Test</value>
                <value>com.dw.entity.StrTest</value>
                 -->
                <!-- <value>tv.ssdm.haoxiang.bean.WlBean</value> -->
                <!-- <value>tv.ssdm.haoxiang.bean.WmBean</value> -->
                <!-- <value>tv.ssdm.haoxiang.bean.WsBean</value> -->
                <!-- <value>tv.ssdm.haoxiang.bean.XHSItemBean</value> -->
                <!-- <value>tv.ssdm.haoxiang.bean.THItemBean</value> -->
            </list>
        </property>
        <property name="hibernateProperties">
            <value>
                property name=”dialect”>org.hibernate.dialect.MySQL5Dialect
                hibernate.hbm2ddl.auto=update
                hibernate.show_sql=false
                hibernate.format_sql=true
                <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%使用EHCache二级缓存%%%%%%%%%%%%%%%%%%%%%%%%%% -->
                hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
                hibernate.cache.use_query_cache=true;
                <!-- hibernate4Session -->
                hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext

            </value>
        </property>
    </bean>

    <!-- 事务配置 -->
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    <bean id="txManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    <!-- 使用基于注解方式管理事务 -->
    <tx:annotation-driven transaction-manager="txManager" />

    <tx:advice id="txAdvice"><!-- 默认引用 transactionManager -->
        <tx:attributes>
            <!-- 方法名以add开头,必须开启事务 -->
            <tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="insert*" propagation="REQUIRED" />
            <tx:method name="delete*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
        </tx:attributes>
    </tx:advice>

    <aop:config>
        <!-- com.dw包下 所有名字以I*Service结尾的类中 所有方法 -->
        <aop:pointcut expression="execution(* com.dw..*Service.*(..))"
            id="allServiceMethod" />
        <!-- 为 allServiceMethod 增强 txAdvice -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="allServiceMethod" />
    </aop:config>

    <!-- spring 依赖注入 -->

    <!-- 该 BeanPostProcessor 将自动对标注 @Autowired 的 Bean 进行注入 srping2.5之后 -->

    <bean
        class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />

这里的service,dao,controller全部使用注解的方式,就是为了减少配置操作

spring-servlet.xml文件

<!-- 指定使用注解方式配置,配置自动扫描的包名,base-package指定自己应用中控制器所在的包目录<context:component-scan/>
        扫描指定的包中的类上的注解,常用的注解有:@Controller 声明Action逐渐@Service声明Service 声明Action组件@Services
        声明Service组件@Service("myMovieLister") @Repository 声明Dao组件@Component泛指组件,当不好归类时,@RequestMapping("/menu")请求映射
        @Resource用于注入,(j2ee提供)默认按名称装配,@Resource(name ="beanName")@Autowired用于注入,(spring提供的)
        默认按类型装配@Transactional(rollbackFor = {Exception.class})事物管理@ResponseBody @scope("prototype")设定成bean的作用域 -->

    <!-- 扫描注解配置的包 -->
    <context:component-scan base-package="com.dw.controller" />

    <!-- 默认的注解映射的支持 -->
    <!-- 日期全局转换配置,注册自己实现的DateConverter类 -->
    <bean id="conversionService"
        class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <list>
                <bean class="com.dw.common.DateConverter"></bean>
            </list>
        </property>
    </bean>

最后就是hibernate.cfg.xml

<hibernate-configuration>

    <session-factory>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/db_dw</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="myeclipse.connection.profile">db_dw</property>
        <!-- 在控制台显示hibernate运行的sql -->
        <property name="show_sql">false</property>
        <property name="format_sql">true</property>
        <!-- 映射 -->
        <!-- 如果数据库里没有数据表,则创建 -->
        <!-- create-drop|create|update|validate -->
        <property name="hibernate.hbm2ddl.auto">update</property>

        <mapping class="com.dw.entity.Test"/>
        <mapping class="com.dw.entity.User" />
        <mapping class="com.dw.entity.StrTest"/>
    </session-factory>
</hibernate-configuration>

实体使用注解的方式后,还是要配置mapping,题目中所谓的达不到0配置就是在这里,每添加一个类,就需要在这里mapping一个。但是相比较不适用注解的方式,这样减少了好多操作!

整个框架的代码结构如下

Controllser里写了一个测试请求,打印出的事gson格式的数据,因为是为手机端提供接口,所以,gson格式的数据是首选,代码为:

@Controller
@RequestMapping(value="/test")
public class TestController {
    @Autowired
    TestService testService;

    @Autowired
    UserService userService;

    @RequestMapping(value="/add")
    public String add(HttpServletRequest request, HttpServletResponse response) throws Exception{
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();

        int id = 1;

        User user = userService.findById(id);
        Test test = new Test();
        test.setRemark("添加备注");
        test.setUser(user);

        testService.addTest(test);
        out.print("添加用户");
        return null;
    }

    @RequestMapping(value="/list")
    public String list(HttpServletRequest request, HttpServletResponse response) throws Exception{
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();

        List<Test> test = testService.list();

        Gson g = new Gson();
        out.print(g.toJson(test));

        return null;
    }
}

注意链接的格式,。。。。。/test/list.do

里面还有Junit测试

这样无论是为手机端专门编写接口,还是后来在添加web端,这个框架都能应付的来。

大家如果感兴趣就下载看看,如果感觉不错,嘿嘿,点个赞!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-29 19:11:38

SpringMVC+Hibernate+Junit4+json基本框架近乎0配置的相关文章

SpringMVC+Hibernate返回JSON数据报No serializer found错误

在使用SpringMVC+Hibernate环境中返回JSON数据有时会出现如下错误:Handler execution resulted in exception: Could not write content: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializ

Maven搭建SpringMVC+Hibernate项目详解 【转】

前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这篇主要搭建SpringMVC4.1.4和Hibernate4.3.8,之前也打了好多SpringMVC的,这部分已经非常的熟悉了,毕竟业开发过一年多SpringMVC的,这次持久层采用Hibernate,数据源采用c3p0,数据库暂采用MySQL,主要是想复习一下Hibernate.搭建Spring

Maven搭建SpringMVC+Hibernate项目详解【转】

今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这篇主要搭建SpringMVC4.1.4和Hibernate4.3.8,之前也打了好多SpringMVC的,这部分已经非常的熟悉了,毕竟业开发过一年多SpringMVC的,这次持久层采用Hibernate,数据源采用c3p0,数据库暂采用MySQL,主要是想复习一下Hibernate.搭建SpringMVC

SpringMVC+hibernate框架整合源码SSH Dubbo,ZooKeeper

获取[下载地址]   QQ: 313596790   [免费支持更新]A 代码生成器(开发利器);全部是源码     增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都有明显的优势C 安全权限框架shiro ;  Shiro 是一个用

spring+springMVC+hibernate 三大框架整合

首先我们要知道hibernate五大对象:,本实例通过深入的使用这五大对象和spring+springMVC相互结合,体会到框架的好处,提高我们的开发效率 Hibernate有五大核心接口,分别是:Session Transaction Query SessionFactoryConfiguration .这五个接口构成了Hibernate运行的基本要素,可以执行存取,持久化,事务管理等操作.这五个接口可以位于系统的业务逻辑层和持久化层.下面是一张Hibernate的关系图: Session接口

SpringMVC+Hibernate框架整合,构建一个简单项目

SpringMVC:简单易用,上手快,项目配置部分很少,注重代码开发层面 Hibernate:ORM(对象关系映射,英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping)框架,轻量级的数据库封装 下面直接上项目: 1.创建Dynamic Web Project项目,命名:SpringMVC_Hibernate ? 如图,缺少web.xml文件,如下图示,加入: ? 2.导入SpringMVC相关jar包 下载地址:SpringMVC下载 ? 3.

springMVC系列之(四) spring+springMVC+hibernate 三大框架整合(转)

https://blog.csdn.net/lishehe/article/details/38356261 基于spring+springmvc+hibernate的maven项目搭建 https://blog.csdn.net/fancy_t/article/details/70989754 原文地址:https://www.cnblogs.com/1987721594zy/p/9708567.html

Maven搭建SpringMVC+Hibernate项目详解

前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这篇主要搭建SpringMVC4.1.4和Hibernate4.3.8,之前也打了好多SpringMVC的,这部分已经非常的熟悉了,毕竟业开发过一年多SpringMVC的,这次持久层采用Hibernate,数据源采用c3p0,数据库暂采用MySQL,主要是想复习一下Hibernate.搭建Spring

Maven搭建SpringMVC+Hibernate项目详解(转)

前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这篇主要搭建SpringMVC4.1.4和Hibernate4.3.8,之前也打了好多SpringMVC的,这部分已经非常的熟悉了,毕竟业开发过一年多SpringMVC的,这次持久层采用Hibernate,数据源采用c3p0,数据库暂采用MySQL,主要是想复习一下Hibernate.搭建Spring