我一共搭建了3个环境。
整体入口:
https://blog.csdn.net/lwb314/article/details/108222433
我的开发工具是IDEA,使用的是快速构建项目的Spring Initializr,前两个项目也是这么构建的,为什么要在这里单独提一下,因为这里必须要用阿里云快速构建,而不是用默认的spring快速构建,阿里云的构建地址是http://start.aliyun.com
具体看图
这页没啥说了,取个工程名,选下jdk版本
这一步一共有3个要注意的点,我已经圈出来了
第一个dubbo依赖,这个只有在阿里云里可以搜到,在spring-starter里搜不到,所以第一张图必须选阿里云;
第2个是版本使用spring boot 2.2这个大版;
第3个是我已经选好的2个依赖一个是spring boot web ,一个是nacos依赖,最后再把dubbo这个依赖选上就完成了。
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.lwbgroupId>
<artifactId>spring-cloud-alibaba-dubbo-providerartifactId>
<version>0.0.1-SNAPSHOTversion>
<name>spring-cloud-alibaba-dubbo-providername>
<description>Demo project for Spring Bootdescription>
<properties>
<java.version>1.8java.version>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
<spring-boot.version>2.2.7.RELEASEspring-boot.version>
<spring-cloud-alibaba.version>2.2.1.RELEASEspring-cloud-alibaba.version>
properties>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-dubboartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
<exclusions>
<exclusion>
<groupId>org.junit.vintagegroupId>
<artifactId>junit-vintage-engineartifactId>
exclusion>
exclusions>
dependency>
dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-alibaba-dependenciesartifactId>
<version>${spring-cloud-alibaba.version}version>
<type>pomtype>
<scope>importscope>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-dependenciesartifactId>
<version>${spring-boot.version}version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<version>3.8.1version>
<configuration>
<source>1.8source>
<target>1.8target>
<encoding>UTF-8encoding>
configuration>
plugin>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<version>2.2.7.RELEASEversion>
<configuration>
<mainClass>com.lwb.springcloudalibabadubboprovider.SpringCloudAlibabaDubboProviderApplication
mainClass>
configuration>
<executions>
<execution>
<id>repackageid>
<goals>
<goal>repackagegoal>
goals>
execution>
executions>
plugin>
plugins>
build>
project>
application.properties
server.port=8003
spring.application.name=alibabadubboprovider
dubbo.application.id=alibabadubboprovider
dubbo.application.name=alibabadubboprovider
# 禁用QOS同一台机器可能会有端口冲突现象
dubbo.application.qos-enable=false
dubbo.application.qos-accept-foreign-ip=false
# 配置注册中心
dubbo.registry.address=nacos://10.10.171.249:8848
spring.cloud.nacos.discovery.server-addr=10.10.171.249:8848
dubbo.protocol.name=dubbo
dubbo.protocol.port=20883
dubbo.protocol.id=dubbo
启动类
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class SpringCloudAlibabaDubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudAlibabaDubboProviderApplication.class, args);
}
}
服务实现类
@Service(version = "1.0.2",group = "lwb")
public class DubboDemoServiceImpl implements DubboDemoService {
@Override
public String helloDubbo() {
return "helloDubboAlibaba";
}
}
服务接口
public interface DubboDemoService {
public String helloDubbo();
}
package com.lwb.springcloudalibabadubboconsumer;
import com.lwb.DubboDemoService;
import org.apache.dubbo.config.annotation.Reference;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.annotation.PostConstruct;
@EnableDubbo
@SpringBootApplication
public class SpringCloudAlibabaDubboConsumerApplication {
@Reference(version = "1.0.2", check = false, group = "lwb")
private DubboDemoService demoService;
@PostConstruct
public void init() {
String a = demoService.helloDubbo();
System.out.println(a);
}
public static void main(String[] args) {
SpringApplication.run(SpringCloudAlibabaDubboConsumerApplication.class, args);
}
}
application.properties
server.port=8004
# 禁用QOS同一台机器可能会有端口冲突现象
spring.application.name=dubbo-starter-consumer
dubbo.application.name=dubbo-starter-consumer
dubbo.application.id=dubbo-starter-consumer
dubbo.application.qos-enable=false
dubbo.application.qos-accept-foreign-ip=false
# 配置注册中心
dubbo.registry.address = nacos://10.10.171.249:8848
spring.cloud.nacos.discovery.server-addr=10.10.171.249:8848
dubbo.registry.register=false
#dubbo.protocol.id=dubbo
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'targeterBeanPostProcessor' defined in class path resource [com/alibaba/cloud/dubbo/autoconfigure/DubboOpenFeignAutoConfiguration.class]: Unsatisfied dependency expressed through method 'targeterBeanPostProcessor' parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.alibaba.cloud.dubbo.metadata.repository.DubboServiceMetadataRepository': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.application.name' in value "${spring.application.name}"
com.alibaba.nacos.api.exception.NacosException: failed to req API:/api//nacos/v1/ns/service/list after all servers([localhost:8848]) tried: java.net.ConnectException: Connection refused: connect
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springCloudAlibabaDubboConsumerApplication': Injection of @Reference dependencies is failed; nested exception is java.lang.IllegalStateException: Invalid name="org.apache.dubbo.config.ApplicationConfig#0" contains illegal character, only digit, letter, '-', '_' or '.' is legal.
最近我准备从0搭建一套基于Spring Cloud Alibaba的微服务框架