(Maven项目)Springboot+Mybatis+Logback+Dubbo+Zookeeper

准备工作:
1、jdk安装
2、eclipse安装
3、maven安装
4、mysql安装(创建测试数据库:test)
5、postman安装(用于请求测试)
6、zookeeper安装配置(验证启动成功后继续下一步)
7、dubbo-admin安装配置(验证启动成功后继续下一步)
8、整合框架如下

一、新建maven工程
在这里插入图片描述
在这里插入图片描述
二、配置POM文件,集成springboot+mybatis+dubbo
POM配置如下.

<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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.heheda</groupId>
   <artifactId>springboot-mybatis-dubbo</artifactId>
   <version>0.0.1-SNAPSHOT</version>
  
   <parent>
     <!-- 依赖管理,引入以后在声明其它dependency的时候就不需要version -->
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.8.RELEASE</version>
		<relativePath />
 	</parent>
	
	<properties>
		<!-- 声明项目配置依赖编码格式为 utf-8 -->
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<!-- java jdk 版本声明 可变更 根据自己配置去匹配 -->
		<java.version>1.7</java.version>
		<!-- maven compiler version-->
		<maven.compiler.source>1.7</maven.compiler.source>
		<maven.compiler.target>1.7</maven.compiler.target>
	</properties>

	<dependencies>
		<!-- 对web开发的支持,包含了spring webmvc和tomcat等web开发的特性 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- spring boot核心,包括自动配置支持,日志和YAML -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<!-- test -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
		</dependency>
		<!-- DevTools in Spring Boot 项目热部署 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>
		<!-- mysql DB-->
		<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
         <!--整合mybatis所需的jar -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>
        <!-- 阿里json处理 -->
         <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.9</version>
        </dependency>
        <!--  SLF4J -->
        <dependency> 
        	<groupId>org.codehaus.janino</groupId> 
	        <artifactId>janino</artifactId> 
	        <version>3.0.7</version> 
        </dependency>
		<!-- dubbo  -->
		<dependency> 
			<groupId>com.alibaba.boot</groupId> 
			<artifactId>dubbo-spring-boot-starter</artifactId> 
			<version>0.1.0</version> 
			<exclusions>
		         <exclusion>
		         	<groupId>com.alibaba</groupId>
		               <artifactId>dubbo</artifactId>
		         </exclusion>
    		</exclusions>
		</dependency> 
		<dependency>
		    <groupId>com.alibaba</groupId>
		    <artifactId>dubbo</artifactId>
		    <version>2.6.2</version>
		</dependency>
		<!--引入zookeeper的客户端工具 consumer使用--> 
		<dependency> 
			<groupId>com.github.sgroschupf</groupId> 
			<artifactId>zkclient</artifactId> 
			<version>0.1</version> 
		</dependency>
		<!-- rest -->
		<dependency>
			<groupId>javax.ws.rs</groupId>
			<artifactId>javax.ws.rs-api</artifactId>
			<version>2.0.1</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<!-- 如果我们要直接Main启动spring,那么以下plugin必须要添加,否则是无法启动的。-->
			<!-- 如果使用maven的spring-boot:run的话就不需要此配置 -->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project

三、springboot,mybatis,dubbo相关配置application.yml
配置如下.

java.runtime.version: 1.7
logging.home: logs
logging.level.my.comp: DEBUG
logging.level.my.boot: DEBUG
logging.level.com.alibaba: INFO
logging.level.org.springframework: INFO
logging.level.org.springframework.jdbc: DEBUG
logging.level.org.mybatis.spring: DEBUG
logging.level.org.apache.tomcat.jdbc: INFO
server: 
  port: 8090
  tomcat:
    max-threads: 200
    basedir: .
    accesslog:
      enabled: true
      directory: ${logging.home}
      pattern: combined
spring.datasource:
  url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
  username: root
  password: 123456
  driver-class-name: com.mysql.jdbc.Driver
  initial-size: 10
  max-active: 20
  max-idle: 20
  test-while-idle: true
  validation-query: select 1
mybatis:
  config-location: classpath:mybatis.xml
  mapper-locations: classpath*:/mappers/**/**/*.xml
dubbo: 
  application:
    name: springboot-dubbo-server1
  protocol: 
    port: 3333
  registry:
    address: zookeeper://127.0.0.1:2181
    timeout: 20000
    check: false
  consumer:
    timeout: 30000
    check: false
    validation: true
  provider:
    retries: 0
  scan: 
    base-packages: com.heheda

四、配置mybatis
mybatis.xml配置如下.

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<settings>
        <setting name="logImpl" value="LOG4J"/>
	</settings>
	<typeAliases>
		<package name="com.heheda.model"/>
	</typeAliases>
</configuration>

四、配置Logback日志管理
logback.xml配置如下.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<include resource="org/springframework/boot/logging/logback/defaults.xml" />
	<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
	<springProperty scope="context" name="LOG_HOME" source="logging.home"></springProperty>
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">	
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>${LOG_HOME}/springboot-dubbo-server.%d{yyyy-MM-dd}.log</FileNamePattern>
			<maxHistory>365</maxHistory>
		</rollingPolicy>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%15.15t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern>   
        </encoder>
	</appender>
	
	<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">	
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>${LOG_HOME}/springboot-dubbo-error.%d{yyyy-MM-dd}.log</FileNamePattern>
			<maxHistory>365</maxHistory>
		</rollingPolicy>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%15.15t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern>   
        </encoder>      
        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">      
	      <evaluator class="ch.qos.logback.classic.boolex.JaninoEventEvaluator"> 
	        <expression>java.lang.Throwable.class.isInstance(throwable)</expression>
	      </evaluator>
	      <OnMismatch>DENY</OnMismatch>
	      <OnMatch>ACCEPT</OnMatch>
	    </filter>
	</appender> 
	
	<root level="INFO">
		<appender-ref ref="CONSOLE" />
		<appender-ref ref="FILE" />	
		<appender-ref ref="ERROR" />	
	</root>
</configuration>

五、启动类Application编写
Application启动类代码如下.

package com.heheda.controller;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
/** 
 * 注解@SpringBootApplication指定项目为springboot,由此类当作程序入口,自动装配 web 依赖的环境; 
 * 
 */  
@EnableDubbo
@SpringBootApplication(scanBasePackages = {"com.heheda"})  
@MapperScan("com.heheda.mapper")
@EnableTransactionManagement//开启事务管理
public class Application {  
    // 在main方法中启动一个应用,即:这个应用的入口  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
        SpringApplication.run(Application.class, args);  
    }  
} 

六、编写生产者1接口和实现类
HelloDubboService接口代码如下:.

package com.heheda.service;

public interface HelloDubboService {
	public String helloDubbo();
}

HelloDubboServiceImpl实现类代码如下:.

package com.heheda.service.impl;

import org.springframework.stereotype.Component;

import com.alibaba.dubbo.config.annotation.Service;
import com.heheda.service.HelloDubboService;

@Service
public class HelloDubboServiceImpl implements HelloDubboService {
    @Override
    public String helloDubbo() {
        return "hello dubbo1";
    }
}

七、编写生产者2接口和实现类
HelloDubboService2 接口代码如下:.

package com.heheda.service;

public interface HelloDubboService2 {
	public String helloDubbo();
}

HelloDubboServiceImpl实现类代码如下:.

package com.heheda.service.impl;

import org.springframework.stereotype.Component;

import com.alibaba.dubbo.config.annotation.Service;
import com.heheda.service.HelloDubboService;
import com.heheda.service.HelloDubboService2;

@Service
public class HelloDubboServiceImpl2 implements HelloDubboService2 {
    @Override
    public String helloDubbo() {
        return "hello dubbo2";
    }
}

八、编写消费者类并对外提供restful接口
HelloDubboController代码如下.

package com.heheda.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.dubbo.config.annotation.Reference;
import com.heheda.service.HelloDubboService;

@RestController
public class HelloDubboController {
    @Reference
    private HelloDubboService helloDubboService;

    @RequestMapping("helloDubbo")
    public String helloDubbo() {
        return helloDubboService.helloDubbo();
    }
}

九、验证
1、启动工程,通过dubbo-admin观察
在这里插入图片描述在这里插入图片描述
2、请求测试,返回成功
在这里插入图片描述
如有问题或者改进的地方欢迎交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值