Spring+SpringMVC+Hibernate项目开发集成(注解)

作者: 云计算机网 分类: 云计算知识 发布时间: 2016-08-07 15:46

  在自己从事的项目中都是使用xml配置的方式来进行的,随着项目的越来越大,会发现配置文件会相当的庞大,这个不利于项目的进行和后期的维护。于是考虑使用注解的方式来进行项目的开发,前些日子就抽空学习了一下。在网上也查询了很多使用注解来搭建开发框架的文章,但是有一个问题就是,使用更新的软件版本会出错。这里我将使用最新的Spring,Hibernate来进行框架的搭建,经过测试,顺利运行。分享旨在与大家一起分享学习,共同进步,有不足之处,望不吝赐教,谢谢!

  本项目使用maven构建,采用Spring + Spring MVC + Hibernate + MySQL进行搭建,下面简要说明本项目所使用软件版本:

maven:3.2.3
hibernate:4.3.9.Final
spring:4.1.6.RELEASE
mysql:5.1.35

  接下来我看一下项目的整体结构:

  

下面我们开始框架的搭建之旅吧。

一,配置文件

1,首先配置pom.xml,获得项目所需要的jar文件。

<project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'    xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd'>    <modelVersion>4.0.0</modelVersion>    <groupId>cn</groupId>    <artifactId>mylife</artifactId>    <packaging>war</packaging>    <version>0.0.1-SNAPSHOT</version>    <name>mylife Maven Webapp</name>    <url>http://maven.apache.org</url>        <!-- 设置使用框架的版本 -->    <properties>        <hibernate-version>4.3.9.Final</hibernate-version>        <spring-version>4.1.6.RELEASE</spring-version>        <mysql-driver-version>5.1.35</mysql-driver-version>    </properties>    <dependencies>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.12</version>        </dependency>        <!-- servlet api -->        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>javax.servlet-api</artifactId>            <version>3.1.0</version>        </dependency>        <!-- jstl -->        <dependency>            <groupId>jstl</groupId>            <artifactId>jstl</artifactId>            <version>1.2</version>        </dependency>        <!-- hibernate -->        <dependency>            <groupId>org.hibernate</groupId>            <artifactId>hibernate-core</artifactId>            <version>${hibernate-version}</version>        </dependency>        <!-- spring -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-jdbc</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-orm</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context-support</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-expression</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-aspects</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-oxm</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc-portlet</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-messaging</artifactId>            <version>${spring-version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-instrument</artifactId>            <version>${spring-version}</version>        </dependency>        <!-- MySQL驱动 -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>${mysql-driver-version}</version>        </dependency>        <!-- dbcp -->        <dependency>            <groupId>commons-dbcp</groupId>            <artifactId>commons-dbcp</artifactId>            <version>1.4</version>        </dependency>        <dependency>            <groupId>commons-io</groupId>            <artifactId>commons-io</artifactId>            <version>2.4</version>        </dependency>    </dependencies>    <build>        <finalName>mylife</finalName>        <plugins>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <configuration>                    <source>1.8</source>                    <target>1.8</target>                </configuration>            </plugin>        </plugins>    </build></project> 
  • Web service是什么?


    我们可以这样理解什么是Web Service,它即是一种网络服务,当你在你电脑上完成一个通用的功能的时候,如果你想让别人一起使用的话(随着网络发展,知识应该共享)可以发不成为Web Service服务,举个我们身边的例子来说,每天天气预报都实时更新假如你的系统中也需要显示每天天气变化情况,你打算怎么做呢?难道要很傻的自己开发接口和实现吗,那样就太傻了,有专门提供Web服务的接口,它们已经发布为了Web Service ,我们只需要查一查它的WSDL服务描述语言既可以知道都有哪些方法为我们提供了,这样岂不简单。

    作为一个开发着说的专业点就是基于XML并利用SOAP协议实现跨平台信息传递的一种技术,这个服务通过网络为我们的程序提供服务方法。类似一个远程的服务提供者,那么什么时候会用到这种技术呢?

    例如,百度、amazon,天气预报系统,淘宝网,QQ空间,facebook等把自己的系统服务以webservice服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能,这样扩展了自己系统的市场占有率,往大的概念上吹,就是所谓的SOA应用。

    实现原理

    先看一下这张图:

    Web服务的体系结构是基于Web服务提供者、Web服务请求者、Web服务中介者三个角色和发布、发现、绑定三个动作构建的。简单地说,Web服务提供者就是Web服务的拥有者,它耐心等待为其他服务和用户提供自己已有的功能;Web服务请求者就是Web服务功能的使用者,它利用SOAP消息向Web服务提供者发送请求以获得服务;Web服务中介者的作用是把一个Web服务请求者与合适的Web服务提供者联系在一起,它充当管理者的角色,一般是UDDI。

    这三个角色是根据逻辑关系划分的,在实际应用中,角色之间很可能有交叉:一个Web服务既可以是Web服务提供者,也可以是Web服务请求者,或者二者兼而有之。显示了Web服务角色之间的关系:其中,“发布”是为了让用户或其他服务炸ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq1wMSzuPZXZWK3/s7xtcS05tTaus3P4LnY0MXPojuhsLLp1dKjqLeiz9ajqaGxysfOqsHL1dK1vbrPysq1xFdlYrf+zvE7obCw87aoobHU8srH1NrM4bmp1d/T68frx/PV39auvOS9qMGixLPW1sGqz7WhozwvcD4KPHA+1eLKx9K7uPa199PDuf2zzKO6PC9wPgo8cD4xLreisryjuiBXZWK3/s7xzOG5qdXfyei8xsq1z9ZXZWK3/s7xo6yyor2rtffK1NX9yLe687XEV2Vit/7O8c2ouf1XZWK3/s7x1tC96dXft6KyvKOssqLU2lVEREnXorLh1tDQxNeisuGjuzxicj4KPGJyPgoyLreiz9ajuiBXZWK3/s7xx+vH89Xfz/JXZWK3/s7x1tC96dXfx+vH88zYtqi1xLf+zvGjrNbQvenV37j5vt3H68fzsunRr1VEREnXorLh1tDQxKOszqrH68fz1d/RsNXSwvrX48frx/O1xLf+zvGjuyA8YnI+Cjxicj4KMy63os/Wo7ogV2Vit/7O8dbQvenV38/yV2Vit/7O8cfrx/PV37e1u9jC+tfjzPW8/rXEV2Vit/7O8cPoyvbQxc+io6y4w8PoyvbQxc+i08NXU0RM0LSzyaOsuPfW1tans9ZXZWK3/s7xtcS7+sb3trzE3NTEtsGjuzxicj4KPGJyPgo0LrDztqijuiDA+9PDtNNXZWK3/s7x1tC96dXft7W72LXEw+jK9tDFz6LJ+rPJz+DTprXEU09BUM/7z6KjrLeiy824+FdlYrf+zvHM4bmp1d+jrNLUyrXP1ldlYrf+zvG1xLX308Ojuzxicj4KPGJyPgo1LrDztqijuiBXZWK3/s7xzOG5qdXfsLRTT0FQz/vPota00NDP4NOmtcRXZWK3/s7xo6yyor2rt/7O8b3hufu3tbvYuPhXZWK3/s7xx+vH89XfoaM8L3A+Cgo8cD48c3Ryb25nPlNPQVDQrdLpKHNpbXBsZSBvYmplY3QgYWNjZXNzIHByb3RvY29sKTwvc3Ryb25nPjwvcD4KPHA+PHN0cm9uZz48YnI+Cjwvc3Ryb25nPjwvcD4KPHA+U09BUNCt0uk9IEhUVFDQrdLpJiM0MzsgWE1Myv2+3SYjMjY2ODQ7yr08L3A+Cgo8cD5TT0FQ0K3S6crHu/nT2khUVFDQrdLptvjQzrPJo6zSsr/J0tTA7b3izqrKx0hUVFDQrdLptcTSu7j2zNjA/aOs0rvW1sCp1bm1xMfpv/ajrMTD0ru49r27zajP38K3wLTLtaOsyOe5+72r0ru49r27zajP38TDwLTXqMPFvvzTw7vy1d/Wu9TK0O3Uy8rkxLPQqbnmtqi6w7XEtqvO96Os1eLQqczYyuK1xLnmtqihosz1zsa+zc/gtbHT2lNPQVDWu9PD09q0q8rkvPK1pbXEttTP86GittTP87e9t6ihore1u9gmIzIwNTQwO7XItcihozwvcD4KPHA+SFRUUNCt0um6zVhNTMrHsbu547e6yrnTw7XEzajTw7y8yvWjrLj31tax4LPM0+/R1LbUSFRUUNCt0um6zVhNTNXiwb3W1ry8yvW2vMzhuanBy7rcusO1xNans9ajrFdlYlNlcnZpY2W/zbuntsvT67f+zvHG97bLyrnTw8qyw7Sx4LPM0+/R1La8v8nS1M3qs8lTT0FQtcS5psTco6zL+dLUo6xXZWJTZXJ2aWNlutzI3dLXyrXP1r/nseCzzNPv0dSjrL/nseCzzNPv0dTX1Mi70rK+zb/nwcuy2df3z7XNs8a9zKg8L3A+Cgo8cD48c3Ryb25nPldlYiBTZXJ2aWNlv/K83Dwvc3Ryb25nPjwvcD4KPHA+PHN0cm9uZz48YnI+Cjwvc3Ryb25nPjwvcD4KPHA+QVhJU7rNQ1hGysfO0sPHvq2zo8q508O1xMG9uPa/8rzco6zV4sG9uPay+sa3trzKx0FwYWNoZbf1u6/G98/Cw+a1xFdlYiBTZXJ2aWNlv6rUtL+qt6K5pL7foaPL/MPHuPfT0MD7sde4+b7d0OjSqrrPwO3RodTxyrnTw8TE0ru49r/yvNyjrNb30qrH+LHwyOfPwqO6PGJyPgo8L3A+CjxwPjEuQ1hG1qez1iBXUy1BZGRyZXNzaW5no6xXUy1Qb2xpY3mjrCBXUy1STaOsIFdTLVNlY3VyaXR5us1XUy1JIEJhc2ljIFByb2ZpbGWho0F4aXMysrvWp7PWV1MtUG9saWN5oaM8YnI+CjIuQ1hGv8nS1LrcusPWp7PWU3ByaW5noaNBeGlzMrK7xNwgPGJyPgozLkFYSVMy1qez1rj8ueO3urXEyv2+3bKittTI51hNTEJlYW5zo6xKaUJYo6xKYXhNZbrNSmF4QlJJus3L/NfUtqjS5bXEyv2+3bDztqhBREKho9ei0uJKYXhNRbrNSmF4QlJJtry7ucrHytTR6dDUtcSho0NYRta71qez1kpBWEK6zUFlZ2lzoaPU2kNYRjIuMSA8YnI+CjQuQXhpczLWp7PWtuDT79HULbP9wctKYXZhLMv7u7nWp7PWQy9DJiM0MzsmIzQzO7Dmsb6hoyA8L3A+Cgo8cD48c3Ryb25nPsrAvefE47rDtcTKtcD9PC9zdHJvbmc+PC9wPgo8cD64w8q1wP3KudPDwctDWEa/8rzco6zQ6NKqyOfPwmphcrD8v7zI67W9amJvc3PA7zwvcD4KPHA+PGltZyBzcmM9"http://www.it165.net/uploadfile/files/2014/0310/20140310193618677.gif" alt="">#p#分页标题#e#

    服务器端接口

    package mgr.jc.webservice.fortest;import javax.jws.WebService;import javax.jws.soap.SOAPBinding;@WebService(name = "IUserBean", targetNamespace = "http://fortest.webservice.jc.mgr/")@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)public interface IUserBean {public String sayHello(String name);}

    服务器实现

    import mgr.jc.webservice.fortest.IUserBean;@Stateless@Remote( IUserBean.class)@TransactionManagement(TransactionManagementType.CONTAINER)@TransactionAttribute(TransactionAttributeType.REQUIRED)@WebService(endpointInterface = "mgr.jc.webservice.fortest.IUserBean",serviceName = "UserService") public class UserBeanImpl  implements IUserBean {@Override@WebMethodpublic String sayHello(String name) {System.out.print("-------------UserManagerBean.sayHello-------begin------");System.out.print("-------------UserManagerBean.sayHello-------end------");return name+"说,世界你好";}}


    客户端

    package mgr.jc.service.client.fortest.impl;import javax.ejb.Remote;import javax.ejb.Stateless;import javax.ejb.TransactionAttribute;import javax.ejb.TransactionAttributeType;import javax.ejb.TransactionManagement;import javax.ejb.TransactionManagementType;import mgr.jc.service.client.fortest.IClientUserBean;import mgr.jc.webservice.fortest.IUserBean;import common.tool.mgr.BaseMgr;@Stateless@Remote(IClientUserBean.class)@TransactionManagement(TransactionManagementType.CONTAINER)@TransactionAttribute(TransactionAttributeType.REQUIRED)public class ClientUserBeanImpl extends BaseMgr  {    private IUserBean service;public static void main(String[] args){ClientUserBeanImpl clientUserBeanImpl=new ClientUserBeanImpl();clientUserBeanImpl.sayHello();}public ClientUserBeanImpl(){System.out.println("-------------构造函数里面创建服务--------begin-----");service=(IUserBean)getWebServiceBean(this.getClass(), "user-userservice");System.out.println("--------------构造函数里面创建服务--------end-----");}public void sayHello() {System.out.println("-------------UserManagerBean.sayHello--------begin-----");System.out.println(service.sayHello("李龙生"));System.out.println("-------------UserManagerBean.sayHello------end-------");}}

    客户端配置文件

    <?xml version="1.0" encoding="UTF-8"?><beans>    <webservice-beans> <webservice-bean id="user-userservice">   <property name="name" value="mgr.jc.webservice.fortest.IUserBean"/>      <property name="url" value="http://localhost:8080/gxpt_mgr_jc_service_fortest_impl-0.0.1-SNAPSHOT/UserBeanImpl"/>        </webservice-bean>   </webservice-beans>   </beans>

    运行之后的效果图如下:

    #p#分页标题#e#

    在上面例子中主要用到了注解将java方法声明为Web Service方法,并遵循SOAP协议传输数据,在客户端在构造函数里通过反射和配置文件(一些WSDL文件信息都写在了配置文件里面)将服务对象注入进来,进而实现了Web Service的调用。

    小结


    在新—代的分布式应用系统中,必须解决不同组件模型、开发工具、程序语言和应用系统之间在Intemet环境中互相沟通和合作的问题,因此软件界势必要一种标准的沟通机制,而这种机制正式现在的SOAP。

    Web Service 与云计算也有着密切联系,可以说云计算为Web Service服务创建了一个运行平台,我们可以把一些服务发布到云上面,可以轻松的实现任意组合,同时Web Service也为云技术的实现提供了可能,Webservice也会越来越重要。

  • 相关推荐:

  • Webservice(一)原理和项目开
  • 在项目开发中使用Git版本
  • svngit协同管理
  • spring+springmvc+hibernate整合
  • 网站内容禁止违规转载,转载授权联系中国云计算网