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