• dubbo+springMVC+Spring+Mybatis


    1.新建Maven Project

    1.1


     

    1.2


     

    2新建Maven Module ——提供者和消费者都需要引用的共同代码块(如entity和service接口)

    2.1


    2.2


    2.3

    2.4

    3.修改common工程的JDK版本

    3.1

    3.2

    3.3

    4.新建entity和service(可以先建数据库,再使用Mybatis的逆向工程直接生成entity)

    4.1 entity包和service包

    4.2 entity类

    4.3 service类

    5.新建Maven Module ——服务提供者(Provider)

    5.1

    5.2

    5.3

    6.给Provider工程添加java/main/resources

    6.1

    6.2

    6.3

    6.4

    7.修改Provider工程的JDK版本

    8.给Provider引入需要依赖的jar包和common

    <dependencies>

    <dependency>

    <groupId>cn.edu.zucc</groupId>

    <artifactId>common</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    </dependency>

    <dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-api</artifactId>

    <version>2.0.2</version>

    </dependency>

    <dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-core</artifactId>

    <version>2.0.2</version>

    </dependency>

    <!-- spring -->

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-web</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-tx</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-aspects</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-webmvc</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-jdbc</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-webmvc-portlet</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-context-support</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-instrument-tomcat</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-jms</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-orm</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-oxm</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-test</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-core</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-beans</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <!-- mysql -->

    <dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>5.1.37</version>

    </dependency>

    <!-- mybatis -->

    <dependency>

    <groupId>org.mybatis</groupId>

    <artifactId>mybatis</artifactId>

    <version>3.3.0</version>

    </dependency>

    <!-- mybatis spring -->

    <dependency>

    <groupId>org.mybatis</groupId>

    <artifactId>mybatis-spring</artifactId>

    <version>1.2.3</version>

    </dependency>

    <!-- c3p0 -->

    <dependency>

    <groupId>c3p0</groupId>

    <artifactId>c3p0</artifactId>

    <version>0.9.1.2</version>

    </dependency>

    <dependency>

    <groupId>com.fasterxml.jackson.core</groupId>

    <artifactId>jackson-databind</artifactId>

    <version>2.6.3</version>

    </dependency>

    <!-- dubbo -->

    <dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>dubbo</artifactId>

    <version>2.5.3</version>

    </dependency>

    <!-- zookeeper -->

    <dependency>

    <groupId>com.101tec</groupId>

    <artifactId>zkclient</artifactId>

    <version>0.5</version>

    </dependency>

    </dependencies>

    9.添加配置文件

    9.1(新建META-INF/spring文件夹)dubbo会读取该文件夹下的配置文件

    9.2  log4j.properties

    ### u8BBEu7F6E### info error debug

    log4j.rootLogger = debug,stdout,D,E

    ### u8F93u51FAu4FE1u606Fu5230u63A7u5236u62AC ###

    log4j.appender.stdout = org.apache.log4j.ConsoleAppender

    log4j.appender.stdout.Target = System.out

    log4j.appender.stdout.layout = org.apache.log4j.PatternLayout

    log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

    9.3 applicationMybitis.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <beans xmlns="http://www.springframework.org/schema/beans"

        xmlns:mvc="http://www.springframework.org/schema/mvc"

        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:context="http://www.springframework.org/schema/context"

        xsi:schemaLocation="

            http://www.springframework.org/schema/beans

            http://www.springframework.org/schema/beans/spring-beans.xsd

            http://www.springframework.org/schema/mvc

            http://www.springframework.org/schema/mvc/spring-mvc.xsd

            http://www.springframework.org/schema/context

            http://www.springframework.org/schema/context/spring-context.xsd

    http://www.springframework.org/schema/tx

         http://www.springframework.org/schema/tx/spring-tx.xsd

         http://www.springframework.org/schema/aop

         http://www.springframework.org/schema/aop/spring-aop.xsd">

            

            

            <!-- 加载配置文件 -->

            <context:property-placeholder location="classpath:META-INF/spring/db.properties"/>

            

            <!-- 数据源 ,使用dbcp-->

            <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

             <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="maxActive" value="10" />-->

    <!-- 最大等待连接中的数量 -->

    <!--<property name="maxIdle" value="5" />-->

            </bean>

            

            <!-- sqlSessionFactory -->

            <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

             <!-- 加載mybatis的配置文件 -->

    <!--        <property name="configLocation" value="classpath:conf.xml" />-->

    <property name="typeAliasesPackage" value="cn.edu.zucc.entity"></property>

             <!-- 数据源 -->

             <property name="dataSource" ref="dataSource"/>

            </bean>

            

            <!-- mapper批量扫描,从mapper包中扫描出mapper接口,自动创建代理对象并且在spring容器中注册 -->

            <!-- 自动扫描出来的mapper的bean的id为mapper类名(首字母小写) -->

            <!-- 扫描多个包用,分开 -->

            <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

             <property name="basePackage" value="cn.edu.zucc.dao" />

             <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />

            </bean>

            

            <!-- 事物管理器

    mybatis操作数据库事物控制,spring使用Jdbc的事物控制类

     -->

    <bean id="transactionManager"

    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

    <!-- 数据源

     dataSource在applicationContext-dao.xml中配置了

      -->

    <property name="dataSource" ref="dataSource"></property>

    </bean>

    <!-- 通知 -->

    <tx:advice id="txAdvice" transaction-manager="transactionManager">

    <tx:attributes>

    <!-- 传播行为 -->

    <tx:method name="save*" propagation="REQUIRED" />

    <tx:method name="add*" propagation="REQUIRED" />

    <tx:method name="insert*" propagation="REQUIRED" />

    <tx:method name="update*" propagation="REQUIRED" />

    <tx:method name="delete*" propagation="REQUIRED" />

    <tx:method name="find*" propagation="SUPPORTS" read-only="true" />

    <tx:method name="*" propagation="SUPPORTS" read-only="true" />

    </tx:attributes>

    </tx:advice>

    <!-- aop -->

    <aop:config>

    <aop:advisor advice-ref="txAdvice"

    pointcut="execution(* cn.edu.zucc.service.impl..*.*(..))" />

    </aop:config>

    </beans>

    9.4 dubbo.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:dubbo="http://code.alibabatech.com/schema/dubbo"

    xsi:schemaLocation="http://www.springframework.org/schema/beans       

        http://www.springframework.org/schema/beans/spring-beans.xsd       

        http://code.alibabatech.com/schema/dubbo        

        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 提供方应用信息,用于计算依赖关系 -->

    <dubbo:application name="dubbo_provider" />

    <!-- 使用zookeeper注册中心暴露服务地址 -->

    <dubbo:registry  address="115.28.93.69:2182" protocol="zookeeper"/>

    <!-- 用dubbo协议在20880端口暴露服务 -->

    <dubbo:protocol  name="dubbo" port="20880" />

    <!-- 声明需要暴露的服务接口 -->

    <dubbo:service interface="cn.edu.zucc.service.UserService" ref="userService" />

    <bean id="userService" class="cn.edu.zucc.service.impl.UserServiceImpl"></bean>

    </beans>

    9.5 db.properties

    jdbc.driver=com.mysql.jdbc.Driver

    jdbc.url=jdbc:mysql:///dubbo_test

    jdbc.username=root

    jdbc.password=123456

    10.新建service、dao、util包

    10.1

    10.2 StartUp.java 启动Provider

    10.3 userService

    10.4 dao层可以使用Mybatis自动生成,也可以自己建

    11 启动dubbo (要先部署好zookeeper)

    11.1使用jvm运行

    11.2启动成功

    12 新建Consumer(web项目)

    12.1



    12.2

    12.3

    13 修改Consumer项目的JDK版本

    14 引入jar包和common

    <dependencies>

    <dependency>

    <groupId>cn.edu.zucc</groupId>

    <artifactId>common</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    </dependency>

    <dependency>

    <groupId>junit</groupId>

    <artifactId>junit</artifactId>

    <version>4.12</version>

    <scope>test</scope>

    </dependency>

    <dependency>

    <groupId>cn.edu.zucc</groupId>

    <artifactId>commons</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    </dependency>

    <!-- 日志 -->

    <dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>dubbo</artifactId>

    <version>2.5.3</version>

    <exclusions>

    <exclusion>

    <groupId>org.springframework</groupId>

    <artifactId>spring</artifactId>

    </exclusion>

    </exclusions>

    </dependency>

    <dependency>

    <groupId>com.101tec</groupId>

    <artifactId>zkclient</artifactId>

    <version>0.5</version>

    </dependency>

    <dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-api</artifactId>

    <version>2.0.2</version>

    </dependency>

    <dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-core</artifactId>

    <version>2.0.2</version>

    </dependency>

    <dependency>

    <groupId>org.slf4j</groupId>

    <artifactId>slf4j-api</artifactId>

    <version>1.7.5</version>

    </dependency>

    <dependency>

    <groupId>org.slf4j</groupId>

    <artifactId>slf4j-log4j12</artifactId>

    <version>1.7.5</version>

    </dependency>

    <!-- j2ee -->

    <dependency>

    <groupId>org.apache.openejb</groupId>

    <artifactId>javaee-api</artifactId>

    <version>5.0-1</version>

    <scope>provided</scope>

    </dependency>

    <!-- spring -->

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-web</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-tx</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-aspects</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-webmvc</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-jdbc</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-webmvc-portlet</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-context-support</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-instrument-tomcat</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-jms</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-orm</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-oxm</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-test</artifactId>

    <version>4.2.2.RELEASE</version>

    </dependency>

    <!-- mysql -->

    <dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>5.1.37</version>

    </dependency>

    <!-- mybatis -->

    <dependency>

    <groupId>org.mybatis</groupId>

    <artifactId>mybatis</artifactId>

    <version>3.3.0</version>

    </dependency>

    <!-- mybatis spring -->

    <dependency>

    <groupId>org.mybatis</groupId>

    <artifactId>mybatis-spring</artifactId>

    <version>1.2.3</version>

    </dependency>

    <!-- c3p0 -->

    <dependency>

    <groupId>c3p0</groupId>

    <artifactId>c3p0</artifactId>

    <version>0.9.1.2</version>

    </dependency>

    <dependency>

    <groupId>com.fasterxml.jackson.core</groupId>

    <artifactId>jackson-databind</artifactId>

    <version>2.6.3</version>

    </dependency>

    <!-- 文件上传下载 -->

    <dependency>

    <groupId>commons-fileupload</groupId>

    <artifactId>commons-fileupload</artifactId>

    <version>1.3.1</version>

    </dependency>

    <!-- jstl -->

    <dependency>

    <groupId>jstl</groupId>

    <artifactId>jstl</artifactId>

    <version>1.2</version>

    </dependency>

    <dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>jstl</artifactId>

    <version>1.2</version>

    <scope>provided</scope>

    </dependency>

    </dependencies>

    15修改web.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <web-app 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">

    <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>classpath*:applicationContext.xml;<!--  classpath:applicationMybatis.xml--></param-value>

    </context-param>

    <listener>

    <description>spring监听器</description>

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

    </listener>

    <servlet>

    <servlet-name>springmvc</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <init-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>WEB-INF/classes/springmvc.xml</param-value>

    </init-param>

    <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>

    <servlet-name>springmvc</servlet-name>

    <url-pattern>*.action</url-pattern>

    </servlet-mapping>

    <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>

    <welcome-file-list>

    <welcome-file>login.jsp</welcome-file>

    </welcome-file-list>

    </web-app>

    16添加配置文件

    16.1

    16.2 springMVC.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <beans xmlns="http://www.springframework.org/schema/beans"

        xmlns:mvc="http://www.springframework.org/schema/mvc"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xmlns:context="http://www.springframework.org/schema/context"

        xsi:schemaLocation="

            http://www.springframework.org/schema/beans

            http://www.springframework.org/schema/beans/spring-beans.xsd

            http://www.springframework.org/schema/mvc

            http://www.springframework.org/schema/mvc/spring-mvc.xsd

            http://www.springframework.org/schema/context

            http://www.springframework.org/schema/context/spring-context.xsd">

    <context:annotation-config/>

        <context:component-scan base-package="cn.edu.zucc.controller" />

       

        

    <bean id="mappingJacksonHttpMessageConverter"

              class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">

            <property name="supportedMediaTypes">

                <list>

                    <value>application/json;charset=UTF-8</value>

                </list>

            </property>

        </bean>

        <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

            <property name="messageConverters">

                <list>

                    <ref bean="mappingJacksonHttpMessageConverter"/>

                </list>

            </property>

        </bean>

        

        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

    <!-- 设置上传文件的最大尺寸为5MB -->

    <property name="maxUploadSize">

    <value>5242880</value>

    </property>

    </bean>

    </beans>

    16.3 dubbo_consumer.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:dubbo="http://code.alibabatech.com/schema/dubbo"

        xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->

    <dubbo:application name="dubbo_consumer" />

    <!-- 使用zookeeper注册中心暴露服务地址 -->

    <dubbo:registry  address="115.28.93.69:2182" protocol="zookeeper" />

    <!-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->

    <dubbo:reference id="userService"interface="cn.edu.zucc.service.UserService" check="false" timeout="60000"/>

    </beans>

    16.4 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:context="http://www.springframework.org/schema/context"

    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

             http://www.springframework.org/schema/beans/spring-beans.xsd

             http://www.springframework.org/schema/context

             http://www.springframework.org/schema/context/spring-context.xsd

             http://www.springframework.org/schema/tx

         http://www.springframework.org/schema/tx/spring-tx.xsd

          http://www.springframework.org/schema/aop

          http://www.springframework.org/schema/aop/spring-aop.xsd">

    <context:annotation-config />

    <context:component-scan base-package="cn.edu.zucc.service" />

    <import resource="dubbo_consumer.xml"/>

    </beans>

    16.5 log4j.properties和Provider的是一样的

    17 新建Controller包和类

    17.1

    17.2 Controller

    18 启动Consumer(可以使用Tomcat)

    19 访问http://localhost:8080/Consumer/register.action

    20 消费者注册成功




  • 相关阅读:
    jquery $.ajax $.get $.post的区别
    浅析JQuery中的html(),text(),val()区别
    单词统计续
    第一阶段意见评论
    学习进度9
    第一阶段SCRUM冲刺10
    第一阶段SCRUM冲刺09
    单词统计
    第一阶段SCRUM冲刺08
    学习进度8
  • 原文地址:https://www.cnblogs.com/jtlgb/p/7698453.html
Copyright © 2020-2023  润新知