目录
1.项目调用关系2.GIT配置环境3.实例JPA版1.eureka1.1 pom1.2 application.yml1.3 启动类
2.config2.1 pom2.2 application.yml2.3 启动类
3.pojo3.1pom3.2 pojo(日期2个注解)
4.goods4.1 pom4.2 bootstrap.yml4.3 启动类4.4 controller(dao,service省略)
5.shopcart5.1 pom5.2 bootstrap.yml5.3 启动类5.4 client5.5 controller
6.user6.1pom6.2 bootstrap.yml6.3 启动类6.4 client1.goods相关2.shopcart相关
6.5 controller
1.项目调用关系
shopcart直接调用goods服务 user服务直接调用goods服务,user服务调用shopcart服务,shopchart调用goods服务 shopcart当作调方,也当作被调方
<modules>
<module>eureka
</module
>
<module>pojo
</module
>
<module>config
</module
>
<module>goods
</module
>
<module>user
</module
>
<module>shopcart
</module
>
<module>zuul
</module
>
</modules
>
<parent>
<groupId>org
.springframework
.boot
</groupId
>
<artifactId>spring
-boot
-starter
-parent
</artifactId
>
<version>2.0.3.RELEASE
</version
>
<relativePath
/>
</parent
>
<dependencyManagement>
<dependencies>
<!-- springcloud的pom依赖
-->
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-dependencies
</artifactId
>
<version>Finchley
.RELEASE
</version
>
<type>pom
</type
>
<scope>import</scope
>
</dependency
>
<dependency>
<groupId>org
.projectlombok
</groupId
>
<artifactId>lombok
</artifactId
>
<version>1.16.22</version
>
<scope>provided
</scope
>
</dependency
>
</dependencies
>
</dependencyManagement
>
2.GIT配置环境
1.首先在github上面创建了一个文件夹config-repo用来存放配置文件 2.添加依赖(和本地依赖相同)
<dependencies
>
<dependency
>
<groupId
>org
.springframework
.cloud
</groupId
>
<artifactId
>spring
-cloud
-config
-server
</artifactId
>
</dependency
>
</dependencies
>
3.配置
server:
port: 9000
spring:
application:
name: config
cloud:
config:
server:
git:
uri: https
://github.com/471604821/SpringBoot
-config.git
search-paths: SpringBoot
-config
default-label: main
eureka:
client:
service-url:
defaultZone: http
://localhost
:8888/eureka
4.配置自动刷新 谁调用,谁刷新
<!-- 开启配置文件刷新
-->
<dependency>
<groupId>org
.springframework
.boot
</groupId
>
<artifactId>spring
-boot
-starter
-actuator
</artifactId
>
</dependency
>
#开启配置自动刷新
management
:
endpoints
:
web
:
exposure
:
include
: refresh
实体类里面
@RefreshScope
3.实例JPA版
1.eureka
1.1 pom
<dependency>
<groupId>org
.springframework
.boot
</groupId
>
<artifactId>spring
-boot
-starter
-web
</artifactId
>
</dependency
>
<!-- eureka服务端依赖
-->
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-starter
-netflix
-eureka
-server
</artifactId
>
</dependency
>
1.2 application.yml
server
:
port
: 8888
spring
:
application
:
name
: eureka
eureka
:
client
:
#标注当前工程是否注册到eureka
register
-with
-eureka
: false
#标注当前工程是否从eureka获取注册信息
fetch
-registry
: false
service
-url
:
defaultZone
: http
://localhost
:8888/eureka
server
:
#关闭自我保护机制
enable
-self
-preservation
: false
1.3 启动类
@SpringBootApplication
@EnableEurekaServer
2.config
2.1 pom
<dependency>
<groupId>org
.springframework
.boot
</groupId
>
<artifactId>spring
-boot
-starter
-web
</artifactId
>
</dependency
>
<!--引入config配置中心服务端的依赖
-->
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-config
-server
</artifactId
>
</dependency
>
<!-- eureka 客户端的依赖
-->
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-starter
-netflix
-eureka
-client
</artifactId
>
</dependency
>
2.2 application.yml
server:
port: 9000
spring:
application:
name: config
cloud:
config:
server:
git:
uri: https
://github.com/471604821/SpringBoot
-config.git
search-paths: SpringBoot
-config
default-label: main
eureka:
client:
service-url:
defaultZone: http
://localhost
:8888/eureka
2.3 启动类
@SpringBootApplication
@EnableDiscoveryClient
@EnableConfigServer
3.pojo
3.1pom
<dependency>
<groupId>org
.springframework
.boot
</groupId
>
<artifactId>spring
-boot
-starter
-web
</artifactId
>
</dependency
>
<dependency>
<groupId>org
.projectlombok
</groupId
>
<artifactId>lombok
</artifactId
>
</dependency
>
<!--JPA
-->
<dependency>
<groupId>org
.springframework
.boot
</groupId
>
<artifactId>spring
-boot
-starter
-data
-jpa
</artifactId
>
</dependency
>
3.2 pojo(日期2个注解)
@Data
@Entity
@Table(name
= "goods")
public class Goods {
@Id
@GeneratedValue(strategy
= GenerationType
.IDENTITY
)
private Integer id
;
private String name
;
@DateTimeFormat(pattern
= "yyyy-MM-dd")
@JsonFormat(pattern
= "yyyy-MM-dd")
private Date time
;
private Double price
;
}
@Data
public class BaseResp {
private Long code
;
private Object message
;
}
@Entity
@Table(name
="tb_sys_user")
@Data
public class TrUser {
@Id
@GeneratedValue(strategy
= GenerationType
.IDENTITY
)
private Integer userid
;
@Column(name
= "login_name")
private String loginName
;
private String password
;
}
4.goods
4.1 pom
<dependency>
<groupId>mysql
</groupId
>
<artifactId>mysql
-connector
-java
</artifactId
>
<version>5.1.47</version
>
</dependency
>
<dependency>
<groupId>com
.wo
</groupId
>
<artifactId>pojo
</artifactId
>
<version>1.0-SNAPSHOT
</version
>
</dependency
>
<!--eureka
-->
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-starter
-netflix
-eureka
-client
</artifactId
>
</dependency
>
<!-- Hystrix 依赖 熔断降级
-->
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-starter
-netflix
-hystrix
</artifactId
>
</dependency
>
<!-- 添加springcloudconfig配置中心的客户端的依赖
-->
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-starter
-config
</artifactId
>
</dependency
>
4.2 bootstrap.yml
server
:
port
: 8001
spring
:
application
:
name
: goods
cloud
:
config
:
name
: me
-config
profile
: dev
discovery
:
enabled
: true
service
-id
: config
eureka
:
client
:
service
-url
:
defaultZone
: http
://localhost
:8888/eureka
4.3 启动类
@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
4.4 controller(dao,service省略)
@RestController
public class GoodsController {
@Autowired
GoodsService goodsService
;
@HystrixCommand(fallbackMethod
= "findAllFallBack")
@RequestMapping("/findAll")
public List
<Goods> findAll(){
return goodsService
.findAll();
}
public List
<Goods> findAllFallBack(){
System
.out
.println("Goods熔断。。。。。");
return null
;
}
5.shopcart
5.1 pom
<dependency>
<groupId>mysql
</groupId
>
<artifactId>mysql
-connector
-java
</artifactId
>
<version>5.1.47</version
>
</dependency
>
<dependency>
<groupId>com
.wo
</groupId
>
<artifactId>pojo
</artifactId
>
<version>1.0-SNAPSHOT
</version
>
</dependency
>
<!--eureka
-->
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-starter
-netflix
-eureka
-client
</artifactId
>
</dependency
>
<!-- Hystrix 依赖 熔断降级
-->
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-starter
-netflix
-hystrix
</artifactId
>
</dependency
>
<!-- 添加springcloudconfig配置中心的客户端的依赖
-->
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-starter
-config
</artifactId
>
</dependency
>
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-starter
-openfeign
</artifactId
>
</dependency
>
5.2 bootstrap.yml
server
:
port
: 8002
spring
:
application
:
name
: shopcart
cloud
:
config
:
name
: me
-config
profile
: dev
discovery
:
enabled
: true
service
-id
: config
eureka
:
client
:
service
-url
:
defaultZone
: http
://localhost
:8888/eureka
feign
:
hystrix
:
enabled
: true #开启降级
5.3 启动类
@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
@EnableHystrix
@EnableFeignClients
5.4 client
@FeignClient(serviceId
= "goods",fallback
= GoodsFallBackMethod
.class)
public interface GoodsClient {
@RequestMapping("/findAll")
public List
<Goods> findAll();
}
@Component
public class GoodsFallBackMethod implements GoodsClient{
@Override
public List
<Goods> findAll() {
System
.out
.println("当前方法调用不到,降级处理");
return null
;
}
}
5.5 controller
@RestController
public class ShopCartController {
@Autowired
GoodsClient goodsClient
;
@RequestMapping("/shopcart/findAll")
public List
<Goods> findAll(){
return goodsClient
.findAll();
}
@HystrixCommand(fallbackMethod
= "findAndfindFallBack")
@RequestMapping("/findAndfind")
public String
findAndfind(){
List
<Goods> all
= goodsClient
.findAll();
int i
=1/0;
System
.out
.println(all
);
return "shopcart调goods成功!";
}
public String
findAndfindFallBack(){
return "shopcart熔断。。。。。";
}
}
6.user
6.1pom
<dependency>
<groupId>mysql
</groupId
>
<artifactId>mysql
-connector
-java
</artifactId
>
<version>5.1.47</version
>
</dependency
>
<!-- eureka 客户端的依赖
-->
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-starter
-netflix
-eureka
-client
</artifactId
>
</dependency
>
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-starter
-openfeign
</artifactId
>
</dependency
>
<!-- Hystrix 依赖 熔断降级
-->
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-starter
-netflix
-hystrix
</artifactId
>
</dependency
>
<!-- 添加springcloudconfig配置中心的客户端的依赖
-->
<dependency>
<groupId>org
.springframework
.cloud
</groupId
>
<artifactId>spring
-cloud
-starter
-config
</artifactId
>
</dependency
>
<dependency>
<groupId>com
.wo
</groupId
>
<artifactId>pojo
</artifactId
>
<version>1.0-SNAPSHOT
</version
>
</dependency
>
<!-- 开启配置文件刷新
-->
<dependency>
<groupId>org
.springframework
.boot
</groupId
>
<artifactId>spring
-boot
-starter
-actuator
</artifactId
>
</dependency
>
<dependency>
<groupId>org
.springframework
.boot
</groupId
>
<artifactId>spring
-boot
-starter
-test
</artifactId
>
</dependency
>
6.2 bootstrap.yml
server:
port: 8003
spring:
application:
name: user
cloud:
config:
name: me
-config
profile: dev
discovery:
enabled: true
service-id: config
feign:
hystrix:
enabled: true
eureka:
client:
service-url:
defaultZone: http
://localhost
:8888/eureka
management:
endpoints:
web:
exposure:
include: refresh
6.3 启动类
@SpringBootApplication
@EnableHystrix
@EnableDiscoveryClient
@EnableFeignClients
6.4 client
1.goods相关
@FeignClient(serviceId
= "goods",fallback
= GoodsFallBackMethod
.class)
public interface GoodsClient {
@RequestMapping("/findAll")
public List
<Goods> findAll();
}
@Component
public class GoodsFallBackMethod implements GoodsClient{
@Override
public List
<Goods> findAll() {
System
.out
.println("当前Goods的findAll方法调用不到,降级处理");
return null
;
}
}
2.shopcart相关
@FeignClient(serviceId
= "shopcart",fallback
= ShopCartFallBackMethod
.class)
public interface ShopCartClient {
@RequestMapping("/findAndfind")
public String
findAndfind();
}
@Component
public class ShopCartFallBackMethod implements ShopCartClient{
@Override
public String
findAndfind() {
System
.out
.println("当前Shopcart的findAndfind方法调用不到,降级处理");
return null
;
}
}
6.5 controller
@RestController
@RefreshScope
public class UserController {
@Autowired
GoodsClient goodsClient
;
@Autowired
ShopCartClient shopCartClient
;
@RequestMapping("/user/findAll")
public List
<Goods> findAll(){
return goodsClient
.findAll();
}
@RequestMapping("/user/findAndfind")
public String
findAndfind(){
return shopCartClient
.findAndfind()+"****user调用shopcart的findAndfind方法成功";
}
}