从头开始创建一个springboot多模块dubbo项目

1.新建一个父工程,直接就是一个干净的maven项目pure,不要选骨架,再在pure下面新建三个子springboot的module,最后结构如下

2.新建完api之后,可能没有packing标签要自己加,server和web一样,去看看

3.引入自己的项目web和server都依赖api

在server和web加上

<!--引入自己项目-->
        <dependency>
            <groupId>com.alimama</groupId>
            <artifactId>api</artifactId>
            <version>1.0.0</version>
        </dependency>

4.api的项目结构

5.server代码结构

6.web代码结构

7.整合mybatis

  7.1加入依赖

  <!-- spring-boot整合mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>

    7.2.编写pojo类,对应的service接口和实现类,实现类加@Service注解,对应的mapper.java文件和mapper.xml文件.mapper.java我这边加了@Mapper,不然我这边报错

   7.3.配置数据源

mybatis.mapper-locations = classpath*:com/alimama/server/mapper/*Mapper.xml
mybatis.type-aliases-package = com.alimama
#上面的不加暂时没报错

#数据库配合
spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/cls?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username = root
spring.datasource.password = admin

在url问号后面那一大串只是为了防止访问数据层有报错,什么timezome啊,编码啊之类的

 这个时候虽然能够访问数据库,但是我们是dubbo项目

8.集成dubbo

 <!-- Spring Boot Dubbo 依赖 提供者消费者都引用了-->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

  8.1.服务提供方

## Dubbo 服务提供者配置
##名字
dubbo.application.name=provider
##地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
##协议
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
##扫包
dubbo.scan.base-packages=com.alimama.server.service

   8.2.此时先看我的服务提供module的结构,也就是上面的server的module,我的配置文件都是写在application.properties里面的,其实写在application.yml一样.以application开头的spring会自动加载,假设要多环境,可以application-dev.properties,然后在application.yml里面使用这个方式来开启哪个环境

   8.3.然后我是想使用application.xml来作为xml文件的入口,在里面导入各种xml文件,比如dubbo的

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <import resource="classpath*:producer/*.xml"/>
    <import resource="classpath*:comsumer/*.xml"/>

</beans>

   8.4.服务提供xml(schema别忘)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns="http://www.springframework.org/schema/beans"
       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:service interface="com.alimama.api.service.IEmployeeService" ref="employeeService" group="com.alimama.server"
               version="1.0.0"/>

</beans>

   8.5.服务启动

package com.alimama.server;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.ClassPathXmlApplicationContext;

@SpringBootApplication
/*这边就体现以一个xml为入口的好处,直接导入一个xml,也可以在上面写上所有你需要的xml
 *@ImportResource(locations = {"classpath*:spring/application.xml","classpath*:spring/application.xml"})
*/
@ImportResource(locations = {"classpath*:spring/application.xml"})
public class ServerApplication {

    public static void main(String[] args) {
        System.out.println("*****************服务提供开始启动**************");
        SpringApplication.run(ServerApplication.class, args);
       /* ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/application.xml");
        context.start();*/
        System.out.println("*****************服务提供启动完成*************");
    }

   /* @Configuration
    @EnableDubbo(scanBasePackages = "com.alimama.server")
    @PropertySource("classpath:/application.properties")
    static public class ProviderConfiguration {

    }*/

}

8.6.服务消费

   在dubbo-context.xml里面引入其他的xml文件,同理application.properties  spring会自己加载进来

##application.properties
server.port=8084
## Dubbo 服务消费者配置
dubbo.application.name=comsumer
#地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#扫包
dubbo.scan.base-packages=com.alimama.web
#协议
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
##dubbo-context.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--<import resource="classpath*:META-INF/spring/provider/*"/>-->
    <import resource="classpath*:spring/comsumer/*.xml"/>
</beans>

    引入服务

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns="http://www.springframework.org/schema/beans"
       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:reference interface="com.alimama.api.service.IEmployeeService" id="employeeService" version="1.0.0" group="com.alimama.server" check="false" timeout="10000"/>

</beans>

springboot的启动类加载配置文件

package com.alimama.web;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;

@SpringBootApplication
@ImportResource(locations = {"classpath*:/spring/dubbo-context.xml"})
public class WebApplication {

    public static void main(String[] args) {
        SpringApplication.run(WebApplication.class, args);
    }

}

9.测试类

@Controller
@RequestMapping(value = "/employee")
public class EmployeeController {
    @Autowired
    private IEmployeeService employeeService;
    @ResponseBody
    @RequestMapping("list")
    public List<Employee> getEmployeeList(){
        return employeeService.getAllEmployee();
    }

    @RequestMapping("test")
    @ResponseBody
    public String test(){
        return "hello";
    }
}

 

dubbo服务好像是可以放在META-INF下面,就可以不用显示引用,途中会有很多问题,最好还是自己弄一遍.当然,你弄个单springboot就相当简单了.

    看了好多都是上来啪依赖全部贴出来,个人不喜欢这样,不知道哪个是干嘛,没意思.

看到别人的一篇好像不太一样,有空可以试试看:https://blog.csdn.net/u011788183/article/details/81605882

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值