Full Code of JourWon/springcloud-learning for AI

master 447e9f3f9642 cached
440 files
925.1 KB
261.4k tokens
766 symbols
1 requests
Download .txt
Showing preview only (1,062K chars total). Download the full file or copy to clipboard to get everything.
Repository: JourWon/springcloud-learning
Branch: master
Commit: 447e9f3f9642
Files: 440
Total size: 925.1 KB

Directory structure:
gitextract_xg76vfy_/

├── .gitignore
├── README.md
├── admin-client/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── AdminClientApplication.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserServiceImpl.java
│       │   └── resources/
│       │       ├── application-eureka.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── AdminClientApplicationTests.java
├── admin-client.log
├── admin-security-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── AdminSecurityServerApplication.java
│       │   │               └── config/
│       │   │                   └── SecuritySecureConfig.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── AdminSecurityServerApplicationTests.java
├── admin-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               └── AdminServerApplication.java
│       │   └── resources/
│       │       ├── application-eureka.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── AdminServerApplicationTests.java
├── api-gateway/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── ApiGatewayApplication.java
│       │   │               ├── config/
│       │   │               │   ├── GatewayConfig.java
│       │   │               │   └── RedisRateLimiterConfig.java
│       │   │               └── controller/
│       │   │                   └── FallbackController.java
│       │   └── resources/
│       │       ├── application-eureka.yml
│       │       ├── application-filter.yml
│       │       ├── application-predicate.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── ApiGatewayApplicationTests.java
├── config-client/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── ConfigClientApplication.java
│       │   │               └── controller/
│       │   │                   └── ConfigClientController.java
│       │   └── resources/
│       │       ├── bootstrap-amqp1.yml
│       │       ├── bootstrap-amqp2.yml
│       │       ├── bootstrap-cluster.yml
│       │       ├── bootstrap-security.yml
│       │       └── bootstrap.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── ConfigClientApplicationTests.java
├── config-security-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               └── ConfigSecurityServerApplication.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── ConfigSecurityServerApplicationTests.java
├── config-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               └── ConfigServerApplication.java
│       │   └── resources/
│       │       ├── application-amqp.yml
│       │       ├── application-replica1.yml
│       │       ├── application-replica2.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── ConfigServerApplicationTests.java
├── consul-config-client/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── ConsulConfigClientApplication.java
│       │   │               └── controller/
│       │   │                   └── ConfigClientController.java
│       │   └── resources/
│       │       ├── application.yml
│       │       └── bootstrap.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── ConsulConfigClientApplicationTests.java
├── consul-ribbon-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── ConsulRibbonServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── RibbonConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserRibbonController.java
│       │   │               └── pojo/
│       │   │                   ├── Result.java
│       │   │                   └── User.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── ConsulRibbonServiceApplicationTests.java
├── consul-user-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── ConsulUserServiceApplication.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserServiceImpl.java
│       │   └── resources/
│       │       ├── application-replica1.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── ConsulUserServiceApplicationTests.java
├── eureka-client/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               └── EurekaClientApplication.java
│       │   └── resources/
│       │       ├── application-replica.yml
│       │       ├── application-security.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── EurekaClientApplicationTests.java
├── eureka-security-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── EurekaSecurityServerApplication.java
│       │   │               └── config/
│       │   │                   └── WebSecurityConfig.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── EurekaSecurityServerApplicationTests.java
├── eureka-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               └── EurekaServerApplication.java
│       │   └── resources/
│       │       ├── application-replica1.yml
│       │       ├── application-replica2.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── EurekaServerApplicationTests.java
├── feign-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── FeignServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── FeignConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserFeignController.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserFallbackService.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── FeignServiceApplicationTests.java
├── hystrix-dashboard/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               └── HystrixDashboardApplication.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── HystrixDashboardApplicationTests.java
├── hystrix-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── HystrixServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── RibbonConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserHystrixController.java
│       │   │               ├── filter/
│       │   │               │   └── HystrixRequestContextFilter.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   └── UserService.java
│       │   └── resources/
│       │       ├── application-replica1.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── HystrixServiceApplicationTests.java
├── nacos-config-client/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── NacosConfigClientApplication.java
│       │   │               └── controller/
│       │   │                   └── ConfigClientController.java
│       │   └── resources/
│       │       ├── application.yml
│       │       └── bootstrap.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── NacosConfigClientApplicationTests.java
├── nacos-ribbon-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── NacosRibbonServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── RibbonConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserRibbonController.java
│       │   │               └── pojo/
│       │   │                   ├── Result.java
│       │   │                   └── User.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── NacosRibbonServiceApplicationTests.java
├── nacos-user-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── NacosUserServiceApplication.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserServiceImpl.java
│       │   └── resources/
│       │       ├── application-replica.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── NacosUserServiceApplicationTests.java
├── oauth2-client/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── Oauth2ClientApplication.java
│       │   │               ├── config/
│       │   │               │   └── SecurityConfig.java
│       │   │               └── controller/
│       │   │                   └── UserController.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── Oauth2ClientApplicationTests.java
├── oauth2-jwt-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── Oauth2JwtServerApplication.java
│       │   │               ├── config/
│       │   │               │   ├── AuthorizationServerConfig.java
│       │   │               │   ├── JwtTokenStoreConfig.java
│       │   │               │   ├── RedisTokenStoreConfig.java
│       │   │               │   ├── ResourceServerConfig.java
│       │   │               │   └── SecurityConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── enhancer/
│       │   │               │   └── JwtTokenEnhancer.java
│       │   │               ├── pojo/
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   └── UserService.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── Oauth2JwtServerApplicationTests.java
├── oauth2-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── Oauth2ServerApplication.java
│       │   │               ├── config/
│       │   │               │   ├── AuthorizationServerConfig.java
│       │   │               │   ├── ResourceServerConfig.java
│       │   │               │   └── SecurityConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── pojo/
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   └── UserService.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── Oauth2ServerApplicationTests.java
├── pom.xml
├── ribbon-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── RibbonServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── RibbonConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserRibbonController.java
│       │   │               └── pojo/
│       │   │                   ├── Result.java
│       │   │                   └── User.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── RibbonServiceApplicationTests.java
├── seata-account-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── SeataAccountServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── DataSourceProxyConfig.java
│       │   │               ├── controller/
│       │   │               │   └── AccountController.java
│       │   │               ├── mapper/
│       │   │               │   └── AccountMapper.java
│       │   │               ├── pojo/
│       │   │               │   ├── Account.java
│       │   │               │   └── Result.java
│       │   │               └── service/
│       │   │                   ├── AccountService.java
│       │   │                   └── impl/
│       │   │                       └── AccountServiceImpl.java
│       │   └── resources/
│       │       ├── account.sql
│       │       ├── application.yml
│       │       ├── file.conf
│       │       ├── mapper/
│       │       │   └── AccountMapper.xml
│       │       └── registry.conf
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── SeataAccountServiceApplicationTests.java
├── seata-order-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── SeataOrderServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── DataSourceProxyConfig.java
│       │   │               ├── controller/
│       │   │               │   └── OrderController.java
│       │   │               ├── mapper/
│       │   │               │   └── OrderMapper.java
│       │   │               ├── pojo/
│       │   │               │   ├── Order.java
│       │   │               │   └── Result.java
│       │   │               └── service/
│       │   │                   ├── AccountService.java
│       │   │                   ├── OrderService.java
│       │   │                   ├── StorageService.java
│       │   │                   └── impl/
│       │   │                       └── OrderServiceImpl.java
│       │   └── resources/
│       │       ├── application.yml
│       │       ├── file.conf
│       │       ├── mapper/
│       │       │   └── OrderMapper.xml
│       │       ├── order.sql
│       │       └── registry.conf
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── SeataOrderServiceApplicationTests.java
├── seata-storage-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── SeataStorageServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── DataSourceProxyConfig.java
│       │   │               ├── controller/
│       │   │               │   └── StorageController.java
│       │   │               ├── mapper/
│       │   │               │   └── StorageMapper.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── Storage.java
│       │   │               └── service/
│       │   │                   ├── StorageService.java
│       │   │                   └── impl/
│       │   │                       └── StorageServiceImpl.java
│       │   └── resources/
│       │       ├── application.yml
│       │       ├── file.conf
│       │       ├── mapper/
│       │       │   └── StorageMapper.xml
│       │       ├── registry.conf
│       │       └── storage.sql
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── SeataStorageServiceApplicationTests.java
├── sentinel-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── SentinelServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── RibbonConfig.java
│       │   │               ├── controller/
│       │   │               │   ├── CircleBreakerController.java
│       │   │               │   ├── RateLimitController.java
│       │   │               │   └── UserFeignController.java
│       │   │               ├── handler/
│       │   │               │   └── CustomBlockHandler.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserFallbackService.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── SentinelServiceApplicationTests.java
├── turbine-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               └── TurbineServiceApplication.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── TurbineServiceApplicationTests.java
├── user-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── UserServiceApplication.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserServiceImpl.java
│       │   └── resources/
│       │       ├── application-replica.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── UserServiceApplicationTests.java
└── zuul-proxy/
    ├── .gitignore
    ├── .mvn/
    │   └── wrapper/
    │       ├── MavenWrapperDownloader.java
    │       ├── maven-wrapper.jar
    │       └── maven-wrapper.properties
    ├── mvnw
    ├── mvnw.cmd
    ├── pom.xml
    └── src/
        ├── main/
        │   ├── java/
        │   │   └── com/
        │   │       └── jourwon/
        │   │           └── springcloud/
        │   │               ├── ZuulProxyApplication.java
        │   │               └── filter/
        │   │                   └── PreLogFilter.java
        │   └── resources/
        │       └── application.yml
        └── test/
            └── java/
                └── com/
                    └── jourwon/
                        └── springcloud/
                            └── ZuulProxyApplicationTests.java

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/


================================================
FILE: README.md
================================================
# springcloud-learning
学习Spring Cloud框架的总结,使用的是最新的Hoxton版本。主要包括Eureka、Ribbon、Hystrix、Feign、Zuul、Gateway、Security、Bus、OpenFeign等核心组件用法进行详细介绍。


================================================
FILE: admin-client/.gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/


================================================
FILE: admin-client/.mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
 * Copyright 2012-2019 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.net.*;
import java.io.*;
import java.nio.channels.*;
import java.util.Properties;

public class MavenWrapperDownloader {

    private static final String WRAPPER_VERSION = "0.5.5";
    /**
     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
     */
    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
            + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";

    /**
     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
     * use instead of the default one.
     */
    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
            ".mvn/wrapper/maven-wrapper.properties";

    /**
     * Path where the maven-wrapper.jar will be saved to.
     */
    private static final String MAVEN_WRAPPER_JAR_PATH =
            ".mvn/wrapper/maven-wrapper.jar";

    /**
     * Name of the property which should be used to override the default download url for the wrapper.
     */
    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";

    public static void main(String args[]) {
        System.out.println("- Downloader started");
        File baseDirectory = new File(args[0]);
        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());

        // If the maven-wrapper.properties exists, read it and check if it contains a custom
        // wrapperUrl parameter.
        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
        String url = DEFAULT_DOWNLOAD_URL;
        if (mavenWrapperPropertyFile.exists()) {
            FileInputStream mavenWrapperPropertyFileInputStream = null;
            try {
                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
                Properties mavenWrapperProperties = new Properties();
                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
            } catch (IOException e) {
                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
            } finally {
                try {
                    if (mavenWrapperPropertyFileInputStream != null) {
                        mavenWrapperPropertyFileInputStream.close();
                    }
                } catch (IOException e) {
                    // Ignore ...
                }
            }
        }
        System.out.println("- Downloading from: " + url);

        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
        if (!outputFile.getParentFile().exists()) {
            if (!outputFile.getParentFile().mkdirs()) {
                System.out.println(
                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
            }
        }
        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
        try {
            downloadFileFromURL(url, outputFile);
            System.out.println("Done");
            System.exit(0);
        } catch (Throwable e) {
            System.out.println("- Error downloading");
            e.printStackTrace();
            System.exit(1);
        }
    }

    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
            String username = System.getenv("MVNW_USERNAME");
            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
            Authenticator.setDefault(new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });
        }
        URL website = new URL(urlString);
        ReadableByteChannel rbc;
        rbc = Channels.newChannel(website.openStream());
        FileOutputStream fos = new FileOutputStream(destination);
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        fos.close();
        rbc.close();
    }

}


================================================
FILE: admin-client/.mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar


================================================
FILE: admin-client/mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   M2_HOME - location of maven2's installed home dir
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        export JAVA_HOME="`/usr/libexec/java_home`"
      else
        export JAVA_HOME="/Library/Java/Home"
      fi
    fi
    ;;
esac

if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=`java-config --jre-home`
  fi
fi

if [ -z "$M2_HOME" ] ; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"

  # need this for relative symlinks
  while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
      PRG="$link"
    else
      PRG="`dirname "$PRG"`/$link"
    fi
  done

  saveddir=`pwd`

  M2_HOME=`dirname "$PRG"`/..

  # make it fully qualified
  M2_HOME=`cd "$M2_HOME" && pwd`

  cd "$saveddir"
  # echo Using m2 at $M2_HOME
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --unix "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi

# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
fi

if [ -z "$JAVA_HOME" ]; then
  javaExecutable="`which javac`"
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=`which readlink`
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
      if $darwin ; then
        javaHome="`dirname \"$javaExecutable\"`"
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
      else
        javaExecutable="`readlink -f \"$javaExecutable\"`"
      fi
      javaHome="`dirname \"$javaExecutable\"`"
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi

if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher

# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {

  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi

  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=`cd "$wdir/.."; pwd`
    fi
    # end of workaround
  done
  echo "${basedir}"
}

# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    echo "$(tr -s '\n' ' ' < "$1")"
  fi
}

BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi

##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Found .mvn/wrapper/maven-wrapper.jar"
    fi
else
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
    fi
    if [ -n "$MVNW_REPOURL" ]; then
      jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    else
      jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    fi
    while IFS="=" read key value; do
      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
      esac
    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Downloading from: $jarUrl"
    fi
    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
    if $cygwin; then
      wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
    fi

    if command -v wget > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found wget ... using wget"
        fi
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            wget "$jarUrl" -O "$wrapperJarPath"
        else
            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
        fi
    elif command -v curl > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found curl ... using curl"
        fi
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            curl -o "$wrapperJarPath" "$jarUrl" -f
        else
            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
        fi
        
    else
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Falling back to using Java to download"
        fi
        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
        # For Cygwin, switch paths to Windows format before running javac
        if $cygwin; then
          javaClass=`cygpath --path --windows "$javaClass"`
        fi
        if [ -e "$javaClass" ]; then
            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Compiling MavenWrapperDownloader.java ..."
                fi
                # Compiling the Java class
                ("$JAVA_HOME/bin/javac" "$javaClass")
            fi
            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                # Running the downloader
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Running MavenWrapperDownloader.java ..."
                fi
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################

export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
  echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi

# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS

WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

exec "$JAVACMD" \
  $MAVEN_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"


================================================
FILE: admin-client/mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%

@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre

@setlocal

set ERROR_CODE=0

@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal

@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome

echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init

echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

@REM ==== END VALIDATION ====

:init

@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.

set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir

set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir

:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir

:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"

:endDetectBaseDir

IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig

@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%

:endReadAdditionalConfig

SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"

FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)

@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
    if "%MVNW_VERBOSE%" == "true" (
        echo Found %WRAPPER_JAR%
    )
) else (
    if not "%MVNW_REPOURL%" == "" (
        SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    )
    if "%MVNW_VERBOSE%" == "true" (
        echo Couldn't find %WRAPPER_JAR%, downloading it ...
        echo Downloading from: %DOWNLOAD_URL%
    )

    powershell -Command "&{"^
		"$webclient = new-object System.Net.WebClient;"^
		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
		"}"^
		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
		"}"
    if "%MVNW_VERBOSE%" == "true" (
        echo Finished downloading %WRAPPER_JAR%
    )
)
@REM End of extension

@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*

%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end

:error
set ERROR_CODE=1

:end
@endlocal & set ERROR_CODE=%ERROR_CODE%

if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost

@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause

if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%

exit /B %ERROR_CODE%


================================================
FILE: admin-client/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.jourwon.springcloud</groupId>
    <artifactId>admin-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>admin-client</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-boot-admin.version>2.2.0</spring-boot-admin.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-dependencies</artifactId>
                <version>${spring-boot-admin.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


================================================
FILE: admin-client/src/main/java/com/jourwon/springcloud/AdminClientApplication.java
================================================
package com.jourwon.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * Description:
 * 
 * @author JourWon
 * @date 2019/12/23 11:46
 */
@EnableDiscoveryClient
@SpringBootApplication
public class AdminClientApplication {

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

}


================================================
FILE: admin-client/src/main/java/com/jourwon/springcloud/controller/UserController.java
================================================
package com.jourwon.springcloud.controller;

import com.jourwon.springcloud.pojo.Result;
import com.jourwon.springcloud.pojo.User;
import com.jourwon.springcloud.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * Description:
 *
 * @author JourWon
 * @date 2019/12/18 11:52
 */
@RestController
@RequestMapping("/user")
public class UserController {

    private static final Logger LOGGER = LoggerFactory.getLogger(UserController.class);

    @Autowired
    private UserService userService;

    @PostMapping("/insert")
    public Result insert(@RequestBody User user) {
        userService.insert(user);
        return new Result("操作成功", 200);
    }

    @GetMapping("/{id}")
    public Result<User> getUser(@PathVariable Long id) {
        User user = userService.getUser(id);
        LOGGER.info("根据id获取用户信息,用户名称为:{}",user.getUsername());
        return new Result<User>(user);
    }

    @GetMapping("/listUsersByIds")
    public Result<List<User>> listUsersByIds(@RequestParam List<Long> ids) {
        List<User> userList= userService.listUsersByIds(ids);
        LOGGER.info("根据ids获取用户信息,用户列表为:{}",userList);
        return new Result<List<User>>(userList);
    }

    @GetMapping("/getByUsername")
    public Result<User> getByUsername(@RequestParam String username) {
        User user = userService.getByUsername(username);
        return new Result<User>(user);
    }

    @PostMapping("/update")
    public Result update(@RequestBody User user) {
        userService.update(user);
        return new Result("操作成功", 200);
    }

    @PostMapping("/delete/{id}")
    public Result delete(@PathVariable Long id) {
        userService.delete(id);
        return new Result("操作成功", 200);
    }

}


================================================
FILE: admin-client/src/main/java/com/jourwon/springcloud/pojo/Result.java
================================================
package com.jourwon.springcloud.pojo;

/**
 * Description:统一返回前端的对象
 *
 * @author JourWon
 * @date 2019/12/18 13:57
 */
public class Result<T> {

    private T data;

    private String message;

    private int code;

    public Result() {
    }

    public Result(T data, String message, int code) {
        this.data = data;
        this.message = message;
        this.code = code;
    }

    public Result(String message, Integer code) {
        this(null, message, code);
    }

    public Result(T data) {
        this(data, "操作成功", 200);
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }
}


================================================
FILE: admin-client/src/main/java/com/jourwon/springcloud/pojo/User.java
================================================
package com.jourwon.springcloud.pojo;

/**
 * Description:用户
 *
 * @author JourWon
 * @date 2019/12/18 14:00
 */
public class User {

    private Long id;
    private String username;
    private String password;

    public User() {
    }

    public User(Long id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}


================================================
FILE: admin-client/src/main/java/com/jourwon/springcloud/service/UserService.java
================================================
package com.jourwon.springcloud.service;

import com.jourwon.springcloud.pojo.User;

import java.util.List;

/**
 * Description:
 *
 * @author JourWon
 * @date 2019/12/18 14:06
 */
public interface UserService {

    void insert(User user);

    User getUser(Long id);

    void update(User user);

    void delete(Long id);

    User getByUsername(String username);

    List<User> listUsersByIds(List<Long> ids);

}


================================================
FILE: admin-client/src/main/java/com/jourwon/springcloud/service/impl/UserServiceImpl.java
================================================
package com.jourwon.springcloud.service.impl;

import com.jourwon.springcloud.pojo.User;
import com.jourwon.springcloud.service.UserService;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * Description:
 *
 * @author JourWon
 * @date 2019/12/18 14:08
 */
@Service
public class UserServiceImpl implements UserService {

    private List<User> userList;

    @Override
    public void insert(User user) {
        userList.add(user);
    }

    @Override
    public User getUser(Long id) {
        List<User> list = userList.stream().filter(userItem -> userItem.getId().equals(id)).collect(Collectors.toList());
        if (!CollectionUtils.isEmpty(list)) {
            return list.get(0);
        }
        return null;
    }

    @Override
    public void update(User user) {
        userList.stream().filter(userItem -> userItem.getId().equals(user.getId())).forEach(userItem -> {
            userItem.setUsername(user.getUsername());
            userItem.setPassword(user.getPassword());
        });
    }

    @Override
    public void delete(Long id) {
        User user = getUser(id);
        if (user != null) {
            userList.remove(user);
        }
    }

    @Override
    public User getByUsername(String username) {
        List<User> list = userList.stream().filter(userItem -> userItem.getUsername().equals(username)).collect(Collectors.toList());
        if (!CollectionUtils.isEmpty(list)) {
            return list.get(0);
        }
        return null;
    }

    @Override
    public List<User> listUsersByIds(List<Long> ids) {
        return userList.stream().filter(userItem -> ids.contains(userItem.getId())).collect(Collectors.toList());
    }

    @PostConstruct
    public void initData() {
        userList = new ArrayList<>();
        userList.add(new User(1L, "jourwon", "123456"));
        userList.add(new User(2L, "andy", "123456"));
        userList.add(new User(3L, "mark", "123456"));
    }

}


================================================
FILE: admin-client/src/main/resources/application-eureka.yml
================================================
server:
  port: 9305

spring:
  application:
    name: admin-client
  boot:
    admin:
      client:
        # 配置admin-server地址
        url: http://localhost:9301

management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: always

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8001/eureka/

# 添加开启admin的日志监控
logging:
  file: admin-client.log

================================================
FILE: admin-client/src/main/resources/application.yml
================================================
server:
  port: 9305

spring:
  application:
    name: admin-client
  boot:
    admin:
      client:
        # 配置admin-server地址
        url: http://localhost:9301

management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: always

# 添加开启admin的日志监控
logging:
  file: admin-client.log

================================================
FILE: admin-client/src/test/java/com/jourwon/springcloud/AdminClientApplicationTests.java
================================================
package com.jourwon.springcloud;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class AdminClientApplicationTests {

    @Test
    void contextLoads() {
    }

}


================================================
FILE: admin-client.log
================================================
2019-12-23 11:40:34.569  INFO 13588 --- [main] c.j.springcloud.AdminClientApplication   : Starting AdminClientApplication on LAPTOP-6UL0UB2U with PID 13588 (E:\IdeaProjects\springcloud-learning\admin-client\target\classes started by JourW in E:\IdeaProjects\springcloud-learning)
2019-12-23 11:40:34.574  INFO 13588 --- [main] c.j.springcloud.AdminClientApplication   : No active profile set, falling back to default profiles: default
2019-12-23 11:40:35.847  INFO 13588 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 9305 (http)
2019-12-23 11:40:35.852  INFO 13588 --- [main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-12-23 11:40:35.853  INFO 13588 --- [main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
2019-12-23 11:40:35.909  INFO 13588 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-12-23 11:40:35.909  INFO 13588 --- [main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1257 ms
2019-12-23 11:40:36.032  INFO 13588 --- [main] o.s.b.a.e.web.ServletEndpointRegistrar   : Registered '/actuator/jolokia' to jolokia-actuator-endpoint
2019-12-23 11:40:36.129  INFO 13588 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-12-23 11:40:36.255  INFO 13588 --- [main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService
2019-12-23 11:40:36.268  INFO 13588 --- [main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 15 endpoint(s) beneath base path '/actuator'
2019-12-23 11:40:36.307  INFO 13588 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9305 (http) with context path ''
2019-12-23 11:40:36.310  INFO 13588 --- [main] c.j.springcloud.AdminClientApplication   : Started AdminClientApplication in 2.09 seconds (JVM running for 2.68)
2019-12-23 11:40:36.448  INFO 13588 --- [registrationTask1] d.c.b.a.c.r.ApplicationRegistrator       : Application registered itself as 82091ead3036
2019-12-23 11:40:36.467  INFO 13588 --- [http-nio-9305-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-12-23 11:40:36.467  INFO 13588 --- [http-nio-9305-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-12-23 11:40:36.471  INFO 13588 --- [http-nio-9305-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 4 ms
2019-12-23 11:56:48.142  INFO 16380 --- [main] c.j.springcloud.AdminClientApplication   : The following profiles are active: eureka
2019-12-23 11:56:49.177  WARN 16380 --- [main] o.s.boot.actuate.endpoint.EndpointId     : Endpoint ID 'service-registry' contains invalid characters, please migrate to a valid format.
2019-12-23 11:56:49.332  INFO 16380 --- [main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=41153c3a-68be-31b5-9a52-ef50a1eb9789
2019-12-23 11:56:49.480  INFO 16380 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-12-23 11:56:49.713  INFO 16380 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 9305 (http)
2019-12-23 11:56:49.724  INFO 16380 --- [main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-12-23 11:56:49.725  INFO 16380 --- [main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
2019-12-23 11:56:49.878  INFO 16380 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-12-23 11:56:49.878  INFO 16380 --- [main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1716 ms
2019-12-23 11:56:49.985  WARN 16380 --- [main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2019-12-23 11:56:49.986  INFO 16380 --- [main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2019-12-23 11:56:49.994  INFO 16380 --- [main] c.netflix.config.DynamicPropertyFactory  : DynamicPropertyFactory is initialized with configuration sources: com.netflix.config.ConcurrentCompositeConfiguration@73fc518f
2019-12-23 11:56:50.653  INFO 16380 --- [main] o.s.b.a.e.web.ServletEndpointRegistrar   : Registered '/actuator/jolokia' to jolokia-actuator-endpoint
2019-12-23 11:56:50.696  WARN 16380 --- [main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2019-12-23 11:56:50.696  INFO 16380 --- [main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2019-12-23 11:56:50.888  INFO 16380 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-12-23 11:56:51.903  INFO 16380 --- [main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService
2019-12-23 11:56:53.219  WARN 16380 --- [main] ockingLoadBalancerClientRibbonWarnLogger : You already have RibbonLoadBalancerClient on your classpath. It will be used by default. As Spring Cloud Ribbon is in maintenance mode. We recommend switching to BlockingLoadBalancerClient instead. In order to use it, set the value of `spring.cloud.loadbalancer.ribbon.enabled` to `false` or remove spring-cloud-starter-netflix-ribbon from your project.
2019-12-23 11:56:53.266  WARN 16380 --- [main] iguration$LoadBalancerCaffeineWarnLogger : Spring Cloud LoadBalancer is currently working with default default cache. You can switch to using Caffeine cache, by adding it to the classpath.
2019-12-23 11:56:53.285  INFO 16380 --- [main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 19 endpoint(s) beneath base path '/actuator'
2019-12-23 11:56:53.365  INFO 16380 --- [main] o.s.c.n.eureka.InstanceInfoFactory       : Setting initial instance status as: STARTING
2019-12-23 11:56:53.418  INFO 16380 --- [main] com.netflix.discovery.DiscoveryClient    : Initializing Eureka in region us-east-1
2019-12-23 11:56:53.491  INFO 16380 --- [main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON encoding codec LegacyJacksonJson
2019-12-23 11:56:53.491  INFO 16380 --- [main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON decoding codec LegacyJacksonJson
2019-12-23 11:56:53.638  INFO 16380 --- [main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML encoding codec XStreamXml
2019-12-23 11:56:53.638  INFO 16380 --- [main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML decoding codec XStreamXml
2019-12-23 11:56:53.854  INFO 16380 --- [main] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 11:56:54.101  INFO 16380 --- [main] com.netflix.discovery.DiscoveryClient    : Disable delta property : false
2019-12-23 11:56:54.102  INFO 16380 --- [main] com.netflix.discovery.DiscoveryClient    : Single vip registry refresh property : null
2019-12-23 11:56:54.102  INFO 16380 --- [main] com.netflix.discovery.DiscoveryClient    : Force full registry fetch : false
2019-12-23 11:56:54.102  INFO 16380 --- [main] com.netflix.discovery.DiscoveryClient    : Application is null : false
2019-12-23 11:56:54.102  INFO 16380 --- [main] com.netflix.discovery.DiscoveryClient    : Registered Applications size is zero : true
2019-12-23 11:56:54.102  INFO 16380 --- [main] com.netflix.discovery.DiscoveryClient    : Application version is -1: true
2019-12-23 11:56:54.102  INFO 16380 --- [main] com.netflix.discovery.DiscoveryClient    : Getting all instance registry info from the eureka server
2019-12-23 11:56:54.312  INFO 16380 --- [main] com.netflix.discovery.DiscoveryClient    : The response status is 200
2019-12-23 11:56:54.314  INFO 16380 --- [main] com.netflix.discovery.DiscoveryClient    : Starting heartbeat executor: renew interval is: 30
2019-12-23 11:56:54.317  INFO 16380 --- [main] c.n.discovery.InstanceInfoReplicator     : InstanceInfoReplicator onDemand update allowed rate per min is 4
2019-12-23 11:56:54.322  INFO 16380 --- [main] com.netflix.discovery.DiscoveryClient    : Discovery Client initialized at timestamp 1577073414321 with initial instances count: 0
2019-12-23 11:56:54.324  INFO 16380 --- [main] o.s.c.n.e.s.EurekaServiceRegistry        : Registering application ADMIN-CLIENT with eureka with status UP
2019-12-23 11:56:54.325  INFO 16380 --- [main] com.netflix.discovery.DiscoveryClient    : Saw local status change event StatusChangeEvent [timestamp=1577073414325, current=UP, previous=STARTING]
2019-12-23 11:56:54.327  INFO 16380 --- [DiscoveryClient-InstanceInfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_ADMIN-CLIENT/LAPTOP-6UL0UB2U:admin-client:9305: registering service...
2019-12-23 11:56:54.382  INFO 16380 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9305 (http) with context path ''
2019-12-23 11:56:54.383  INFO 16380 --- [main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 9305
2019-12-23 11:56:54.452  INFO 16380 --- [DiscoveryClient-InstanceInfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_ADMIN-CLIENT/LAPTOP-6UL0UB2U:admin-client:9305 - registration status: 204
2019-12-23 11:56:54.694  INFO 16380 --- [main] c.j.springcloud.AdminClientApplication   : Started AdminClientApplication in 8.921 seconds (JVM running for 10.092)
2019-12-23 11:56:56.755  WARN 16380 --- [registrationTask1] d.c.b.a.c.r.ApplicationRegistrator       : Failed to register application as Application(name=admin-client, managementUrl=http://LAPTOP-6UL0UB2U:9305/actuator, healthUrl=http://LAPTOP-6UL0UB2U:9305/actuator/health, serviceUrl=http://LAPTOP-6UL0UB2U:9305/) at spring-boot-admin ([http://localhost:9301/instances]): I/O error on POST request for "http://localhost:9301/instances": Connect to localhost:9301 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect; nested exception is org.apache.http.conn.HttpHostConnectException: Connect to localhost:9301 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect. Further attempts are logged on DEBUG level
2019-12-23 11:57:05.057  INFO 16380 --- [registrationTask1] d.c.b.a.c.r.ApplicationRegistrator       : Application registered itself as 82091ead3036
2019-12-23 11:57:05.107  INFO 16380 --- [http-nio-9305-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-12-23 11:57:05.107  INFO 16380 --- [http-nio-9305-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-12-23 11:57:05.111  INFO 16380 --- [http-nio-9305-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 4 ms
2019-12-23 11:57:24.316  INFO 16380 --- [DiscoveryClient-CacheRefreshExecutor-0] com.netflix.discovery.DiscoveryClient    : Disable delta property : false
2019-12-23 11:57:24.316  INFO 16380 --- [DiscoveryClient-CacheRefreshExecutor-0] com.netflix.discovery.DiscoveryClient    : Single vip registry refresh property : null
2019-12-23 11:57:24.316  INFO 16380 --- [DiscoveryClient-CacheRefreshExecutor-0] com.netflix.discovery.DiscoveryClient    : Force full registry fetch : false
2019-12-23 11:57:24.316  INFO 16380 --- [DiscoveryClient-CacheRefreshExecutor-0] com.netflix.discovery.DiscoveryClient    : Application is null : false
2019-12-23 11:57:24.317  INFO 16380 --- [DiscoveryClient-CacheRefreshExecutor-0] com.netflix.discovery.DiscoveryClient    : Registered Applications size is zero : true
2019-12-23 11:57:24.317  INFO 16380 --- [DiscoveryClient-CacheRefreshExecutor-0] com.netflix.discovery.DiscoveryClient    : Application version is -1: false
2019-12-23 11:57:24.317  INFO 16380 --- [DiscoveryClient-CacheRefreshExecutor-0] com.netflix.discovery.DiscoveryClient    : Getting all instance registry info from the eureka server
2019-12-23 11:57:24.342  INFO 16380 --- [DiscoveryClient-CacheRefreshExecutor-0] com.netflix.discovery.DiscoveryClient    : The response status is 200
2019-12-23 12:01:54.105  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 12:06:54.107  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 12:11:54.108  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 12:16:54.109  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 12:21:54.112  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 12:26:54.113  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 12:31:54.115  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 12:36:54.117  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 12:41:54.119  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 12:46:54.121  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 12:51:54.122  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 12:56:54.123  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 13:01:54.124  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 13:06:54.126  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 13:11:54.127  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 13:16:54.129  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 13:21:54.130  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 13:26:54.131  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 13:31:54.132  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 13:36:54.134  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 13:41:54.136  INFO 16380 --- [AsyncResolver-bootstrap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 14:01:36.882  INFO 1988 --- [main] c.j.springcloud.AdminClientApplication   : The following profiles are active: eureka
2019-12-23 14:01:37.313  WARN 1988 --- [main] o.s.boot.actuate.endpoint.EndpointId     : Endpoint ID 'service-registry' contains invalid characters, please migrate to a valid format.
2019-12-23 14:01:37.395  INFO 1988 --- [main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=fcac3631-55d0-35d6-88fc-e3950e53b491
2019-12-23 14:01:37.645  INFO 1988 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 9305 (http)
2019-12-23 14:01:37.652  INFO 1988 --- [main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-12-23 14:01:37.652  INFO 1988 --- [main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
2019-12-23 14:01:37.755  INFO 1988 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-12-23 14:01:37.755  INFO 1988 --- [main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 858 ms
2019-12-23 14:01:37.812  WARN 1988 --- [main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2019-12-23 14:01:37.812  INFO 1988 --- [main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2019-12-23 14:01:37.816  INFO 1988 --- [main] c.netflix.config.DynamicPropertyFactory  : DynamicPropertyFactory is initialized with configuration sources: com.netflix.config.ConcurrentCompositeConfiguration@782bf610
2019-12-23 14:01:38.260  INFO 1988 --- [main] o.s.b.a.e.web.ServletEndpointRegistrar   : Registered '/actuator/jolokia' to jolokia-actuator-endpoint
2019-12-23 14:01:38.286  WARN 1988 --- [main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2019-12-23 14:01:38.286  INFO 1988 --- [main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2019-12-23 14:01:38.388  INFO 1988 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-12-23 14:01:38.943  INFO 1988 --- [main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService
2019-12-23 14:01:39.424  WARN 1988 --- [main] ockingLoadBalancerClientRibbonWarnLogger : You already have RibbonLoadBalancerClient on your classpath. It will be used by default. As Spring Cloud Ribbon is in maintenance mode. We recommend switching to BlockingLoadBalancerClient instead. In order to use it, set the value of `spring.cloud.loadbalancer.ribbon.enabled` to `false` or remove spring-cloud-starter-netflix-ribbon from your project.
2019-12-23 14:01:39.448  INFO 1988 --- [main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 19 endpoint(s) beneath base path '/actuator'
2019-12-23 14:01:39.476  INFO 1988 --- [main] o.s.c.n.eureka.InstanceInfoFactory       : Setting initial instance status as: STARTING
2019-12-23 14:01:39.502  INFO 1988 --- [main] com.netflix.discovery.DiscoveryClient    : Initializing Eureka in region us-east-1
2019-12-23 14:01:39.541  INFO 1988 --- [main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON encoding codec LegacyJacksonJson
2019-12-23 14:01:39.541  INFO 1988 --- [main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON decoding codec LegacyJacksonJson
2019-12-23 14:01:39.624  INFO 1988 --- [main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML encoding codec XStreamXml
2019-12-23 14:01:39.624  INFO 1988 --- [main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML decoding codec XStreamXml
2019-12-23 14:01:39.754  INFO 1988 --- [main] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2019-12-23 14:01:39.915  INFO 1988 --- [main] com.netflix.discovery.DiscoveryClient    : Disable delta property : false
2019-12-23 14:01:39.916  INFO 1988 --- [main] com.netflix.discovery.DiscoveryClient    : Single vip registry refresh property : null
2019-12-23 14:01:39.916  INFO 1988 --- [main] com.netflix.discovery.DiscoveryClient    : Force full registry fetch : false
2019-12-23 14:01:39.916  INFO 1988 --- [main] com.netflix.discovery.DiscoveryClient    : Application is null : false
2019-12-23 14:01:39.916  INFO 1988 --- [main] com.netflix.discovery.DiscoveryClient    : Registered Applications size is zero : true
2019-12-23 14:01:39.916  INFO 1988 --- [main] com.netflix.discovery.DiscoveryClient    : Application version is -1: true
2019-12-23 14:01:39.916  INFO 1988 --- [main] com.netflix.discovery.DiscoveryClient    : Getting all instance registry info from the eureka server
2019-12-23 14:01:40.024  INFO 1988 --- [main] com.netflix.discovery.DiscoveryClient    : The response status is 200
2019-12-23 14:01:40.026  INFO 1988 --- [main] com.netflix.discovery.DiscoveryClient    : Starting heartbeat executor: renew interval is: 30
2019-12-23 14:01:40.028  INFO 1988 --- [main] c.n.discovery.InstanceInfoReplicator     : InstanceInfoReplicator onDemand update allowed rate per min is 4
2019-12-23 14:01:40.032  INFO 1988 --- [main] com.netflix.discovery.DiscoveryClient    : Discovery Client initialized at timestamp 1577080900031 with initial instances count: 1
2019-12-23 14:01:40.033  INFO 1988 --- [main] o.s.c.n.e.s.EurekaServiceRegistry        : Registering application ADMIN-CLIENT with eureka with status UP
2019-12-23 14:01:40.033  INFO 1988 --- [main] com.netflix.discovery.DiscoveryClient    : Saw local status change event StatusChangeEvent [timestamp=1577080900033, current=UP, previous=STARTING]
2019-12-23 14:01:40.035  INFO 1988 --- [DiscoveryClient-InstanceInfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_ADMIN-CLIENT/LAPTOP-6UL0UB2U:admin-client:9305: registering service...
2019-12-23 14:01:40.068  INFO 1988 --- [DiscoveryClient-InstanceInfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_ADMIN-CLIENT/LAPTOP-6UL0UB2U:admin-client:9305 - registration status: 204
2019-12-23 14:01:40.072  INFO 1988 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9305 (http) with context path ''
2019-12-23 14:01:40.072  INFO 1988 --- [main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 9305
2019-12-23 14:01:40.305  INFO 1988 --- [main] c.j.springcloud.AdminClientApplication   : Started AdminClientApplication in 4.657 seconds (JVM running for 5.363)
2019-12-23 14:01:40.476  WARN 1988 --- [registrationTask1] d.c.b.a.c.r.ApplicationRegistrator       : Failed to register application as Application(name=admin-client, managementUrl=http://LAPTOP-6UL0UB2U:9305/actuator, healthUrl=http://LAPTOP-6UL0UB2U:9305/actuator/health, serviceUrl=http://LAPTOP-6UL0UB2U:9305/) at spring-boot-admin ([http://localhost:9301/instances]): 401 : [{"timestamp":"2019-12-23T06:01:40.446+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/instances"}]. Further attempts are logged on DEBUG level
2019-12-23 14:02:20.788  INFO 1988 --- [http-nio-9305-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-12-23 14:02:20.789  INFO 1988 --- [http-nio-9305-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-12-23 14:02:20.793  INFO 1988 --- [http-nio-9305-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 4 ms


================================================
FILE: admin-security-server/.gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/


================================================
FILE: admin-security-server/.mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
 * Copyright 2012-2019 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.net.*;
import java.io.*;
import java.nio.channels.*;
import java.util.Properties;

public class MavenWrapperDownloader {

    private static final String WRAPPER_VERSION = "0.5.5";
    /**
     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
     */
    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
            + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";

    /**
     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
     * use instead of the default one.
     */
    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
            ".mvn/wrapper/maven-wrapper.properties";

    /**
     * Path where the maven-wrapper.jar will be saved to.
     */
    private static final String MAVEN_WRAPPER_JAR_PATH =
            ".mvn/wrapper/maven-wrapper.jar";

    /**
     * Name of the property which should be used to override the default download url for the wrapper.
     */
    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";

    public static void main(String args[]) {
        System.out.println("- Downloader started");
        File baseDirectory = new File(args[0]);
        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());

        // If the maven-wrapper.properties exists, read it and check if it contains a custom
        // wrapperUrl parameter.
        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
        String url = DEFAULT_DOWNLOAD_URL;
        if (mavenWrapperPropertyFile.exists()) {
            FileInputStream mavenWrapperPropertyFileInputStream = null;
            try {
                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
                Properties mavenWrapperProperties = new Properties();
                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
            } catch (IOException e) {
                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
            } finally {
                try {
                    if (mavenWrapperPropertyFileInputStream != null) {
                        mavenWrapperPropertyFileInputStream.close();
                    }
                } catch (IOException e) {
                    // Ignore ...
                }
            }
        }
        System.out.println("- Downloading from: " + url);

        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
        if (!outputFile.getParentFile().exists()) {
            if (!outputFile.getParentFile().mkdirs()) {
                System.out.println(
                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
            }
        }
        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
        try {
            downloadFileFromURL(url, outputFile);
            System.out.println("Done");
            System.exit(0);
        } catch (Throwable e) {
            System.out.println("- Error downloading");
            e.printStackTrace();
            System.exit(1);
        }
    }

    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
            String username = System.getenv("MVNW_USERNAME");
            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
            Authenticator.setDefault(new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });
        }
        URL website = new URL(urlString);
        ReadableByteChannel rbc;
        rbc = Channels.newChannel(website.openStream());
        FileOutputStream fos = new FileOutputStream(destination);
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        fos.close();
        rbc.close();
    }

}


================================================
FILE: admin-security-server/.mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar


================================================
FILE: admin-security-server/mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   M2_HOME - location of maven2's installed home dir
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        export JAVA_HOME="`/usr/libexec/java_home`"
      else
        export JAVA_HOME="/Library/Java/Home"
      fi
    fi
    ;;
esac

if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=`java-config --jre-home`
  fi
fi

if [ -z "$M2_HOME" ] ; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"

  # need this for relative symlinks
  while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
      PRG="$link"
    else
      PRG="`dirname "$PRG"`/$link"
    fi
  done

  saveddir=`pwd`

  M2_HOME=`dirname "$PRG"`/..

  # make it fully qualified
  M2_HOME=`cd "$M2_HOME" && pwd`

  cd "$saveddir"
  # echo Using m2 at $M2_HOME
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --unix "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi

# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
fi

if [ -z "$JAVA_HOME" ]; then
  javaExecutable="`which javac`"
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=`which readlink`
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
      if $darwin ; then
        javaHome="`dirname \"$javaExecutable\"`"
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
      else
        javaExecutable="`readlink -f \"$javaExecutable\"`"
      fi
      javaHome="`dirname \"$javaExecutable\"`"
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi

if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher

# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {

  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi

  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=`cd "$wdir/.."; pwd`
    fi
    # end of workaround
  done
  echo "${basedir}"
}

# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    echo "$(tr -s '\n' ' ' < "$1")"
  fi
}

BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi

##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Found .mvn/wrapper/maven-wrapper.jar"
    fi
else
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
    fi
    if [ -n "$MVNW_REPOURL" ]; then
      jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    else
      jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    fi
    while IFS="=" read key value; do
      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
      esac
    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Downloading from: $jarUrl"
    fi
    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
    if $cygwin; then
      wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
    fi

    if command -v wget > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found wget ... using wget"
        fi
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            wget "$jarUrl" -O "$wrapperJarPath"
        else
            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
        fi
    elif command -v curl > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found curl ... using curl"
        fi
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            curl -o "$wrapperJarPath" "$jarUrl" -f
        else
            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
        fi
        
    else
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Falling back to using Java to download"
        fi
        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
        # For Cygwin, switch paths to Windows format before running javac
        if $cygwin; then
          javaClass=`cygpath --path --windows "$javaClass"`
        fi
        if [ -e "$javaClass" ]; then
            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Compiling MavenWrapperDownloader.java ..."
                fi
                # Compiling the Java class
                ("$JAVA_HOME/bin/javac" "$javaClass")
            fi
            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                # Running the downloader
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Running MavenWrapperDownloader.java ..."
                fi
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################

export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
  echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi

# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS

WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

exec "$JAVACMD" \
  $MAVEN_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"


================================================
FILE: admin-security-server/mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%

@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre

@setlocal

set ERROR_CODE=0

@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal

@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome

echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init

echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

@REM ==== END VALIDATION ====

:init

@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.

set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir

set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir

:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir

:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"

:endDetectBaseDir

IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig

@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%

:endReadAdditionalConfig

SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"

FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)

@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
    if "%MVNW_VERBOSE%" == "true" (
        echo Found %WRAPPER_JAR%
    )
) else (
    if not "%MVNW_REPOURL%" == "" (
        SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    )
    if "%MVNW_VERBOSE%" == "true" (
        echo Couldn't find %WRAPPER_JAR%, downloading it ...
        echo Downloading from: %DOWNLOAD_URL%
    )

    powershell -Command "&{"^
		"$webclient = new-object System.Net.WebClient;"^
		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
		"}"^
		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
		"}"
    if "%MVNW_VERBOSE%" == "true" (
        echo Finished downloading %WRAPPER_JAR%
    )
)
@REM End of extension

@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*

%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end

:error
set ERROR_CODE=1

:end
@endlocal & set ERROR_CODE=%ERROR_CODE%

if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost

@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause

if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%

exit /B %ERROR_CODE%


================================================
FILE: admin-security-server/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.jourwon.springcloud</groupId>
    <artifactId>admin-security-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>admin-security-server</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-boot-admin.version>2.2.0</spring-boot-admin.version>
        <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-dependencies</artifactId>
                <version>${spring-boot-admin.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


================================================
FILE: admin-security-server/src/main/java/com/jourwon/springcloud/AdminSecurityServerApplication.java
================================================
package com.jourwon.springcloud;

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * Description:
 * 
 * @author JourWon
 * @date 2019/12/23 14:00
 */
@EnableAdminServer
@EnableDiscoveryClient
@SpringBootApplication
public class AdminSecurityServerApplication {

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

}


================================================
FILE: admin-security-server/src/main/java/com/jourwon/springcloud/config/SecuritySecureConfig.java
================================================
package com.jourwon.springcloud.config;

import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;

/**
 * Description:对SpringSecurity进行配置,以便admin-client可以注册
 *
 * @author JourWon
 * @date 2019/12/23 13:58
 */
@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {

    private final String adminContextPath;

    public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
        this.adminContextPath = adminServerProperties.getContextPath();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(adminContextPath + "/");

        http.authorizeRequests()
                //1.配置所有静态资源和登录页可以公开访问
                .antMatchers(adminContextPath + "/assets/**").permitAll()
                .antMatchers(adminContextPath + "/login").permitAll()
                .anyRequest().authenticated()
                .and()
                //2.配置登录和登出路径
                .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
                .logout().logoutUrl(adminContextPath + "/logout").and()
                //3.开启http basic支持,admin-client注册时需要使用
                .httpBasic().and()
                .csrf()
                //4.开启基于cookie的csrf保护
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                //5.忽略这些路径的csrf保护以便admin-client注册
                .ignoringAntMatchers(
                        adminContextPath + "/instances",
                        adminContextPath + "/actuator/**"
                );
    }

}


================================================
FILE: admin-security-server/src/main/resources/application.yml
================================================
server:
  port: 9301

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8001/eureka/

spring:
  application:
    name: admin-security-server
  security:
    user:
      # 配置登录用户名和密码
      name: root
      password: 123456
  boot:
    admin:
      discovery:
        # 不显示admin-security-server的监控信息
        ignored-services: ${spring.application.name}

================================================
FILE: admin-security-server/src/test/java/com/jourwon/springcloud/AdminSecurityServerApplicationTests.java
================================================
package com.jourwon.springcloud;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class AdminSecurityServerApplicationTests {

    @Test
    void contextLoads() {
    }

}


================================================
FILE: admin-server/.gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/


================================================
FILE: admin-server/.mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
 * Copyright 2012-2019 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.net.*;
import java.io.*;
import java.nio.channels.*;
import java.util.Properties;

public class MavenWrapperDownloader {

    private static final String WRAPPER_VERSION = "0.5.5";
    /**
     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
     */
    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
            + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";

    /**
     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
     * use instead of the default one.
     */
    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
            ".mvn/wrapper/maven-wrapper.properties";

    /**
     * Path where the maven-wrapper.jar will be saved to.
     */
    private static final String MAVEN_WRAPPER_JAR_PATH =
            ".mvn/wrapper/maven-wrapper.jar";

    /**
     * Name of the property which should be used to override the default download url for the wrapper.
     */
    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";

    public static void main(String args[]) {
        System.out.println("- Downloader started");
        File baseDirectory = new File(args[0]);
        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());

        // If the maven-wrapper.properties exists, read it and check if it contains a custom
        // wrapperUrl parameter.
        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
        String url = DEFAULT_DOWNLOAD_URL;
        if (mavenWrapperPropertyFile.exists()) {
            FileInputStream mavenWrapperPropertyFileInputStream = null;
            try {
                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
                Properties mavenWrapperProperties = new Properties();
                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
            } catch (IOException e) {
                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
            } finally {
                try {
                    if (mavenWrapperPropertyFileInputStream != null) {
                        mavenWrapperPropertyFileInputStream.close();
                    }
                } catch (IOException e) {
                    // Ignore ...
                }
            }
        }
        System.out.println("- Downloading from: " + url);

        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
        if (!outputFile.getParentFile().exists()) {
            if (!outputFile.getParentFile().mkdirs()) {
                System.out.println(
                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
            }
        }
        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
        try {
            downloadFileFromURL(url, outputFile);
            System.out.println("Done");
            System.exit(0);
        } catch (Throwable e) {
            System.out.println("- Error downloading");
            e.printStackTrace();
            System.exit(1);
        }
    }

    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
            String username = System.getenv("MVNW_USERNAME");
            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
            Authenticator.setDefault(new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });
        }
        URL website = new URL(urlString);
        ReadableByteChannel rbc;
        rbc = Channels.newChannel(website.openStream());
        FileOutputStream fos = new FileOutputStream(destination);
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        fos.close();
        rbc.close();
    }

}


================================================
FILE: admin-server/.mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar


================================================
FILE: admin-server/mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   M2_HOME - location of maven2's installed home dir
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        export JAVA_HOME="`/usr/libexec/java_home`"
      else
        export JAVA_HOME="/Library/Java/Home"
      fi
    fi
    ;;
esac

if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=`java-config --jre-home`
  fi
fi

if [ -z "$M2_HOME" ] ; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"

  # need this for relative symlinks
  while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
      PRG="$link"
    else
      PRG="`dirname "$PRG"`/$link"
    fi
  done

  saveddir=`pwd`

  M2_HOME=`dirname "$PRG"`/..

  # make it fully qualified
  M2_HOME=`cd "$M2_HOME" && pwd`

  cd "$saveddir"
  # echo Using m2 at $M2_HOME
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --unix "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi

# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
fi

if [ -z "$JAVA_HOME" ]; then
  javaExecutable="`which javac`"
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=`which readlink`
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
      if $darwin ; then
        javaHome="`dirname \"$javaExecutable\"`"
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
      else
        javaExecutable="`readlink -f \"$javaExecutable\"`"
      fi
      javaHome="`dirname \"$javaExecutable\"`"
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi

if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher

# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {

  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi

  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=`cd "$wdir/.."; pwd`
    fi
    # end of workaround
  done
  echo "${basedir}"
}

# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    echo "$(tr -s '\n' ' ' < "$1")"
  fi
}

BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi

##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Found .mvn/wrapper/maven-wrapper.jar"
    fi
else
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
    fi
    if [ -n "$MVNW_REPOURL" ]; then
      jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    else
      jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    fi
    while IFS="=" read key value; do
      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
      esac
    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Downloading from: $jarUrl"
    fi
    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
    if $cygwin; then
      wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
    fi

    if command -v wget > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found wget ... using wget"
        fi
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            wget "$jarUrl" -O "$wrapperJarPath"
        else
            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
        fi
    elif command -v curl > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found curl ... using curl"
        fi
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            curl -o "$wrapperJarPath" "$jarUrl" -f
        else
            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
        fi
        
    else
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Falling back to using Java to download"
        fi
        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
        # For Cygwin, switch paths to Windows format before running javac
        if $cygwin; then
          javaClass=`cygpath --path --windows "$javaClass"`
        fi
        if [ -e "$javaClass" ]; then
            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Compiling MavenWrapperDownloader.java ..."
                fi
                # Compiling the Java class
                ("$JAVA_HOME/bin/javac" "$javaClass")
            fi
            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                # Running the downloader
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Running MavenWrapperDownloader.java ..."
                fi
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################

export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
  echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi

# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS

WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

exec "$JAVACMD" \
  $MAVEN_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"


================================================
FILE: admin-server/mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%

@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre

@setlocal

set ERROR_CODE=0

@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal

@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome

echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init

echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

@REM ==== END VALIDATION ====

:init

@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.

set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir

set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir

:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir

:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"

:endDetectBaseDir

IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig

@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%

:endReadAdditionalConfig

SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"

FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)

@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
    if "%MVNW_VERBOSE%" == "true" (
        echo Found %WRAPPER_JAR%
    )
) else (
    if not "%MVNW_REPOURL%" == "" (
        SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    )
    if "%MVNW_VERBOSE%" == "true" (
        echo Couldn't find %WRAPPER_JAR%, downloading it ...
        echo Downloading from: %DOWNLOAD_URL%
    )

    powershell -Command "&{"^
		"$webclient = new-object System.Net.WebClient;"^
		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
		"}"^
		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
		"}"
    if "%MVNW_VERBOSE%" == "true" (
        echo Finished downloading %WRAPPER_JAR%
    )
)
@REM End of extension

@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*

%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end

:error
set ERROR_CODE=1

:end
@endlocal & set ERROR_CODE=%ERROR_CODE%

if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost

@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause

if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%

exit /B %ERROR_CODE%


================================================
FILE: admin-server/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.jourwon.springcloud</groupId>
    <artifactId>admin-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>admin-server</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-boot-admin.version>2.2.0</spring-boot-admin.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-dependencies</artifactId>
                <version>${spring-boot-admin.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


================================================
FILE: admin-server/src/main/java/com/jourwon/springcloud/AdminServerApplication.java
================================================
package com.jourwon.springcloud;

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * Description:
 * 
 * @author JourWon
 * @date 2019/12/23 10:52
 */
@EnableDiscoveryClient
@EnableAdminServer
@SpringBootApplication
public class AdminServerApplication {

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

}


================================================
FILE: admin-server/src/main/resources/application-eureka.yml
================================================
server:
  port: 9301

spring:
  application:
    name: admin-server

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8001/eureka/

================================================
FILE: admin-server/src/main/resources/application.yml
================================================
server:
  port: 9301

spring:
  application:
    name: admin-server

================================================
FILE: admin-server/src/test/java/com/jourwon/springcloud/AdminServerApplicationTests.java
================================================
package com.jourwon.springcloud;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class AdminServerApplicationTests {

    @Test
    void contextLoads() {
    }

}


================================================
FILE: api-gateway/.gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/


================================================
FILE: api-gateway/.mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
 * Copyright 2012-2019 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.net.*;
import java.io.*;
import java.nio.channels.*;
import java.util.Properties;

public class MavenWrapperDownloader {

    private static final String WRAPPER_VERSION = "0.5.5";
    /**
     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
     */
    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
            + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";

    /**
     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
     * use instead of the default one.
     */
    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
            ".mvn/wrapper/maven-wrapper.properties";

    /**
     * Path where the maven-wrapper.jar will be saved to.
     */
    private static final String MAVEN_WRAPPER_JAR_PATH =
            ".mvn/wrapper/maven-wrapper.jar";

    /**
     * Name of the property which should be used to override the default download url for the wrapper.
     */
    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";

    public static void main(String args[]) {
        System.out.println("- Downloader started");
        File baseDirectory = new File(args[0]);
        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());

        // If the maven-wrapper.properties exists, read it and check if it contains a custom
        // wrapperUrl parameter.
        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
        String url = DEFAULT_DOWNLOAD_URL;
        if (mavenWrapperPropertyFile.exists()) {
            FileInputStream mavenWrapperPropertyFileInputStream = null;
            try {
                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
                Properties mavenWrapperProperties = new Properties();
                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
            } catch (IOException e) {
                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
            } finally {
                try {
                    if (mavenWrapperPropertyFileInputStream != null) {
                        mavenWrapperPropertyFileInputStream.close();
                    }
                } catch (IOException e) {
                    // Ignore ...
                }
            }
        }
        System.out.println("- Downloading from: " + url);

        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
        if (!outputFile.getParentFile().exists()) {
            if (!outputFile.getParentFile().mkdirs()) {
                System.out.println(
                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
            }
        }
        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
        try {
            downloadFileFromURL(url, outputFile);
            System.out.println("Done");
            System.exit(0);
        } catch (Throwable e) {
            System.out.println("- Error downloading");
            e.printStackTrace();
            System.exit(1);
        }
    }

    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
            String username = System.getenv("MVNW_USERNAME");
            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
            Authenticator.setDefault(new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });
        }
        URL website = new URL(urlString);
        ReadableByteChannel rbc;
        rbc = Channels.newChannel(website.openStream());
        FileOutputStream fos = new FileOutputStream(destination);
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        fos.close();
        rbc.close();
    }

}


================================================
FILE: api-gateway/.mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar


================================================
FILE: api-gateway/mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   M2_HOME - location of maven2's installed home dir
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        export JAVA_HOME="`/usr/libexec/java_home`"
      else
        export JAVA_HOME="/Library/Java/Home"
      fi
    fi
    ;;
esac

if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=`java-config --jre-home`
  fi
fi

if [ -z "$M2_HOME" ] ; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"

  # need this for relative symlinks
  while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
      PRG="$link"
    else
      PRG="`dirname "$PRG"`/$link"
    fi
  done

  saveddir=`pwd`

  M2_HOME=`dirname "$PRG"`/..

  # make it fully qualified
  M2_HOME=`cd "$M2_HOME" && pwd`

  cd "$saveddir"
  # echo Using m2 at $M2_HOME
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --unix "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi

# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
fi

if [ -z "$JAVA_HOME" ]; then
  javaExecutable="`which javac`"
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=`which readlink`
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
      if $darwin ; then
        javaHome="`dirname \"$javaExecutable\"`"
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
      else
        javaExecutable="`readlink -f \"$javaExecutable\"`"
      fi
      javaHome="`dirname \"$javaExecutable\"`"
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi

if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher

# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {

  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi

  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=`cd "$wdir/.."; pwd`
    fi
    # end of workaround
  done
  echo "${basedir}"
}

# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    echo "$(tr -s '\n' ' ' < "$1")"
  fi
}

BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi

##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Found .mvn/wrapper/maven-wrapper.jar"
    fi
else
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
    fi
    if [ -n "$MVNW_REPOURL" ]; then
      jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    else
      jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    fi
    while IFS="=" read key value; do
      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
      esac
    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Downloading from: $jarUrl"
    fi
    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
    if $cygwin; then
      wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
    fi

    if command -v wget > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found wget ... using wget"
        fi
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            wget "$jarUrl" -O "$wrapperJarPath"
        else
            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
        fi
    elif command -v curl > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found curl ... using curl"
        fi
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            curl -o "$wrapperJarPath" "$jarUrl" -f
        else
            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
        fi
        
    else
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Falling back to using Java to download"
        fi
        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
        # For Cygwin, switch paths to Windows format before running javac
        if $cygwin; then
          javaClass=`cygpath --path --windows "$javaClass"`
        fi
        if [ -e "$javaClass" ]; then
            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Compiling MavenWrapperDownloader.java ..."
                fi
                # Compiling the Java class
                ("$JAVA_HOME/bin/javac" "$javaClass")
            fi
            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                # Running the downloader
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Running MavenWrapperDownloader.java ..."
                fi
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################

export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
  echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi

# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS

WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

exec "$JAVACMD" \
  $MAVEN_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"


================================================
FILE: api-gateway/mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%

@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre

@setlocal

set ERROR_CODE=0

@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal

@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome

echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init

echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

@REM ==== END VALIDATION ====

:init

@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.

set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir

set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir

:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir

:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"

:endDetectBaseDir

IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig

@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%

:endReadAdditionalConfig

SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"

FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)

@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
    if "%MVNW_VERBOSE%" == "true" (
        echo Found %WRAPPER_JAR%
    )
) else (
    if not "%MVNW_REPOURL%" == "" (
        SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    )
    if "%MVNW_VERBOSE%" == "true" (
        echo Couldn't find %WRAPPER_JAR%, downloading it ...
        echo Downloading from: %DOWNLOAD_URL%
    )

    powershell -Command "&{"^
		"$webclient = new-object System.Net.WebClient;"^
		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
		"}"^
		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
		"}"
    if "%MVNW_VERBOSE%" == "true" (
        echo Finished downloading %WRAPPER_JAR%
    )
)
@REM End of extension

@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*

%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end

:error
set ERROR_CODE=1

:end
@endlocal & set ERROR_CODE=%ERROR_CODE%

if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost

@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause

if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%

exit /B %ERROR_CODE%


================================================
FILE: api-gateway/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.jourwon.springcloud</groupId>
    <artifactId>api-gateway</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>api-gateway</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

        <!--使用注册中心时添加-->
        <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>-->

        <!--使用redis对路由限速时添加-->
        <!--<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
        </dependency>-->


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


================================================
FILE: api-gateway/src/main/java/com/jourwon/springcloud/ApiGatewayApplication.java
================================================
package com.jourwon.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * Description:
 * 
 * @author JourWon
 * @date 2019/12/22 18:36
 */
@EnableDiscoveryClient
@SpringBootApplication
public class ApiGatewayApplication {

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

}


================================================
FILE: api-gateway/src/main/java/com/jourwon/springcloud/config/GatewayConfig.java
================================================
package com.jourwon.springcloud.config;

import org.springframework.context.annotation.Configuration;

/**
 * Description:
 *
 * @author JourWon
 * @date 2019/12/22 19:01
 */
@Configuration
public class GatewayConfig {

    /*@Bean
    public RouteLocator customerRouteLocator(RouteLocatorBuilder builder) {
        return builder.routes()
                .route("path_route2", r -> r.path("/user/getByUsername")
                        .uri("http://localhost:8201/user/getByUsername"))
                .build();
    }*/

}


================================================
FILE: api-gateway/src/main/java/com/jourwon/springcloud/config/RedisRateLimiterConfig.java
================================================
package com.jourwon.springcloud.config;

import org.springframework.cloud.gateway.filter.ratelimit.KeyResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import reactor.core.publisher.Mono;

/**
 * Description:
 *
 * @author JourWon
 * @date 2019/12/23 9:10
 */
@Configuration
public class RedisRateLimiterConfig {

    @Bean
    public KeyResolver userKeyResolver() {
        return exchange -> Mono.just(exchange.getRequest().getQueryParams().getFirst("username"));
    }


    @Bean
    public KeyResolver ipKeyResolver() {
        return exchange -> Mono.just(exchange.getRequest().getRemoteAddress().getHostName());
    }


}


================================================
FILE: api-gateway/src/main/java/com/jourwon/springcloud/controller/FallbackController.java
================================================
package com.jourwon.springcloud.controller;

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

import java.util.HashMap;
import java.util.Map;

/**
 * Description:
 *
 * @author JourWon
 * @date 2019/12/23 8:56
 */
@RestController
public class FallbackController {

    @GetMapping("/fallback")
    public Object fallback() {
        Map<String,Object> result = new HashMap<>();
        result.put("data",null);
        result.put("message","Get request fallback!");
        result.put("code",500);
        return result;
    }


}


================================================
FILE: api-gateway/src/main/resources/application-eureka.yml
================================================
server:
  port: 9201
spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      routes:
        - id: prefixpath_route
          uri: lb://user-service #此处需要使用lb协议
          predicates:
            - Method=GET
          filters:
            - PrefixPath=/user
      discovery:
        locator:
          enabled: true
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8001/eureka/
logging:
  level:
    org.springframework.cloud.gateway: debug

================================================
FILE: api-gateway/src/main/resources/application-filter.yml
================================================
server:
  port: 9201
service-url:
  user-service: http://localhost:8201

spring:
  cloud:
    gateway:
      routes:
        - id: add_request_parameter_route
          uri: ${service-url.user-service}
          filters:
            - AddRequestParameter=username, jourwon
          predicates:
            - Path=/user/**

#spring:
#  cloud:
#    gateway:
#      routes:
#        - id: hystrix_route
#          uri: ${service-url.user-service}
#          predicates:
#            - Method=GET
#          filters:
#            - name: Hystrix
#              args:
#                name: fallbackcmd
#                fallback-uri: forward:/fallback

#spring:
#  redis:
#    host: localhost
#    password: 123456
#    port: 6379
#  cloud:
#    gateway:
#      routes:
#        - id: requestratelimiter_route
#          uri: http://localhost:8201
#          filters:
#            - name: RequestRateLimiter
#              args:
#                # 每秒允许处理的请求数量
#                redis-rate-limiter.replenishRate: 1
#                # 每秒最大处理的请求数量
#                redis-rate-limiter.burstCapacity: 2
#                # 限流策略,对应策略的Bean
#                key-resolver: "#{@ipKeyResolver}"
#          predicates:
#            - Method=GET
#logging:
#  level:
#    org.springframework.cloud.gateway: debug



================================================
FILE: api-gateway/src/main/resources/application-predicate.yml
================================================
server:
  port: 9201
service-url:
  user-service: http://localhost:8201

spring:
  cloud:
    gateway:
      routes:
        - id: after_route
          uri: ${service-url.user-service}
          predicates:
            - After=2019-12-22T19:30:00+08:00[Asia/Shanghai]

================================================
FILE: api-gateway/src/main/resources/application.yml
================================================
server:
  port: 9201

service-url:
  user-service: http://localhost:8201


spring:
  cloud:
    gateway:
      routes:
          # 路由的ID
        - id: path_route
          # 匹配后路由地址
          uri: ${service-url.user-service}/user/{id}
          predicates:
              # 断言,路径相匹配的进行路由
            - Path=/user/{id}



================================================
FILE: api-gateway/src/test/java/com/jourwon/springcloud/ApiGatewayApplicationTests.java
================================================
package com.jourwon.springcloud;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class ApiGatewayApplicationTests {

    @Test
    void contextLoads() {
    }

}


================================================
FILE: config-client/.gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/


================================================
FILE: config-client/.mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
 * Copyright 2012-2019 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.net.*;
import java.io.*;
import java.nio.channels.*;
import java.util.Properties;

public class MavenWrapperDownloader {

    private static final String WRAPPER_VERSION = "0.5.5";
    /**
     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
     */
    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
            + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";

    /**
     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
     * use instead of the default one.
     */
    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
            ".mvn/wrapper/maven-wrapper.properties";

    /**
     * Path where the maven-wrapper.jar will be saved to.
     */
    private static final String MAVEN_WRAPPER_JAR_PATH =
            ".mvn/wrapper/maven-wrapper.jar";

    /**
     * Name of the property which should be used to override the default download url for the wrapper.
     */
    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";

    public static void main(String args[]) {
        System.out.println("- Downloader started");
        File baseDirectory = new File(args[0]);
        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());

        // If the maven-wrapper.properties exists, read it and check if it contains a custom
        // wrapperUrl parameter.
        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
        String url = DEFAULT_DOWNLOAD_URL;
        if (mavenWrapperPropertyFile.exists()) {
            FileInputStream mavenWrapperPropertyFileInputStream = null;
            try {
                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
                Properties mavenWrapperProperties = new Properties();
                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
            } catch (IOException e) {
                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
            } finally {
                try {
                    if (mavenWrapperPropertyFileInputStream != null) {
                        mavenWrapperPropertyFileInputStream.close();
                    }
                } catch (IOException e) {
                    // Ignore ...
                }
            }
        }
        System.out.println("- Downloading from: " + url);

        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
        if (!outputFile.getParentFile().exists()) {
            if (!outputFile.getParentFile().mkdirs()) {
                System.out.println(
                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
            }
        }
        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
        try {
            downloadFileFromURL(url, outputFile);
            System.out.println("Done");
            System.exit(0);
        } catch (Throwable e) {
            System.out.println("- Error downloading");
            e.printStackTrace();
            System.exit(1);
        }
    }

    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
            String username = System.getenv("MVNW_USERNAME");
            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
            Authenticator.setDefault(new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });
        }
        URL website = new URL(urlString);
        ReadableByteChannel rbc;
        rbc = Channels.newChannel(website.openStream());
        FileOutputStream fos = new FileOutputStream(destination);
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        fos.close();
        rbc.close();
    }

}


================================================
FILE: config-client/.mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar


================================================
FILE: config-client/mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   M2_HOME - location of maven2's installed home dir
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        export JAVA_HOME="`/usr/libexec/java_home`"
      else
        export JAVA_HOME="/Library/Java/Home"
      fi
    fi
    ;;
esac

if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=`java-config --jre-home`
  fi
fi

if [ -z "$M2_HOME" ] ; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"

  # need this for relative symlinks
  while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
      PRG="$link"
    else
      PRG="`dirname "$PRG"`/$link"
    fi
  done

  saveddir=`pwd`

  M2_HOME=`dirname "$PRG"`/..

  # make it fully qualified
  M2_HOME=`cd "$M2_HOME" && pwd`

  cd "$saveddir"
  # echo Using m2 at $M2_HOME
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --unix "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi

# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
fi

if [ -z "$JAVA_HOME" ]; then
  javaExecutable="`which javac`"
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=`which readlink`
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
      if $darwin ; then
        javaHome="`dirname \"$javaExecutable\"`"
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
      else
        javaExecutable="`readlink -f \"$javaExecutable\"`"
      fi
      javaHome="`dirname \"$javaExecutable\"`"
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi

if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher

# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {

  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi

  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=`cd "$wdir/.."; pwd`
    fi
    # end of workaround
  done
  echo "${basedir}"
}

# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    echo "$(tr -s '\n' ' ' < "$1")"
  fi
}

BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi

##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Found .mvn/wrapper/maven-wrapper.jar"
    fi
else
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
    fi
    if [ -n "$MVNW_REPOURL" ]; then
      jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    else
      jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    fi
    while IFS="=" read key value; do
      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
      esac
    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Downloading from: $jarUrl"
    fi
    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
    if $cygwin; then
      wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
    fi

    if command -v wget > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found wget ... using wget"
        fi
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            wget "$jarUrl" -O "$wrapperJarPath"
        else
            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
        fi
    elif command -v curl > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found curl ... using curl"
        fi
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            curl -o "$wrapperJarPath" "$jarUrl" -f
        else
            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
        fi
        
    else
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Falling back to using Java to download"
        fi
        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
        # For Cygwin, switch paths to Windows format before running javac
        if $cygwin; then
          javaClass=`cygpath --path --windows "$javaClass"`
        fi
        if [ -e "$javaClass" ]; then
            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Compiling MavenWrapperDownloader.java ..."
                fi
                # Compiling the Java class
                ("$JAVA_HOME/bin/javac" "$javaClass")
            fi
            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                # Running the downloader
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Running MavenWrapperDownloader.java ..."
                fi
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################

export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
  echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi

# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS

WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

exec "$JAVACMD" \
  $MAVEN_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"


================================================
FILE: config-client/mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%

@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre

@setlocal

set ERROR_CODE=0

@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal

@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome

echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init

echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

@REM ==== END VALIDATION ====

:init

@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.

set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir

set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir

:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir

:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"

:endDetectBaseDir

IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig

@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%

:endReadAdditionalConfig

SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"

FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)

@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
    if "%MVNW_VERBOSE%" == "true" (
        echo Found %WRAPPER_JAR%
    )
) else (
    if not "%MVNW_REPOURL%" == "" (
        SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    )
    if "%MVNW_VERBOSE%" == "true" (
        echo Couldn't find %WRAPPER_JAR%, downloading it ...
        echo Downloading from: %DOWNLOAD_URL%
    )

    powershell -Command "&{"^
		"$webclient = new-object System.Net.WebClient;"^
		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
		"}"^
		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
		"}"
    if "%MVNW_VERBOSE%" == "true" (
        echo Finished downloading %WRAPPER_JAR%
    )
)
@REM End of extension

@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*

%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end

:error
set ERROR_CODE=1

:end
@endlocal & set ERROR_CODE=%ERROR_CODE%

if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost

@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause

if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%

exit /B %ERROR_CODE%


================================================
FILE: config-client/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.jourwon.springcloud</groupId>
    <artifactId>config-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>config-client</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


================================================
FILE: config-client/src/main/java/com/jourwon/springcloud/ConfigClientApplication.java
================================================
package com.jourwon.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * Description:
 * 
 * @author JourWon
 * @date 2019/12/21 11:59
 */
@EnableDiscoveryClient
@SpringBootApplication
public class ConfigClientApplication {

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

}


================================================
FILE: config-client/src/main/java/com/jourwon/springcloud/controller/ConfigClientController.java
================================================
package com.jourwon.springcloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Description:在ConfigClientController类添加@RefreshScope注解用于刷新配置
 *
 * @author JourWon
 * @date 2019/12/21 11:59
 */
@RefreshScope
@RestController
public class ConfigClientController {

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/configInfo")
    public String getConfigInfo() {
        return configInfo;
    }

}


================================================
FILE: config-client/src/main/resources/bootstrap-amqp1.yml
================================================
server:
  port: 9004

spring:
  application:
    name: config-client
  cloud:
    # config客户端配置
    config:
      # 分支名称
      label: master
      # 启用配置后缀名称
      profile: dev
      # 配置文件名称
      name: config
      discovery:
        enabled: true
        service-id: config-server
  # rabbitmq配置
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/

management:
  endpoints:
    web:
      exposure:
        include: 'refresh'

================================================
FILE: config-client/src/main/resources/bootstrap-amqp2.yml
================================================
server:
  port: 9005

spring:
  application:
    name: config-client
  cloud:
    # config客户端配置
    config:
      # 分支名称
      label: master
      # 启用配置后缀名称
      profile: dev
      # 配置文件名称
      name: config
      discovery:
        enabled: true
        service-id: config-server
  # rabbitmq配置
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/

management:
  endpoints:
    web:
      exposure:
        include: 'refresh'

================================================
FILE: config-client/src/main/resources/bootstrap-cluster.yml
================================================
server:
  port: 9003

spring:
  application:
    name: config-client
  cloud:
    # config客户端配置
    config:
      # 分支名称
      label: master
      # 启用配置后缀名称
      profile: dev
      # 配置文件名称
      name: config
      # config-sever集群搭建
      discovery:
        enabled: true
        service-id: config-server

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/

management:
  endpoints:
    web:
      exposure:
        include: 'refresh'

================================================
FILE: config-client/src/main/resources/bootstrap-security.yml
================================================
server:
  port: 9002

spring:
  application:
    name: config-client
  cloud:
    # config客户端配置
    config:
      # 分支名称
      label: master
      # 启用配置后缀名称
      profile: dev
      # 配置文件名称
      name: config
      # 配置中心地址
      uri: http://localhost:8905
      username: root
      password: 123456

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/

management:
  endpoints:
    web:
      exposure:
        include: 'refresh'

================================================
FILE: config-client/src/main/resources/bootstrap.yml
================================================
server:
  port: 9001

spring:
  application:
    name: config-client
  cloud:
    # config客户端配置
    config:
      # 分支名称
      label: master
      # 启用配置后缀名称
      profile: dev
      # 配置文件名称
      name: config
      # 配置中心地址
      uri: http://localhost:8901

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/

management:
  endpoints:
    web:
      exposure:
        include: 'refresh'

================================================
FILE: config-client/src/test/java/com/jourwon/springcloud/ConfigClientApplicationTests.java
================================================
package com.jourwon.springcloud;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class ConfigClientApplicationTests {

    @Test
    void contextLoads() {
    }

}


================================================
FILE: config-security-server/.gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/


================================================
FILE: config-security-server/.mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
 * Copyright 2012-2019 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.net.*;
import java.io.*;
import java.nio.channels.*;
import java.util.Properties;

public class MavenWrapperDownloader {

    private static final String WRAPPER_VERSION = "0.5.5";
    /**
     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
     */
    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
            + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";

    /**
     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
     * use instead of the default one.
     */
    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
            ".mvn/wrapper/maven-wrapper.properties";

    /**
     * Path where the maven-wrapper.jar will be saved to.
     */
    private static final String MAVEN_WRAPPER_JAR_PATH =
            ".mvn/wrapper/maven-wrapper.jar";

    /**
     * Name of the property which should be used to override the default download url for the wrapper.
     */
    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";

    public static void main(String args[]) {
        System.out.println("- Downloader started");
        File baseDirectory = new File(args[0]);
        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());

        // If the maven-wrapper.properties exists, read it and check if it contains a custom
        // wrapperUrl parameter.
        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
        String url = DEFAULT_DOWNLOAD_URL;
        if (mavenWrapperPropertyFile.exists()) {
            FileInputStream mavenWrapperPropertyFileInputStream = null;
            try {
                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
                Properties mavenWrapperProperties = new Properties();
                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
            } catch (IOException e) {
                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
            } finally {
                try {
                    if (mavenWrapperPropertyFileInputStream != null) {
                        mavenWrapperPropertyFileInputStream.close();
                    }
                } catch (IOException e) {
                    // Ignore ...
                }
            }
        }
        System.out.println("- Downloading from: " + url);

        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
        if (!outputFile.getParentFile().exists()) {
            if (!outputFile.getParentFile().mkdirs()) {
                System.out.println(
                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
            }
        }
        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
        try {
            downloadFileFromURL(url, outputFile);
            System.out.println("Done");
            System.exit(0);
        } catch (Throwable e) {
            System.out.println("- Error downloading");
            e.printStackTrace();
            System.exit(1);
        }
    }

    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
            String username = System.getenv("MVNW_USERNAME");
            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
            Authenticator.setDefault(new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });
        }
        URL website = new URL(urlString);
        ReadableByteChannel rbc;
        rbc = Channels.newChannel(website.openStream());
        FileOutputStream fos = new FileOutputStream(destination);
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        fos.close();
        rbc.close();
    }

}


================================================
FILE: config-security-server/.mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar


================================================
FILE: config-security-server/mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   M2_HOME - location of maven2's installed home dir
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        export JAVA_HOME="`/usr/libexec/java_home`"
      else
        export JAVA_HOME="/Library/Java/Home"
      fi
    fi
    ;;
esac

if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=`java-config --jre-home`
  fi
fi

if [ -z "$M2_HOME" ] ; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"

  # need this for relative symlinks
  while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
      PRG="$link"
    else
      PRG="`dirname "$PRG"`/$link"
    fi
  done

  saveddir=`pwd`

  M2_HOME=`dirname "$PRG"`/..

  # make it fully qualified
  M2_HOME=`cd "$M2_HOME" && pwd`

  cd "$saveddir"
  # echo Using m2 at $M2_HOME
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --unix "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi

# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
fi

if [ -z "$JAVA_HOME" ]; then
  javaExecutable="`which javac`"
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=`which readlink`
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
      if $darwin ; then
        javaHome="`dirname \"$javaExecutable\"`"
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
      else
        javaExecutable="`readlink -f \"$javaExecutable\"`"
      fi
      javaHome="`dirname \"$javaExecutable\"`"
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi

if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher

# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {

  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi

  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=`cd "$wdir/.."; pwd`
    fi
    # end of workaround
  done
  echo "${basedir}"
}

# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    echo "$(tr -s '\n' ' ' < "$1")"
  fi
}

BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi

##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Found .mvn/wrapper/maven-wrapper.jar"
    fi
else
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
    fi
    if [ -n "$MVNW_REPOURL" ]; then
      jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    else
      jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
    fi
    while IFS="=" read key value; do
      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
      esac
    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Downloading from: $jarUrl"
    fi
    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
    if $cygwin; then
      wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
    fi

    if command -v wget > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found wget ... using wget"
        fi
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            wget "$jarUrl" -O "$wrapperJarPath"
        else
            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
        fi
    elif command -v curl > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found curl ... using curl"
        fi
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            curl -o "$wrapperJarPath" "$jarUrl" -f
        else
            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
        fi
        
    else
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Falling back to using Java to download"
        fi
        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
        # For Cygwin, switch paths to Windows format before running javac
        if $cygwin; then
          javaClass=`cygpath --path --windows "$javaClass"`
        fi
        if [ -e "$javaClass" ]; then
            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Compiling MavenWrapperDownloader.java ..."
                fi
                # Compiling the Java class
                ("$JAVA_HOME/bin/javac" "$javaClass")
            fi
            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                # Running the downloader
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Running MavenWrapperDownloader.java ..."
                fi
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################

export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
  echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi

# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS

WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

exec "$JAVACMD" \
  $MAVEN_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"


================================================
FILE: config-security-server/mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%

@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre

@setlocal

set ERROR_CODE=0

@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal

@REM ==== START VALIDATION ====
if 
Download .txt
gitextract_xg76vfy_/

├── .gitignore
├── README.md
├── admin-client/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── AdminClientApplication.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserServiceImpl.java
│       │   └── resources/
│       │       ├── application-eureka.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── AdminClientApplicationTests.java
├── admin-client.log
├── admin-security-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── AdminSecurityServerApplication.java
│       │   │               └── config/
│       │   │                   └── SecuritySecureConfig.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── AdminSecurityServerApplicationTests.java
├── admin-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               └── AdminServerApplication.java
│       │   └── resources/
│       │       ├── application-eureka.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── AdminServerApplicationTests.java
├── api-gateway/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── ApiGatewayApplication.java
│       │   │               ├── config/
│       │   │               │   ├── GatewayConfig.java
│       │   │               │   └── RedisRateLimiterConfig.java
│       │   │               └── controller/
│       │   │                   └── FallbackController.java
│       │   └── resources/
│       │       ├── application-eureka.yml
│       │       ├── application-filter.yml
│       │       ├── application-predicate.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── ApiGatewayApplicationTests.java
├── config-client/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── ConfigClientApplication.java
│       │   │               └── controller/
│       │   │                   └── ConfigClientController.java
│       │   └── resources/
│       │       ├── bootstrap-amqp1.yml
│       │       ├── bootstrap-amqp2.yml
│       │       ├── bootstrap-cluster.yml
│       │       ├── bootstrap-security.yml
│       │       └── bootstrap.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── ConfigClientApplicationTests.java
├── config-security-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               └── ConfigSecurityServerApplication.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── ConfigSecurityServerApplicationTests.java
├── config-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               └── ConfigServerApplication.java
│       │   └── resources/
│       │       ├── application-amqp.yml
│       │       ├── application-replica1.yml
│       │       ├── application-replica2.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── ConfigServerApplicationTests.java
├── consul-config-client/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── ConsulConfigClientApplication.java
│       │   │               └── controller/
│       │   │                   └── ConfigClientController.java
│       │   └── resources/
│       │       ├── application.yml
│       │       └── bootstrap.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── ConsulConfigClientApplicationTests.java
├── consul-ribbon-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── ConsulRibbonServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── RibbonConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserRibbonController.java
│       │   │               └── pojo/
│       │   │                   ├── Result.java
│       │   │                   └── User.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── ConsulRibbonServiceApplicationTests.java
├── consul-user-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── ConsulUserServiceApplication.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserServiceImpl.java
│       │   └── resources/
│       │       ├── application-replica1.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── ConsulUserServiceApplicationTests.java
├── eureka-client/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               └── EurekaClientApplication.java
│       │   └── resources/
│       │       ├── application-replica.yml
│       │       ├── application-security.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── EurekaClientApplicationTests.java
├── eureka-security-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── EurekaSecurityServerApplication.java
│       │   │               └── config/
│       │   │                   └── WebSecurityConfig.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── EurekaSecurityServerApplicationTests.java
├── eureka-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               └── EurekaServerApplication.java
│       │   └── resources/
│       │       ├── application-replica1.yml
│       │       ├── application-replica2.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── EurekaServerApplicationTests.java
├── feign-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── FeignServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── FeignConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserFeignController.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserFallbackService.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── FeignServiceApplicationTests.java
├── hystrix-dashboard/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               └── HystrixDashboardApplication.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── HystrixDashboardApplicationTests.java
├── hystrix-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── HystrixServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── RibbonConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserHystrixController.java
│       │   │               ├── filter/
│       │   │               │   └── HystrixRequestContextFilter.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   └── UserService.java
│       │   └── resources/
│       │       ├── application-replica1.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── HystrixServiceApplicationTests.java
├── nacos-config-client/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── NacosConfigClientApplication.java
│       │   │               └── controller/
│       │   │                   └── ConfigClientController.java
│       │   └── resources/
│       │       ├── application.yml
│       │       └── bootstrap.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── NacosConfigClientApplicationTests.java
├── nacos-ribbon-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── NacosRibbonServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── RibbonConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserRibbonController.java
│       │   │               └── pojo/
│       │   │                   ├── Result.java
│       │   │                   └── User.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── NacosRibbonServiceApplicationTests.java
├── nacos-user-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── NacosUserServiceApplication.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserServiceImpl.java
│       │   └── resources/
│       │       ├── application-replica.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── NacosUserServiceApplicationTests.java
├── oauth2-client/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── Oauth2ClientApplication.java
│       │   │               ├── config/
│       │   │               │   └── SecurityConfig.java
│       │   │               └── controller/
│       │   │                   └── UserController.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── Oauth2ClientApplicationTests.java
├── oauth2-jwt-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── Oauth2JwtServerApplication.java
│       │   │               ├── config/
│       │   │               │   ├── AuthorizationServerConfig.java
│       │   │               │   ├── JwtTokenStoreConfig.java
│       │   │               │   ├── RedisTokenStoreConfig.java
│       │   │               │   ├── ResourceServerConfig.java
│       │   │               │   └── SecurityConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── enhancer/
│       │   │               │   └── JwtTokenEnhancer.java
│       │   │               ├── pojo/
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   └── UserService.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── Oauth2JwtServerApplicationTests.java
├── oauth2-server/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── Oauth2ServerApplication.java
│       │   │               ├── config/
│       │   │               │   ├── AuthorizationServerConfig.java
│       │   │               │   ├── ResourceServerConfig.java
│       │   │               │   └── SecurityConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── pojo/
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   └── UserService.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── Oauth2ServerApplicationTests.java
├── pom.xml
├── ribbon-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── RibbonServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── RibbonConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserRibbonController.java
│       │   │               └── pojo/
│       │   │                   ├── Result.java
│       │   │                   └── User.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── RibbonServiceApplicationTests.java
├── seata-account-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── SeataAccountServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── DataSourceProxyConfig.java
│       │   │               ├── controller/
│       │   │               │   └── AccountController.java
│       │   │               ├── mapper/
│       │   │               │   └── AccountMapper.java
│       │   │               ├── pojo/
│       │   │               │   ├── Account.java
│       │   │               │   └── Result.java
│       │   │               └── service/
│       │   │                   ├── AccountService.java
│       │   │                   └── impl/
│       │   │                       └── AccountServiceImpl.java
│       │   └── resources/
│       │       ├── account.sql
│       │       ├── application.yml
│       │       ├── file.conf
│       │       ├── mapper/
│       │       │   └── AccountMapper.xml
│       │       └── registry.conf
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── SeataAccountServiceApplicationTests.java
├── seata-order-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── SeataOrderServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── DataSourceProxyConfig.java
│       │   │               ├── controller/
│       │   │               │   └── OrderController.java
│       │   │               ├── mapper/
│       │   │               │   └── OrderMapper.java
│       │   │               ├── pojo/
│       │   │               │   ├── Order.java
│       │   │               │   └── Result.java
│       │   │               └── service/
│       │   │                   ├── AccountService.java
│       │   │                   ├── OrderService.java
│       │   │                   ├── StorageService.java
│       │   │                   └── impl/
│       │   │                       └── OrderServiceImpl.java
│       │   └── resources/
│       │       ├── application.yml
│       │       ├── file.conf
│       │       ├── mapper/
│       │       │   └── OrderMapper.xml
│       │       ├── order.sql
│       │       └── registry.conf
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── SeataOrderServiceApplicationTests.java
├── seata-storage-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── SeataStorageServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── DataSourceProxyConfig.java
│       │   │               ├── controller/
│       │   │               │   └── StorageController.java
│       │   │               ├── mapper/
│       │   │               │   └── StorageMapper.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── Storage.java
│       │   │               └── service/
│       │   │                   ├── StorageService.java
│       │   │                   └── impl/
│       │   │                       └── StorageServiceImpl.java
│       │   └── resources/
│       │       ├── application.yml
│       │       ├── file.conf
│       │       ├── mapper/
│       │       │   └── StorageMapper.xml
│       │       ├── registry.conf
│       │       └── storage.sql
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── SeataStorageServiceApplicationTests.java
├── sentinel-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── SentinelServiceApplication.java
│       │   │               ├── config/
│       │   │               │   └── RibbonConfig.java
│       │   │               ├── controller/
│       │   │               │   ├── CircleBreakerController.java
│       │   │               │   ├── RateLimitController.java
│       │   │               │   └── UserFeignController.java
│       │   │               ├── handler/
│       │   │               │   └── CustomBlockHandler.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserFallbackService.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── SentinelServiceApplicationTests.java
├── turbine-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               └── TurbineServiceApplication.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── TurbineServiceApplicationTests.java
├── user-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── jourwon/
│       │   │           └── springcloud/
│       │   │               ├── UserServiceApplication.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── pojo/
│       │   │               │   ├── Result.java
│       │   │               │   └── User.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserServiceImpl.java
│       │   └── resources/
│       │       ├── application-replica.yml
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── jourwon/
│                       └── springcloud/
│                           └── UserServiceApplicationTests.java
└── zuul-proxy/
    ├── .gitignore
    ├── .mvn/
    │   └── wrapper/
    │       ├── MavenWrapperDownloader.java
    │       ├── maven-wrapper.jar
    │       └── maven-wrapper.properties
    ├── mvnw
    ├── mvnw.cmd
    ├── pom.xml
    └── src/
        ├── main/
        │   ├── java/
        │   │   └── com/
        │   │       └── jourwon/
        │   │           └── springcloud/
        │   │               ├── ZuulProxyApplication.java
        │   │               └── filter/
        │   │                   └── PreLogFilter.java
        │   └── resources/
        │       └── application.yml
        └── test/
            └── java/
                └── com/
                    └── jourwon/
                        └── springcloud/
                            └── ZuulProxyApplicationTests.java
Download .txt
SYMBOL INDEX (766 symbols across 195 files)

FILE: admin-client/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: admin-client/src/main/java/com/jourwon/springcloud/AdminClientApplication.java
  class AdminClientApplication (line 13) | @EnableDiscoveryClient
    method main (line 17) | public static void main(String[] args) {

FILE: admin-client/src/main/java/com/jourwon/springcloud/controller/UserController.java
  class UserController (line 19) | @RestController
    method insert (line 28) | @PostMapping("/insert")
    method getUser (line 34) | @GetMapping("/{id}")
    method listUsersByIds (line 41) | @GetMapping("/listUsersByIds")
    method getByUsername (line 48) | @GetMapping("/getByUsername")
    method update (line 54) | @PostMapping("/update")
    method delete (line 60) | @PostMapping("/delete/{id}")

FILE: admin-client/src/main/java/com/jourwon/springcloud/pojo/Result.java
  class Result (line 9) | public class Result<T> {
    method Result (line 17) | public Result() {
    method Result (line 20) | public Result(T data, String message, int code) {
    method Result (line 26) | public Result(String message, Integer code) {
    method Result (line 30) | public Result(T data) {
    method getData (line 34) | public T getData() {
    method setData (line 38) | public void setData(T data) {
    method getMessage (line 42) | public String getMessage() {
    method setMessage (line 46) | public void setMessage(String message) {
    method getCode (line 50) | public int getCode() {
    method setCode (line 54) | public void setCode(int code) {

FILE: admin-client/src/main/java/com/jourwon/springcloud/pojo/User.java
  class User (line 9) | public class User {
    method User (line 15) | public User() {
    method User (line 18) | public User(Long id, String username, String password) {
    method getId (line 24) | public Long getId() {
    method setId (line 28) | public void setId(Long id) {
    method getUsername (line 32) | public String getUsername() {
    method setUsername (line 36) | public void setUsername(String username) {
    method getPassword (line 40) | public String getPassword() {
    method setPassword (line 44) | public void setPassword(String password) {

FILE: admin-client/src/main/java/com/jourwon/springcloud/service/UserService.java
  type UserService (line 13) | public interface UserService {
    method insert (line 15) | void insert(User user);
    method getUser (line 17) | User getUser(Long id);
    method update (line 19) | void update(User user);
    method delete (line 21) | void delete(Long id);
    method getByUsername (line 23) | User getByUsername(String username);
    method listUsersByIds (line 25) | List<User> listUsersByIds(List<Long> ids);

FILE: admin-client/src/main/java/com/jourwon/springcloud/service/impl/UserServiceImpl.java
  class UserServiceImpl (line 19) | @Service
    method insert (line 24) | @Override
    method getUser (line 29) | @Override
    method update (line 38) | @Override
    method delete (line 46) | @Override
    method getByUsername (line 54) | @Override
    method listUsersByIds (line 63) | @Override
    method initData (line 68) | @PostConstruct

FILE: admin-client/src/test/java/com/jourwon/springcloud/AdminClientApplicationTests.java
  class AdminClientApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: admin-security-server/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: admin-security-server/src/main/java/com/jourwon/springcloud/AdminSecurityServerApplication.java
  class AdminSecurityServerApplication (line 14) | @EnableAdminServer
    method main (line 19) | public static void main(String[] args) {

FILE: admin-security-server/src/main/java/com/jourwon/springcloud/config/SecuritySecureConfig.java
  class SecuritySecureConfig (line 16) | @Configuration
    method SecuritySecureConfig (line 21) | public SecuritySecureConfig(AdminServerProperties adminServerPropertie...
    method configure (line 25) | @Override

FILE: admin-security-server/src/test/java/com/jourwon/springcloud/AdminSecurityServerApplicationTests.java
  class AdminSecurityServerApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: admin-server/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: admin-server/src/main/java/com/jourwon/springcloud/AdminServerApplication.java
  class AdminServerApplication (line 14) | @EnableDiscoveryClient
    method main (line 19) | public static void main(String[] args) {

FILE: admin-server/src/test/java/com/jourwon/springcloud/AdminServerApplicationTests.java
  class AdminServerApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: api-gateway/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: api-gateway/src/main/java/com/jourwon/springcloud/ApiGatewayApplication.java
  class ApiGatewayApplication (line 13) | @EnableDiscoveryClient
    method main (line 17) | public static void main(String[] args) {

FILE: api-gateway/src/main/java/com/jourwon/springcloud/config/GatewayConfig.java
  class GatewayConfig (line 11) | @Configuration

FILE: api-gateway/src/main/java/com/jourwon/springcloud/config/RedisRateLimiterConfig.java
  class RedisRateLimiterConfig (line 14) | @Configuration
    method userKeyResolver (line 17) | @Bean
    method ipKeyResolver (line 23) | @Bean

FILE: api-gateway/src/main/java/com/jourwon/springcloud/controller/FallbackController.java
  class FallbackController (line 15) | @RestController
    method fallback (line 18) | @GetMapping("/fallback")

FILE: api-gateway/src/test/java/com/jourwon/springcloud/ApiGatewayApplicationTests.java
  class ApiGatewayApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: config-client/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: config-client/src/main/java/com/jourwon/springcloud/ConfigClientApplication.java
  class ConfigClientApplication (line 13) | @EnableDiscoveryClient
    method main (line 17) | public static void main(String[] args) {

FILE: config-client/src/main/java/com/jourwon/springcloud/controller/ConfigClientController.java
  class ConfigClientController (line 14) | @RefreshScope
    method getConfigInfo (line 21) | @GetMapping("/configInfo")

FILE: config-client/src/test/java/com/jourwon/springcloud/ConfigClientApplicationTests.java
  class ConfigClientApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: config-security-server/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: config-security-server/src/main/java/com/jourwon/springcloud/ConfigSecurityServerApplication.java
  class ConfigSecurityServerApplication (line 14) | @EnableConfigServer
    method main (line 19) | public static void main(String[] args) {

FILE: config-security-server/src/test/java/com/jourwon/springcloud/ConfigSecurityServerApplicationTests.java
  class ConfigSecurityServerApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: config-server/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: config-server/src/main/java/com/jourwon/springcloud/ConfigServerApplication.java
  class ConfigServerApplication (line 14) | @EnableConfigServer
    method main (line 19) | public static void main(String[] args) {

FILE: config-server/src/test/java/com/jourwon/springcloud/ConfigServerApplicationTests.java
  class ConfigServerApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: consul-config-client/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: consul-config-client/src/main/java/com/jourwon/springcloud/ConsulConfigClientApplication.java
  class ConsulConfigClientApplication (line 13) | @EnableDiscoveryClient
    method main (line 17) | public static void main(String[] args) {

FILE: consul-config-client/src/main/java/com/jourwon/springcloud/controller/ConfigClientController.java
  class ConfigClientController (line 14) | @RefreshScope
    method getConfigInfo (line 21) | @GetMapping("/configInfo")

FILE: consul-config-client/src/test/java/com/jourwon/springcloud/ConsulConfigClientApplicationTests.java
  class ConsulConfigClientApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: consul-ribbon-service/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: consul-ribbon-service/src/main/java/com/jourwon/springcloud/ConsulRibbonServiceApplication.java
  class ConsulRibbonServiceApplication (line 13) | @EnableDiscoveryClient
    method main (line 17) | public static void main(String[] args) {

FILE: consul-ribbon-service/src/main/java/com/jourwon/springcloud/config/RibbonConfig.java
  class RibbonConfig (line 14) | @Configuration
    method restTemplate (line 17) | @Bean

FILE: consul-ribbon-service/src/main/java/com/jourwon/springcloud/controller/UserRibbonController.java
  class UserRibbonController (line 17) | @RestController
    method getUser (line 27) | @GetMapping("/{id}")
    method getByUsername (line 32) | @GetMapping("/getByUsername")
    method getEntityByUsername (line 37) | @GetMapping("/getEntityByUsername")
    method insert (line 47) | @PostMapping("/insert")
    method update (line 52) | @PostMapping("/update")
    method delete (line 57) | @PostMapping("/delete/{id}")

FILE: consul-ribbon-service/src/main/java/com/jourwon/springcloud/pojo/Result.java
  class Result (line 9) | public class Result<T> {
    method Result (line 17) | public Result() {
    method Result (line 20) | public Result(T data, String message, int code) {
    method Result (line 26) | public Result(String message, Integer code) {
    method Result (line 30) | public Result(T data) {
    method getData (line 34) | public T getData() {
    method setData (line 38) | public void setData(T data) {
    method getMessage (line 42) | public String getMessage() {
    method setMessage (line 46) | public void setMessage(String message) {
    method getCode (line 50) | public int getCode() {
    method setCode (line 54) | public void setCode(int code) {

FILE: consul-ribbon-service/src/main/java/com/jourwon/springcloud/pojo/User.java
  class User (line 9) | public class User {
    method User (line 15) | public User() {
    method User (line 18) | public User(Long id, String username, String password) {
    method getId (line 24) | public Long getId() {
    method setId (line 28) | public void setId(Long id) {
    method getUsername (line 32) | public String getUsername() {
    method setUsername (line 36) | public void setUsername(String username) {
    method getPassword (line 40) | public String getPassword() {
    method setPassword (line 44) | public void setPassword(String password) {

FILE: consul-ribbon-service/src/test/java/com/jourwon/springcloud/ConsulRibbonServiceApplicationTests.java
  class ConsulRibbonServiceApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: consul-user-service/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: consul-user-service/src/main/java/com/jourwon/springcloud/ConsulUserServiceApplication.java
  class ConsulUserServiceApplication (line 13) | @EnableDiscoveryClient
    method main (line 17) | public static void main(String[] args) {

FILE: consul-user-service/src/main/java/com/jourwon/springcloud/controller/UserController.java
  class UserController (line 19) | @RestController
    method insert (line 28) | @PostMapping("/insert")
    method getUser (line 34) | @GetMapping("/{id}")
    method listUsersByIds (line 41) | @GetMapping("/listUsersByIds")
    method getByUsername (line 48) | @GetMapping("/getByUsername")
    method update (line 54) | @PostMapping("/update")
    method delete (line 60) | @PostMapping("/delete/{id}")

FILE: consul-user-service/src/main/java/com/jourwon/springcloud/pojo/Result.java
  class Result (line 9) | public class Result<T> {
    method Result (line 17) | public Result() {
    method Result (line 20) | public Result(T data, String message, int code) {
    method Result (line 26) | public Result(String message, Integer code) {
    method Result (line 30) | public Result(T data) {
    method getData (line 34) | public T getData() {
    method setData (line 38) | public void setData(T data) {
    method getMessage (line 42) | public String getMessage() {
    method setMessage (line 46) | public void setMessage(String message) {
    method getCode (line 50) | public int getCode() {
    method setCode (line 54) | public void setCode(int code) {

FILE: consul-user-service/src/main/java/com/jourwon/springcloud/pojo/User.java
  class User (line 9) | public class User {
    method User (line 15) | public User() {
    method User (line 18) | public User(Long id, String username, String password) {
    method getId (line 24) | public Long getId() {
    method setId (line 28) | public void setId(Long id) {
    method getUsername (line 32) | public String getUsername() {
    method setUsername (line 36) | public void setUsername(String username) {
    method getPassword (line 40) | public String getPassword() {
    method setPassword (line 44) | public void setPassword(String password) {

FILE: consul-user-service/src/main/java/com/jourwon/springcloud/service/UserService.java
  type UserService (line 13) | public interface UserService {
    method insert (line 15) | void insert(User user);
    method getUser (line 17) | User getUser(Long id);
    method update (line 19) | void update(User user);
    method delete (line 21) | void delete(Long id);
    method getByUsername (line 23) | User getByUsername(String username);
    method listUsersByIds (line 25) | List<User> listUsersByIds(List<Long> ids);

FILE: consul-user-service/src/main/java/com/jourwon/springcloud/service/impl/UserServiceImpl.java
  class UserServiceImpl (line 19) | @Service
    method insert (line 24) | @Override
    method getUser (line 29) | @Override
    method update (line 38) | @Override
    method delete (line 46) | @Override
    method getByUsername (line 54) | @Override
    method listUsersByIds (line 63) | @Override
    method initData (line 68) | @PostConstruct

FILE: consul-user-service/src/test/java/com/jourwon/springcloud/ConsulUserServiceApplicationTests.java
  class ConsulUserServiceApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: eureka-client/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: eureka-client/src/main/java/com/jourwon/springcloud/EurekaClientApplication.java
  class EurekaClientApplication (line 13) | @EnableDiscoveryClient
    method main (line 17) | public static void main(String[] args) {

FILE: eureka-client/src/test/java/com/jourwon/springcloud/EurekaClientApplicationTests.java
  class EurekaClientApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: eureka-security-server/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: eureka-security-server/src/main/java/com/jourwon/springcloud/EurekaSecurityServerApplication.java
  class EurekaSecurityServerApplication (line 13) | @EnableEurekaServer
    method main (line 17) | public static void main(String[] args) {

FILE: eureka-security-server/src/main/java/com/jourwon/springcloud/config/WebSecurityConfig.java
  class WebSecurityConfig (line 13) | @EnableWebSecurity
    method configure (line 16) | @Override

FILE: eureka-security-server/src/test/java/com/jourwon/springcloud/EurekaSecurityServerApplicationTests.java
  class EurekaSecurityServerApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: eureka-server/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: eureka-server/src/main/java/com/jourwon/springcloud/EurekaServerApplication.java
  class EurekaServerApplication (line 14) | @EnableEurekaServer
    method main (line 18) | public static void main(String[] args) {

FILE: eureka-server/src/test/java/com/jourwon/springcloud/EurekaServerApplicationTests.java
  class EurekaServerApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: feign-service/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: feign-service/src/main/java/com/jourwon/springcloud/FeignServiceApplication.java
  class FeignServiceApplication (line 15) | @EnableFeignClients
    method main (line 20) | public static void main(String[] args) {

FILE: feign-service/src/main/java/com/jourwon/springcloud/config/FeignConfig.java
  class FeignConfig (line 13) | @Configuration
    method level (line 16) | @Bean

FILE: feign-service/src/main/java/com/jourwon/springcloud/controller/UserFeignController.java
  class UserFeignController (line 17) | @RestController
    method insert (line 24) | @PostMapping("/insert")
    method getUser (line 29) | @GetMapping("/{id}")
    method listUsersByIds (line 34) | @GetMapping("/listUsersByIds")
    method getByUsername (line 39) | @GetMapping("/getByUsername")
    method update (line 44) | @PostMapping("/update")
    method delete (line 49) | @PostMapping("/delete/{id}")

FILE: feign-service/src/main/java/com/jourwon/springcloud/pojo/Result.java
  class Result (line 9) | public class Result<T> {
    method Result (line 17) | public Result() {
    method Result (line 20) | public Result(T data, String message, int code) {
    method Result (line 26) | public Result(String message, Integer code) {
    method Result (line 30) | public Result(T data) {
    method getData (line 34) | public T getData() {
    method setData (line 38) | public void setData(T data) {
    method getMessage (line 42) | public String getMessage() {
    method setMessage (line 46) | public void setMessage(String message) {
    method getCode (line 50) | public int getCode() {
    method setCode (line 54) | public void setCode(int code) {

FILE: feign-service/src/main/java/com/jourwon/springcloud/pojo/User.java
  class User (line 9) | public class User {
    method User (line 15) | public User() {
    method User (line 18) | public User(Long id, String username, String password) {
    method getId (line 24) | public Long getId() {
    method setId (line 28) | public void setId(Long id) {
    method getUsername (line 32) | public String getUsername() {
    method setUsername (line 36) | public void setUsername(String username) {
    method getPassword (line 40) | public String getPassword() {
    method setPassword (line 44) | public void setPassword(String password) {

FILE: feign-service/src/main/java/com/jourwon/springcloud/service/UserService.java
  type UserService (line 18) | @FeignClient(value = "user-service", fallback = UserFallbackService.class)
    method insert (line 21) | @PostMapping("/user/insert")
    method getUser (line 24) | @GetMapping("/user/{id}")
    method listUsersByIds (line 27) | @GetMapping("/user/listUsersByIds")
    method getByUsername (line 30) | @GetMapping("/user/getByUsername")
    method update (line 33) | @PostMapping("/user/update")
    method delete (line 36) | @PostMapping("/user/delete/{id}")

FILE: feign-service/src/main/java/com/jourwon/springcloud/service/impl/UserFallbackService.java
  class UserFallbackService (line 16) | @Component
    method insert (line 19) | @Override
    method getUser (line 24) | @Override
    method listUsersByIds (line 29) | @Override
    method getByUsername (line 34) | @Override
    method update (line 39) | @Override
    method delete (line 44) | @Override

FILE: feign-service/src/test/java/com/jourwon/springcloud/FeignServiceApplicationTests.java
  class FeignServiceApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: hystrix-dashboard/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: hystrix-dashboard/src/main/java/com/jourwon/springcloud/HystrixDashboardApplication.java
  class HystrixDashboardApplication (line 14) | @EnableHystrixDashboard
    method main (line 19) | public static void main(String[] args) {

FILE: hystrix-dashboard/src/test/java/com/jourwon/springcloud/HystrixDashboardApplicationTests.java
  class HystrixDashboardApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: hystrix-service/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: hystrix-service/src/main/java/com/jourwon/springcloud/HystrixServiceApplication.java
  class HystrixServiceApplication (line 14) | @EnableCircuitBreaker
    method main (line 19) | public static void main(String[] args) {

FILE: hystrix-service/src/main/java/com/jourwon/springcloud/config/RibbonConfig.java
  class RibbonConfig (line 14) | @Configuration
    method restTemplate (line 17) | @Bean

FILE: hystrix-service/src/main/java/com/jourwon/springcloud/controller/UserHystrixController.java
  class UserHystrixController (line 22) | @RestController
    method testFallback (line 29) | @GetMapping("/testFallback/{id}")
    method testException (line 34) | @GetMapping("/testException/{id}")
    method getUserCommand (line 39) | @GetMapping("/testCommand/{id}")
    method testCache (line 44) | @GetMapping("/testCache/{id}")
    method testRemoveCache (line 52) | @GetMapping("/testRemoveCache/{id}")
    method testCollapser (line 60) | @GetMapping("/testCollapser")

FILE: hystrix-service/src/main/java/com/jourwon/springcloud/filter/HystrixRequestContextFilter.java
  class HystrixRequestContextFilter (line 16) | @Component
    method doFilter (line 20) | @Override

FILE: hystrix-service/src/main/java/com/jourwon/springcloud/pojo/Result.java
  class Result (line 9) | public class Result<T> {
    method Result (line 17) | public Result() {
    method Result (line 20) | public Result(T data, String message, int code) {
    method Result (line 26) | public Result(String message, Integer code) {
    method Result (line 30) | public Result(T data) {
    method getData (line 34) | public T getData() {
    method setData (line 38) | public void setData(T data) {
    method getMessage (line 42) | public String getMessage() {
    method setMessage (line 46) | public void setMessage(String message) {
    method getCode (line 50) | public int getCode() {
    method setCode (line 54) | public void setCode(int code) {

FILE: hystrix-service/src/main/java/com/jourwon/springcloud/pojo/User.java
  class User (line 9) | public class User {
    method User (line 15) | public User() {
    method User (line 18) | public User(Long id, String username, String password) {
    method getId (line 24) | public Long getId() {
    method setId (line 28) | public void setId(Long id) {
    method getUsername (line 32) | public String getUsername() {
    method setUsername (line 36) | public void setUsername(String username) {
    method getPassword (line 40) | public String getPassword() {
    method setPassword (line 44) | public void setPassword(String password) {

FILE: hystrix-service/src/main/java/com/jourwon/springcloud/service/UserService.java
  class UserService (line 31) | @Service
    method getUser (line 42) | @HystrixCommand(fallbackMethod = "fallbackMethod1")
    method fallbackMethod1 (line 53) | public Result fallbackMethod1(@PathVariable Long id) {
    method getUserException (line 57) | @HystrixCommand(fallbackMethod = "fallbackMethod2", ignoreExceptions =...
    method fallbackMethod2 (line 68) | public Result fallbackMethod2(@PathVariable Long id, Throwable e) {
    method getUserCommand (line 73) | @HystrixCommand(fallbackMethod = "fallbackMethod1",
    method getUserCache (line 82) | @CacheResult(cacheKeyMethod = "getCacheKey")
    method getCacheKey (line 94) | public String getCacheKey(Long id) {
    method removeCache (line 98) | @HystrixCommand
    method getUserFuture (line 105) | @HystrixCollapser(batchMethod = "listUsersByIds",collapserProperties = {
    method listUsersByIds (line 121) | @HystrixCommand

FILE: hystrix-service/src/test/java/com/jourwon/springcloud/HystrixServiceApplicationTests.java
  class HystrixServiceApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: nacos-config-client/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: nacos-config-client/src/main/java/com/jourwon/springcloud/NacosConfigClientApplication.java
  class NacosConfigClientApplication (line 13) | @EnableDiscoveryClient
    method main (line 17) | public static void main(String[] args) {

FILE: nacos-config-client/src/main/java/com/jourwon/springcloud/controller/ConfigClientController.java
  class ConfigClientController (line 15) | @RefreshScope
    method getConfigInfo (line 22) | @GetMapping("/configInfo")

FILE: nacos-config-client/src/test/java/com/jourwon/springcloud/NacosConfigClientApplicationTests.java
  class NacosConfigClientApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: nacos-ribbon-service/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: nacos-ribbon-service/src/main/java/com/jourwon/springcloud/NacosRibbonServiceApplication.java
  class NacosRibbonServiceApplication (line 13) | @EnableDiscoveryClient
    method main (line 17) | public static void main(String[] args) {

FILE: nacos-ribbon-service/src/main/java/com/jourwon/springcloud/config/RibbonConfig.java
  class RibbonConfig (line 14) | @Configuration
    method restTemplate (line 17) | @Bean

FILE: nacos-ribbon-service/src/main/java/com/jourwon/springcloud/controller/UserRibbonController.java
  class UserRibbonController (line 17) | @RestController
    method getUser (line 27) | @GetMapping("/{id}")
    method getByUsername (line 32) | @GetMapping("/getByUsername")
    method getEntityByUsername (line 37) | @GetMapping("/getEntityByUsername")
    method insert (line 47) | @PostMapping("/insert")
    method update (line 52) | @PostMapping("/update")
    method delete (line 57) | @PostMapping("/delete/{id}")

FILE: nacos-ribbon-service/src/main/java/com/jourwon/springcloud/pojo/Result.java
  class Result (line 9) | public class Result<T> {
    method Result (line 17) | public Result() {
    method Result (line 20) | public Result(T data, String message, int code) {
    method Result (line 26) | public Result(String message, Integer code) {
    method Result (line 30) | public Result(T data) {
    method getData (line 34) | public T getData() {
    method setData (line 38) | public void setData(T data) {
    method getMessage (line 42) | public String getMessage() {
    method setMessage (line 46) | public void setMessage(String message) {
    method getCode (line 50) | public int getCode() {
    method setCode (line 54) | public void setCode(int code) {

FILE: nacos-ribbon-service/src/main/java/com/jourwon/springcloud/pojo/User.java
  class User (line 9) | public class User {
    method User (line 15) | public User() {
    method User (line 18) | public User(Long id, String username, String password) {
    method getId (line 24) | public Long getId() {
    method setId (line 28) | public void setId(Long id) {
    method getUsername (line 32) | public String getUsername() {
    method setUsername (line 36) | public void setUsername(String username) {
    method getPassword (line 40) | public String getPassword() {
    method setPassword (line 44) | public void setPassword(String password) {

FILE: nacos-ribbon-service/src/test/java/com/jourwon/springcloud/NacosRibbonServiceApplicationTests.java
  class NacosRibbonServiceApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: nacos-user-service/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: nacos-user-service/src/main/java/com/jourwon/springcloud/NacosUserServiceApplication.java
  class NacosUserServiceApplication (line 13) | @EnableDiscoveryClient
    method main (line 17) | public static void main(String[] args) {

FILE: nacos-user-service/src/main/java/com/jourwon/springcloud/controller/UserController.java
  class UserController (line 19) | @RestController
    method insert (line 28) | @PostMapping("/insert")
    method getUser (line 34) | @GetMapping("/{id}")
    method listUsersByIds (line 41) | @GetMapping("/listUsersByIds")
    method getByUsername (line 48) | @GetMapping("/getByUsername")
    method update (line 54) | @PostMapping("/update")
    method delete (line 60) | @PostMapping("/delete/{id}")

FILE: nacos-user-service/src/main/java/com/jourwon/springcloud/pojo/Result.java
  class Result (line 9) | public class Result<T> {
    method Result (line 17) | public Result() {
    method Result (line 20) | public Result(T data, String message, int code) {
    method Result (line 26) | public Result(String message, Integer code) {
    method Result (line 30) | public Result(T data) {
    method getData (line 34) | public T getData() {
    method setData (line 38) | public void setData(T data) {
    method getMessage (line 42) | public String getMessage() {
    method setMessage (line 46) | public void setMessage(String message) {
    method getCode (line 50) | public int getCode() {
    method setCode (line 54) | public void setCode(int code) {

FILE: nacos-user-service/src/main/java/com/jourwon/springcloud/pojo/User.java
  class User (line 9) | public class User {
    method User (line 15) | public User() {
    method User (line 18) | public User(Long id, String username, String password) {
    method getId (line 24) | public Long getId() {
    method setId (line 28) | public void setId(Long id) {
    method getUsername (line 32) | public String getUsername() {
    method setUsername (line 36) | public void setUsername(String username) {
    method getPassword (line 40) | public String getPassword() {
    method setPassword (line 44) | public void setPassword(String password) {

FILE: nacos-user-service/src/main/java/com/jourwon/springcloud/service/UserService.java
  type UserService (line 13) | public interface UserService {
    method insert (line 15) | void insert(User user);
    method getUser (line 17) | User getUser(Long id);
    method update (line 19) | void update(User user);
    method delete (line 21) | void delete(Long id);
    method getByUsername (line 23) | User getByUsername(String username);
    method listUsersByIds (line 25) | List<User> listUsersByIds(List<Long> ids);

FILE: nacos-user-service/src/main/java/com/jourwon/springcloud/service/impl/UserServiceImpl.java
  class UserServiceImpl (line 19) | @Service
    method insert (line 24) | @Override
    method getUser (line 29) | @Override
    method update (line 38) | @Override
    method delete (line 46) | @Override
    method getByUsername (line 54) | @Override
    method listUsersByIds (line 63) | @Override
    method initData (line 68) | @PostConstruct

FILE: nacos-user-service/src/test/java/com/jourwon/springcloud/NacosUserServiceApplicationTests.java
  class NacosUserServiceApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: oauth2-client/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: oauth2-client/src/main/java/com/jourwon/springcloud/Oauth2ClientApplication.java
  class Oauth2ClientApplication (line 13) | @EnableOAuth2Sso
    method main (line 17) | public static void main(String[] args) {

FILE: oauth2-client/src/main/java/com/jourwon/springcloud/config/SecurityConfig.java
  class SecurityConfig (line 14) | @Configuration

FILE: oauth2-client/src/main/java/com/jourwon/springcloud/controller/UserController.java
  class UserController (line 15) | @RestController
    method getCurrentUser (line 19) | @GetMapping("/getCurrentUser")
    method adminAuth (line 25) | @PreAuthorize("hasAuthority('admin')")

FILE: oauth2-client/src/test/java/com/jourwon/springcloud/Oauth2ClientApplicationTests.java
  class Oauth2ClientApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: oauth2-jwt-server/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: oauth2-jwt-server/src/main/java/com/jourwon/springcloud/Oauth2JwtServerApplication.java
  class Oauth2JwtServerApplication (line 12) | @SpringBootApplication
    method main (line 15) | public static void main(String[] args) {

FILE: oauth2-jwt-server/src/main/java/com/jourwon/springcloud/config/AuthorizationServerConfig.java
  class AuthorizationServerConfig (line 29) | @Configuration
    method configure (line 58) | @Override
    method configure (line 75) | @Override
    method configure (line 98) | @Override

FILE: oauth2-jwt-server/src/main/java/com/jourwon/springcloud/config/JwtTokenStoreConfig.java
  class JwtTokenStoreConfig (line 17) | @Configuration
    method jwtTokenStore (line 20) | @Bean
    method jwtTokenEnhancer (line 26) | @Bean
    method jwtAccessTokenConverter (line 31) | @Bean

FILE: oauth2-jwt-server/src/main/java/com/jourwon/springcloud/config/RedisTokenStoreConfig.java
  class RedisTokenStoreConfig (line 16) | @Configuration
    method redisTokenStore (line 22) | @Bean

FILE: oauth2-jwt-server/src/main/java/com/jourwon/springcloud/config/ResourceServerConfig.java
  class ResourceServerConfig (line 14) | @Configuration
    method configure (line 18) | @Override

FILE: oauth2-jwt-server/src/main/java/com/jourwon/springcloud/config/SecurityConfig.java
  class SecurityConfig (line 18) | @Configuration
    method passwordEncoder (line 22) | @Bean
    method authenticationManagerBean (line 27) | @Bean
    method configure (line 33) | @Override

FILE: oauth2-jwt-server/src/main/java/com/jourwon/springcloud/controller/UserController.java
  class UserController (line 19) | @RestController
    method getCurrentUser (line 23) | @GetMapping("/getCurrentUser")

FILE: oauth2-jwt-server/src/main/java/com/jourwon/springcloud/enhancer/JwtTokenEnhancer.java
  class JwtTokenEnhancer (line 17) | public class JwtTokenEnhancer implements TokenEnhancer {
    method enhance (line 19) | @Override

FILE: oauth2-jwt-server/src/main/java/com/jourwon/springcloud/pojo/User.java
  class User (line 15) | public class User implements UserDetails {
    method User (line 21) | public User(String username, String password,List<GrantedAuthority> au...
    method getAuthorities (line 27) | @Override
    method getPassword (line 32) | @Override
    method getUsername (line 37) | @Override
    method isAccountNonExpired (line 42) | @Override
    method isAccountNonLocked (line 47) | @Override
    method isCredentialsNonExpired (line 52) | @Override
    method isEnabled (line 57) | @Override

FILE: oauth2-jwt-server/src/main/java/com/jourwon/springcloud/service/UserService.java
  class UserService (line 24) | @Service
    method initData (line 32) | @PostConstruct
    method loadUserByUsername (line 42) | @Override

FILE: oauth2-jwt-server/src/test/java/com/jourwon/springcloud/Oauth2JwtServerApplicationTests.java
  class Oauth2JwtServerApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: oauth2-server/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: oauth2-server/src/main/java/com/jourwon/springcloud/Oauth2ServerApplication.java
  class Oauth2ServerApplication (line 12) | @SpringBootApplication
    method main (line 15) | public static void main(String[] args) {

FILE: oauth2-server/src/main/java/com/jourwon/springcloud/config/AuthorizationServerConfig.java
  class AuthorizationServerConfig (line 19) | @Configuration
    method configure (line 38) | @Override
    method configure (line 44) | @Override

FILE: oauth2-server/src/main/java/com/jourwon/springcloud/config/ResourceServerConfig.java
  class ResourceServerConfig (line 14) | @Configuration
    method configure (line 18) | @Override

FILE: oauth2-server/src/main/java/com/jourwon/springcloud/config/SecurityConfig.java
  class SecurityConfig (line 18) | @Configuration
    method passwordEncoder (line 22) | @Bean
    method authenticationManagerBean (line 27) | @Bean
    method configure (line 33) | @Override

FILE: oauth2-server/src/main/java/com/jourwon/springcloud/controller/UserController.java
  class UserController (line 14) | @RestController
    method getCurrentUser (line 18) | @GetMapping("/getCurrentUser")

FILE: oauth2-server/src/main/java/com/jourwon/springcloud/pojo/User.java
  class User (line 15) | public class User implements UserDetails {
    method User (line 21) | public User(String username, String password,List<GrantedAuthority> au...
    method getAuthorities (line 27) | @Override
    method getPassword (line 32) | @Override
    method getUsername (line 37) | @Override
    method isAccountNonExpired (line 42) | @Override
    method isAccountNonLocked (line 47) | @Override
    method isCredentialsNonExpired (line 52) | @Override
    method isEnabled (line 57) | @Override

FILE: oauth2-server/src/main/java/com/jourwon/springcloud/service/UserService.java
  class UserService (line 24) | @Service
    method initData (line 32) | @PostConstruct
    method loadUserByUsername (line 42) | @Override

FILE: oauth2-server/src/test/java/com/jourwon/springcloud/Oauth2ServerApplicationTests.java
  class Oauth2ServerApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: ribbon-service/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: ribbon-service/src/main/java/com/jourwon/springcloud/RibbonServiceApplication.java
  class RibbonServiceApplication (line 13) | @EnableDiscoveryClient
    method main (line 17) | public static void main(String[] args) {

FILE: ribbon-service/src/main/java/com/jourwon/springcloud/config/RibbonConfig.java
  class RibbonConfig (line 14) | @Configuration
    method restTemplate (line 17) | @Bean

FILE: ribbon-service/src/main/java/com/jourwon/springcloud/controller/UserRibbonController.java
  class UserRibbonController (line 17) | @RestController
    method getUser (line 27) | @GetMapping("/{id}")
    method getByUsername (line 32) | @GetMapping("/getByUsername")
    method getEntityByUsername (line 37) | @GetMapping("/getEntityByUsername")
    method insert (line 47) | @PostMapping("/insert")
    method update (line 52) | @PostMapping("/update")
    method delete (line 57) | @PostMapping("/delete/{id}")

FILE: ribbon-service/src/main/java/com/jourwon/springcloud/pojo/Result.java
  class Result (line 9) | public class Result<T> {
    method Result (line 17) | public Result() {
    method Result (line 20) | public Result(T data, String message, int code) {
    method Result (line 26) | public Result(String message, Integer code) {
    method Result (line 30) | public Result(T data) {
    method getData (line 34) | public T getData() {
    method setData (line 38) | public void setData(T data) {
    method getMessage (line 42) | public String getMessage() {
    method setMessage (line 46) | public void setMessage(String message) {
    method getCode (line 50) | public int getCode() {
    method setCode (line 54) | public void setCode(int code) {

FILE: ribbon-service/src/main/java/com/jourwon/springcloud/pojo/User.java
  class User (line 9) | public class User {
    method User (line 15) | public User() {
    method User (line 18) | public User(Long id, String username, String password) {
    method getId (line 24) | public Long getId() {
    method setId (line 28) | public void setId(Long id) {
    method getUsername (line 32) | public String getUsername() {
    method setUsername (line 36) | public void setUsername(String username) {
    method getPassword (line 40) | public String getPassword() {
    method setPassword (line 44) | public void setPassword(String password) {

FILE: ribbon-service/src/test/java/com/jourwon/springcloud/RibbonServiceApplicationTests.java
  class RibbonServiceApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: seata-account-service/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: seata-account-service/src/main/java/com/jourwon/springcloud/SeataAccountServiceApplication.java
  class SeataAccountServiceApplication (line 16) | @EnableFeignClients
    method main (line 22) | public static void main(String[] args) {

FILE: seata-account-service/src/main/java/com/jourwon/springcloud/config/DataSourceProxyConfig.java
  class DataSourceProxyConfig (line 22) | @Configuration
    method druidDataSource (line 28) | @Bean
    method dataSourceProxy (line 34) | @Bean
    method sqlSessionFactoryBean (line 39) | @Bean

FILE: seata-account-service/src/main/java/com/jourwon/springcloud/controller/AccountController.java
  class AccountController (line 12) | @RestController
    method decrease (line 22) | @RequestMapping("/decrease")

FILE: seata-account-service/src/main/java/com/jourwon/springcloud/mapper/AccountMapper.java
  type AccountMapper (line 8) | @Repository
    method decrease (line 14) | void decrease(@Param("userId") Long userId, @Param("money") BigDecimal...

FILE: seata-account-service/src/main/java/com/jourwon/springcloud/pojo/Account.java
  class Account (line 7) | @Data

FILE: seata-account-service/src/main/java/com/jourwon/springcloud/pojo/Result.java
  class Result (line 9) | public class Result<T> {
    method Result (line 17) | public Result() {
    method Result (line 20) | public Result(T data, String message, int code) {
    method Result (line 26) | public Result(String message, Integer code) {
    method Result (line 30) | public Result(T data) {
    method getData (line 34) | public T getData() {
    method setData (line 38) | public void setData(T data) {
    method getMessage (line 42) | public String getMessage() {
    method setMessage (line 46) | public void setMessage(String message) {
    method getCode (line 50) | public int getCode() {
    method setCode (line 54) | public void setCode(int code) {

FILE: seata-account-service/src/main/java/com/jourwon/springcloud/service/AccountService.java
  type AccountService (line 5) | public interface AccountService {
    method decrease (line 12) | void decrease(Long userId, BigDecimal money);

FILE: seata-account-service/src/main/java/com/jourwon/springcloud/service/impl/AccountServiceImpl.java
  class AccountServiceImpl (line 18) | @Service
    method decrease (line 28) | @Override

FILE: seata-account-service/src/main/resources/account.sql
  type `account` (line 1) | CREATE TABLE `account` (

FILE: seata-account-service/src/test/java/com/jourwon/springcloud/SeataAccountServiceApplicationTests.java
  class SeataAccountServiceApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: seata-order-service/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: seata-order-service/src/main/java/com/jourwon/springcloud/SeataOrderServiceApplication.java
  class SeataOrderServiceApplication (line 17) | @EnableFeignClients
    method main (line 23) | public static void main(String[] args) {

FILE: seata-order-service/src/main/java/com/jourwon/springcloud/config/DataSourceProxyConfig.java
  class DataSourceProxyConfig (line 22) | @Configuration
    method druidDataSource (line 28) | @Bean
    method dataSourceProxy (line 34) | @Bean
    method sqlSessionFactoryBean (line 39) | @Bean

FILE: seata-order-service/src/main/java/com/jourwon/springcloud/controller/OrderController.java
  class OrderController (line 11) | @RestController
    method create (line 21) | @GetMapping("/create")

FILE: seata-order-service/src/main/java/com/jourwon/springcloud/mapper/OrderMapper.java
  type OrderMapper (line 8) | @Repository
    method create (line 14) | void create(Order order);
    method update (line 19) | void update(@Param("userId") Long userId, @Param("status") Integer sta...

FILE: seata-order-service/src/main/java/com/jourwon/springcloud/pojo/Order.java
  class Order (line 14) | @Data

FILE: seata-order-service/src/main/java/com/jourwon/springcloud/pojo/Result.java
  class Result (line 9) | public class Result<T> {
    method Result (line 17) | public Result() {
    method Result (line 20) | public Result(T data, String message, int code) {
    method Result (line 26) | public Result(String message, Integer code) {
    method Result (line 30) | public Result(T data) {
    method getData (line 34) | public T getData() {
    method setData (line 38) | public void setData(T data) {
    method getMessage (line 42) | public String getMessage() {
    method setMessage (line 46) | public void setMessage(String message) {
    method getCode (line 50) | public int getCode() {
    method setCode (line 54) | public void setCode(int code) {

FILE: seata-order-service/src/main/java/com/jourwon/springcloud/service/AccountService.java
  type AccountService (line 10) | @FeignClient(value = "seata-account-service")
    method decrease (line 16) | @RequestMapping("/account/decrease")

FILE: seata-order-service/src/main/java/com/jourwon/springcloud/service/OrderService.java
  type OrderService (line 6) | public interface OrderService {
    method create (line 11) | void create(Order order);

FILE: seata-order-service/src/main/java/com/jourwon/springcloud/service/StorageService.java
  type StorageService (line 8) | @FeignClient(value = "seata-storage-service")
    method decrease (line 14) | @GetMapping(value = "/storage/decrease")

FILE: seata-order-service/src/main/java/com/jourwon/springcloud/service/impl/OrderServiceImpl.java
  class OrderServiceImpl (line 20) | @Service
    method create (line 35) | @Override

FILE: seata-order-service/src/main/resources/order.sql
  type `order` (line 1) | CREATE TABLE `order` (

FILE: seata-order-service/src/test/java/com/jourwon/springcloud/SeataOrderServiceApplicationTests.java
  class SeataOrderServiceApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: seata-storage-service/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: seata-storage-service/src/main/java/com/jourwon/springcloud/SeataStorageServiceApplication.java
  class SeataStorageServiceApplication (line 10) | @EnableFeignClients
    method main (line 16) | public static void main(String[] args) {

FILE: seata-storage-service/src/main/java/com/jourwon/springcloud/config/DataSourceProxyConfig.java
  class DataSourceProxyConfig (line 22) | @Configuration
    method druidDataSource (line 28) | @Bean
    method dataSourceProxy (line 34) | @Bean
    method sqlSessionFactoryBean (line 39) | @Bean

FILE: seata-storage-service/src/main/java/com/jourwon/springcloud/controller/StorageController.java
  class StorageController (line 10) | @RestController
    method decrease (line 20) | @RequestMapping("/decrease")

FILE: seata-storage-service/src/main/java/com/jourwon/springcloud/mapper/StorageMapper.java
  type StorageMapper (line 6) | @Repository
    method decrease (line 12) | void decrease(@Param("id") Long productId, @Param("ct") Integer count);

FILE: seata-storage-service/src/main/java/com/jourwon/springcloud/pojo/Result.java
  class Result (line 9) | public class Result<T> {
    method Result (line 17) | public Result() {
    method Result (line 20) | public Result(T data, String message, int code) {
    method Result (line 26) | public Result(String message, Integer code) {
    method Result (line 30) | public Result(T data) {
    method getData (line 34) | public T getData() {
    method setData (line 38) | public void setData(T data) {
    method getMessage (line 42) | public String getMessage() {
    method setMessage (line 46) | public void setMessage(String message) {
    method getCode (line 50) | public int getCode() {
    method setCode (line 54) | public void setCode(int code) {

FILE: seata-storage-service/src/main/java/com/jourwon/springcloud/pojo/Storage.java
  class Storage (line 5) | @Data

FILE: seata-storage-service/src/main/java/com/jourwon/springcloud/service/StorageService.java
  type StorageService (line 4) | public interface StorageService {
    method decrease (line 8) | void decrease(Long productId, Integer count);

FILE: seata-storage-service/src/main/java/com/jourwon/springcloud/service/impl/StorageServiceImpl.java
  class StorageServiceImpl (line 11) | @Service
    method decrease (line 22) | @Override

FILE: seata-storage-service/src/main/resources/storage.sql
  type `storage` (line 1) | CREATE TABLE `storage` (

FILE: seata-storage-service/src/test/java/com/jourwon/springcloud/SeataStorageServiceApplicationTests.java
  class SeataStorageServiceApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: sentinel-service/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: sentinel-service/src/main/java/com/jourwon/springcloud/SentinelServiceApplication.java
  class SentinelServiceApplication (line 14) | @EnableFeignClients
    method main (line 19) | public static void main(String[] args) {

FILE: sentinel-service/src/main/java/com/jourwon/springcloud/config/RibbonConfig.java
  class RibbonConfig (line 15) | @Configuration
    method restTemplate (line 18) | @Bean

FILE: sentinel-service/src/main/java/com/jourwon/springcloud/controller/CircleBreakerController.java
  class CircleBreakerController (line 21) | @RestController
    method fallback (line 33) | @GetMapping("/fallback/{id}")
    method fallbackException (line 41) | @GetMapping("/fallbackException/{id}")
    method handleFallback (line 53) | public Result handleFallback(Long id) {
    method handleFallback2 (line 57) | public Result handleFallback2(Long id, Throwable e) {

FILE: sentinel-service/src/main/java/com/jourwon/springcloud/controller/RateLimitController.java
  class RateLimitController (line 17) | @RestController
    method byResource (line 26) | @GetMapping("/byResource")
    method byUrl (line 37) | @GetMapping("byUrl")
    method handleException (line 43) | public Result handleException(BlockException exception) {
    method blockHandler (line 47) | @GetMapping("/customBlockHandler")

FILE: sentinel-service/src/main/java/com/jourwon/springcloud/controller/UserFeignController.java
  class UserFeignController (line 17) | @RestController
    method insert (line 24) | @PostMapping("/insert")
    method getUser (line 29) | @GetMapping("/{id}")
    method listUsersByIds (line 34) | @GetMapping("/listUsersByIds")
    method getByUsername (line 39) | @GetMapping("/getByUsername")
    method update (line 44) | @PostMapping("/update")
    method delete (line 49) | @PostMapping("/delete/{id}")

FILE: sentinel-service/src/main/java/com/jourwon/springcloud/handler/CustomBlockHandler.java
  class CustomBlockHandler (line 12) | public class CustomBlockHandler {
    method handleException (line 14) | public Result handleException(BlockException exception) {

FILE: sentinel-service/src/main/java/com/jourwon/springcloud/pojo/Result.java
  class Result (line 9) | public class Result<T> {
    method Result (line 17) | public Result() {
    method Result (line 20) | public Result(T data, String message, int code) {
    method Result (line 26) | public Result(String message, Integer code) {
    method Result (line 30) | public Result(T data) {
    method getData (line 34) | public T getData() {
    method setData (line 38) | public void setData(T data) {
    method getMessage (line 42) | public String getMessage() {
    method setMessage (line 46) | public void setMessage(String message) {
    method getCode (line 50) | public int getCode() {
    method setCode (line 54) | public void setCode(int code) {

FILE: sentinel-service/src/main/java/com/jourwon/springcloud/pojo/User.java
  class User (line 9) | public class User {
    method User (line 15) | public User() {
    method User (line 18) | public User(Long id, String username, String password) {
    method getId (line 24) | public Long getId() {
    method setId (line 28) | public void setId(Long id) {
    method getUsername (line 32) | public String getUsername() {
    method setUsername (line 36) | public void setUsername(String username) {
    method getPassword (line 40) | public String getPassword() {
    method setPassword (line 44) | public void setPassword(String password) {

FILE: sentinel-service/src/main/java/com/jourwon/springcloud/service/UserService.java
  type UserService (line 17) | @FeignClient(value = "nacos-user-service", fallback = UserFallbackServic...
    method insert (line 20) | @PostMapping("/user/insert")
    method getUser (line 23) | @GetMapping("/user/{id}")
    method listUsersByIds (line 26) | @GetMapping("/user/listUsersByIds")
    method getByUsername (line 29) | @GetMapping("/user/getByUsername")
    method update (line 32) | @PostMapping("/user/update")
    method delete (line 35) | @PostMapping("/user/delete/{id}")

FILE: sentinel-service/src/main/java/com/jourwon/springcloud/service/impl/UserFallbackService.java
  class UserFallbackService (line 16) | @Component
    method insert (line 19) | @Override
    method getUser (line 24) | @Override
    method listUsersByIds (line 29) | @Override
    method getByUsername (line 34) | @Override
    method update (line 39) | @Override
    method delete (line 44) | @Override

FILE: sentinel-service/src/test/java/com/jourwon/springcloud/SentinelServiceApplicationTests.java
  class SentinelServiceApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: turbine-service/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: turbine-service/src/main/java/com/jourwon/springcloud/TurbineServiceApplication.java
  class TurbineServiceApplication (line 14) | @EnableTurbine
    method main (line 19) | public static void main(String[] args) {

FILE: turbine-service/src/test/java/com/jourwon/springcloud/TurbineServiceApplicationTests.java
  class TurbineServiceApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: user-service/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: user-service/src/main/java/com/jourwon/springcloud/UserServiceApplication.java
  class UserServiceApplication (line 13) | @EnableDiscoveryClient
    method main (line 17) | public static void main(String[] args) {

FILE: user-service/src/main/java/com/jourwon/springcloud/controller/UserController.java
  class UserController (line 19) | @RestController
    method insert (line 28) | @PostMapping("/insert")
    method getUser (line 34) | @GetMapping("/{id}")
    method listUsersByIds (line 41) | @GetMapping("/listUsersByIds")
    method getByUsername (line 48) | @GetMapping("/getByUsername")
    method update (line 54) | @PostMapping("/update")
    method delete (line 60) | @PostMapping("/delete/{id}")

FILE: user-service/src/main/java/com/jourwon/springcloud/pojo/Result.java
  class Result (line 9) | public class Result<T> {
    method Result (line 17) | public Result() {
    method Result (line 20) | public Result(T data, String message, int code) {
    method Result (line 26) | public Result(String message, Integer code) {
    method Result (line 30) | public Result(T data) {
    method getData (line 34) | public T getData() {
    method setData (line 38) | public void setData(T data) {
    method getMessage (line 42) | public String getMessage() {
    method setMessage (line 46) | public void setMessage(String message) {
    method getCode (line 50) | public int getCode() {
    method setCode (line 54) | public void setCode(int code) {

FILE: user-service/src/main/java/com/jourwon/springcloud/pojo/User.java
  class User (line 9) | public class User {
    method User (line 15) | public User() {
    method User (line 18) | public User(Long id, String username, String password) {
    method getId (line 24) | public Long getId() {
    method setId (line 28) | public void setId(Long id) {
    method getUsername (line 32) | public String getUsername() {
    method setUsername (line 36) | public void setUsername(String username) {
    method getPassword (line 40) | public String getPassword() {
    method setPassword (line 44) | public void setPassword(String password) {

FILE: user-service/src/main/java/com/jourwon/springcloud/service/UserService.java
  type UserService (line 13) | public interface UserService {
    method insert (line 15) | void insert(User user);
    method getUser (line 17) | User getUser(Long id);
    method update (line 19) | void update(User user);
    method delete (line 21) | void delete(Long id);
    method getByUsername (line 23) | User getByUsername(String username);
    method listUsersByIds (line 25) | List<User> listUsersByIds(List<Long> ids);

FILE: user-service/src/main/java/com/jourwon/springcloud/service/impl/UserServiceImpl.java
  class UserServiceImpl (line 19) | @Service
    method insert (line 24) | @Override
    method getUser (line 29) | @Override
    method update (line 38) | @Override
    method delete (line 46) | @Override
    method getByUsername (line 54) | @Override
    method listUsersByIds (line 63) | @Override
    method initData (line 68) | @PostConstruct

FILE: user-service/src/test/java/com/jourwon/springcloud/UserServiceApplicationTests.java
  class UserServiceApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: zuul-proxy/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: zuul-proxy/src/main/java/com/jourwon/springcloud/ZuulProxyApplication.java
  class ZuulProxyApplication (line 14) | @EnableZuulProxy
    method main (line 19) | public static void main(String[] args) {

FILE: zuul-proxy/src/main/java/com/jourwon/springcloud/filter/PreLogFilter.java
  class PreLogFilter (line 18) | @Component
    method filterType (line 26) | @Override
    method filterOrder (line 34) | @Override
    method shouldFilter (line 42) | @Override
    method run (line 50) | @Override

FILE: zuul-proxy/src/test/java/com/jourwon/springcloud/ZuulProxyApplicationTests.java
  class ZuulProxyApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test
Condensed preview — 440 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,034K chars).
[
  {
    "path": ".gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "README.md",
    "chars": 141,
    "preview": "# springcloud-learning\n学习Spring Cloud框架的总结,使用的是最新的Hoxton版本。主要包括Eureka、Ribbon、Hystrix、Feign、Zuul、Gateway、Security、Bus、Ope"
  },
  {
    "path": "admin-client/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "admin-client/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "admin-client/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "admin-client/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "admin-client/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "admin-client/pom.xml",
    "chars": 2564,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "admin-client/src/main/java/com/jourwon/springcloud/AdminClientApplication.java",
    "chars": 507,
    "preview": "package com.jourwon.springcloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.aut"
  },
  {
    "path": "admin-client/src/main/java/com/jourwon/springcloud/controller/UserController.java",
    "chars": 1876,
    "preview": "package com.jourwon.springcloud.controller;\n\nimport com.jourwon.springcloud.pojo.Result;\nimport com.jourwon.springcloud."
  },
  {
    "path": "admin-client/src/main/java/com/jourwon/springcloud/pojo/Result.java",
    "chars": 946,
    "preview": "package com.jourwon.springcloud.pojo;\n\n/**\n * Description:统一返回前端的对象\n *\n * @author JourWon\n * @date 2019/12/18 13:57\n */\n"
  },
  {
    "path": "admin-client/src/main/java/com/jourwon/springcloud/pojo/User.java",
    "chars": 823,
    "preview": "package com.jourwon.springcloud.pojo;\n\n/**\n * Description:用户\n *\n * @author JourWon\n * @date 2019/12/18 14:00\n */\npublic "
  },
  {
    "path": "admin-client/src/main/java/com/jourwon/springcloud/service/UserService.java",
    "chars": 418,
    "preview": "package com.jourwon.springcloud.service;\n\nimport com.jourwon.springcloud.pojo.User;\n\nimport java.util.List;\n\n/**\n * Desc"
  },
  {
    "path": "admin-client/src/main/java/com/jourwon/springcloud/service/impl/UserServiceImpl.java",
    "chars": 2114,
    "preview": "package com.jourwon.springcloud.service.impl;\n\nimport com.jourwon.springcloud.pojo.User;\nimport com.jourwon.springcloud."
  },
  {
    "path": "admin-client/src/main/resources/application-eureka.yml",
    "chars": 422,
    "preview": "server:\n  port: 9305\n\nspring:\n  application:\n    name: admin-client\n  boot:\n    admin:\n      client:\n        # 配置admin-s"
  },
  {
    "path": "admin-client/src/main/resources/application.yml",
    "chars": 337,
    "preview": "server:\n  port: 9305\n\nspring:\n  application:\n    name: admin-client\n  boot:\n    admin:\n      client:\n        # 配置admin-s"
  },
  {
    "path": "admin-client/src/test/java/com/jourwon/springcloud/AdminClientApplicationTests.java",
    "chars": 229,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "admin-client.log",
    "chars": 23862,
    "preview": "2019-12-23 11:40:34.569  INFO 13588 --- [main] c.j.springcloud.AdminClientApplication   : Starting AdminClientApplicatio"
  },
  {
    "path": "admin-security-server/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "admin-security-server/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "admin-security-server/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "admin-security-server/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "admin-security-server/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "admin-security-server/pom.xml",
    "chars": 3271,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "admin-security-server/src/main/java/com/jourwon/springcloud/AdminSecurityServerApplication.java",
    "chars": 608,
    "preview": "package com.jourwon.springcloud;\n\nimport de.codecentric.boot.admin.server.config.EnableAdminServer;\nimport org.springfra"
  },
  {
    "path": "admin-security-server/src/main/java/com/jourwon/springcloud/config/SecuritySecureConfig.java",
    "chars": 2224,
    "preview": "package com.jourwon.springcloud.config;\n\nimport de.codecentric.boot.admin.server.config.AdminServerProperties;\nimport or"
  },
  {
    "path": "admin-security-server/src/main/resources/application.yml",
    "chars": 371,
    "preview": "server:\n  port: 9301\n\neureka:\n  client:\n    service-url:\n      defaultZone: http://localhost:8001/eureka/\n\nspring:\n  app"
  },
  {
    "path": "admin-security-server/src/test/java/com/jourwon/springcloud/AdminSecurityServerApplicationTests.java",
    "chars": 237,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "admin-server/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "admin-server/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "admin-server/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "admin-server/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "admin-server/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "admin-server/pom.xml",
    "chars": 2565,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "admin-server/src/main/java/com/jourwon/springcloud/AdminServerApplication.java",
    "chars": 592,
    "preview": "package com.jourwon.springcloud;\n\nimport de.codecentric.boot.admin.server.config.EnableAdminServer;\nimport org.springfra"
  },
  {
    "path": "admin-server/src/main/resources/application-eureka.yml",
    "chars": 152,
    "preview": "server:\n  port: 9301\n\nspring:\n  application:\n    name: admin-server\n\neureka:\n  client:\n    service-url:\n      defaultZon"
  },
  {
    "path": "admin-server/src/main/resources/application.yml",
    "chars": 67,
    "preview": "server:\n  port: 9301\n\nspring:\n  application:\n    name: admin-server"
  },
  {
    "path": "admin-server/src/test/java/com/jourwon/springcloud/AdminServerApplicationTests.java",
    "chars": 229,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "api-gateway/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "api-gateway/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "api-gateway/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "api-gateway/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "api-gateway/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "api-gateway/pom.xml",
    "chars": 2820,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "api-gateway/src/main/java/com/jourwon/springcloud/ApiGatewayApplication.java",
    "chars": 505,
    "preview": "package com.jourwon.springcloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.aut"
  },
  {
    "path": "api-gateway/src/main/java/com/jourwon/springcloud/config/GatewayConfig.java",
    "chars": 524,
    "preview": "package com.jourwon.springcloud.config;\n\nimport org.springframework.context.annotation.Configuration;\n\n/**\n * Descriptio"
  },
  {
    "path": "api-gateway/src/main/java/com/jourwon/springcloud/config/RedisRateLimiterConfig.java",
    "chars": 702,
    "preview": "package com.jourwon.springcloud.config;\n\nimport org.springframework.cloud.gateway.filter.ratelimit.KeyResolver;\nimport o"
  },
  {
    "path": "api-gateway/src/main/java/com/jourwon/springcloud/controller/FallbackController.java",
    "chars": 605,
    "preview": "package com.jourwon.springcloud.controller;\n\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.sprin"
  },
  {
    "path": "api-gateway/src/main/resources/application-eureka.yml",
    "chars": 479,
    "preview": "server:\n  port: 9201\nspring:\n  application:\n    name: api-gateway\n  cloud:\n    gateway:\n      routes:\n        - id: pref"
  },
  {
    "path": "api-gateway/src/main/resources/application-filter.yml",
    "chars": 1294,
    "preview": "server:\n  port: 9201\nservice-url:\n  user-service: http://localhost:8201\n\nspring:\n  cloud:\n    gateway:\n      routes:\n   "
  },
  {
    "path": "api-gateway/src/main/resources/application-predicate.yml",
    "chars": 268,
    "preview": "server:\n  port: 9201\nservice-url:\n  user-service: http://localhost:8201\n\nspring:\n  cloud:\n    gateway:\n      routes:\n   "
  },
  {
    "path": "api-gateway/src/main/resources/application.yml",
    "chars": 318,
    "preview": "server:\n  port: 9201\n\nservice-url:\n  user-service: http://localhost:8201\n\n\nspring:\n  cloud:\n    gateway:\n      routes:\n "
  },
  {
    "path": "api-gateway/src/test/java/com/jourwon/springcloud/ApiGatewayApplicationTests.java",
    "chars": 228,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "config-client/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "config-client/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "config-client/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "config-client/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "config-client/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "config-client/pom.xml",
    "chars": 2859,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "config-client/src/main/java/com/jourwon/springcloud/ConfigClientApplication.java",
    "chars": 509,
    "preview": "package com.jourwon.springcloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.aut"
  },
  {
    "path": "config-client/src/main/java/com/jourwon/springcloud/controller/ConfigClientController.java",
    "chars": 652,
    "preview": "package com.jourwon.springcloud.controller;\n\nimport org.springframework.beans.factory.annotation.Value;\nimport org.sprin"
  },
  {
    "path": "config-client/src/main/resources/bootstrap-amqp1.yml",
    "chars": 604,
    "preview": "server:\n  port: 9004\n\nspring:\n  application:\n    name: config-client\n  cloud:\n    # config客户端配置\n    config:\n      # 分支名称"
  },
  {
    "path": "config-client/src/main/resources/bootstrap-amqp2.yml",
    "chars": 604,
    "preview": "server:\n  port: 9005\n\nspring:\n  application:\n    name: config-client\n  cloud:\n    # config客户端配置\n    config:\n      # 分支名称"
  },
  {
    "path": "config-client/src/main/resources/bootstrap-cluster.yml",
    "chars": 527,
    "preview": "server:\n  port: 9003\n\nspring:\n  application:\n    name: config-client\n  cloud:\n    # config客户端配置\n    config:\n      # 分支名称"
  },
  {
    "path": "config-client/src/main/resources/bootstrap-security.yml",
    "chars": 521,
    "preview": "server:\n  port: 9002\n\nspring:\n  application:\n    name: config-client\n  cloud:\n    # config客户端配置\n    config:\n      # 分支名称"
  },
  {
    "path": "config-client/src/main/resources/bootstrap.yml",
    "chars": 477,
    "preview": "server:\n  port: 9001\n\nspring:\n  application:\n    name: config-client\n  cloud:\n    # config客户端配置\n    config:\n      # 分支名称"
  },
  {
    "path": "config-client/src/test/java/com/jourwon/springcloud/ConfigClientApplicationTests.java",
    "chars": 230,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "config-security-server/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "config-security-server/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "config-security-server/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "config-security-server/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "config-security-server/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "config-security-server/pom.xml",
    "chars": 2741,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "config-security-server/src/main/java/com/jourwon/springcloud/ConfigSecurityServerApplication.java",
    "chars": 612,
    "preview": "package com.jourwon.springcloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.aut"
  },
  {
    "path": "config-security-server/src/main/resources/application.yml",
    "chars": 495,
    "preview": "server:\n  port: 8905\n\nspring:\n  application:\n    name: config-security-server\n  cloud:\n    config:\n      server:\n       "
  },
  {
    "path": "config-security-server/src/test/java/com/jourwon/springcloud/ConfigSecurityServerApplicationTests.java",
    "chars": 238,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "config-server/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "config-server/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "config-server/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "config-server/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "config-server/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "config-server/pom.xml",
    "chars": 2698,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "config-server/src/main/java/com/jourwon/springcloud/ConfigServerApplication.java",
    "chars": 596,
    "preview": "package com.jourwon.springcloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.aut"
  },
  {
    "path": "config-server/src/main/resources/application-amqp.yml",
    "chars": 731,
    "preview": "server:\n  port: 8904\n\nspring:\n  application:\n    name: config-server\n  cloud:\n    config:\n      server:\n        git:\n   "
  },
  {
    "path": "config-server/src/main/resources/application-replica1.yml",
    "chars": 526,
    "preview": "server:\n  port: 8902\n\nspring:\n  application:\n    name: config-server\n  cloud:\n    config:\n      server:\n        git:\n   "
  },
  {
    "path": "config-server/src/main/resources/application-replica2.yml",
    "chars": 526,
    "preview": "server:\n  port: 8903\n\nspring:\n  application:\n    name: config-server\n  cloud:\n    config:\n      server:\n        git:\n   "
  },
  {
    "path": "config-server/src/main/resources/application.yml",
    "chars": 526,
    "preview": "server:\n  port: 8901\n\nspring:\n  application:\n    name: config-server\n  cloud:\n    config:\n      server:\n        git:\n   "
  },
  {
    "path": "config-server/src/test/java/com/jourwon/springcloud/ConfigServerApplicationTests.java",
    "chars": 230,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "consul-config-client/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "consul-config-client/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "consul-config-client/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "consul-config-client/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "consul-config-client/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "consul-config-client/pom.xml",
    "chars": 2707,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "consul-config-client/src/main/java/com/jourwon/springcloud/ConsulConfigClientApplication.java",
    "chars": 521,
    "preview": "package com.jourwon.springcloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.aut"
  },
  {
    "path": "consul-config-client/src/main/java/com/jourwon/springcloud/controller/ConfigClientController.java",
    "chars": 605,
    "preview": "package com.jourwon.springcloud.controller;\n\nimport org.springframework.beans.factory.annotation.Value;\nimport org.sprin"
  },
  {
    "path": "consul-config-client/src/main/resources/application.yml",
    "chars": 35,
    "preview": "spring:\n  profiles:\n    active: dev"
  },
  {
    "path": "consul-config-client/src/main/resources/bootstrap.yml",
    "chars": 453,
    "preview": "server:\n  port: 9101\n\nspring:\n  application:\n    name: consul-config-client\n  cloud:\n    consul:\n      host: localhost\n "
  },
  {
    "path": "consul-config-client/src/test/java/com/jourwon/springcloud/ConsulConfigClientApplicationTests.java",
    "chars": 236,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "consul-ribbon-service/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "consul-ribbon-service/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "consul-ribbon-service/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "consul-ribbon-service/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "consul-ribbon-service/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "consul-ribbon-service/pom.xml",
    "chars": 2888,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "consul-ribbon-service/src/main/java/com/jourwon/springcloud/ConsulRibbonServiceApplication.java",
    "chars": 523,
    "preview": "package com.jourwon.springcloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.aut"
  },
  {
    "path": "consul-ribbon-service/src/main/java/com/jourwon/springcloud/config/RibbonConfig.java",
    "chars": 541,
    "preview": "package com.jourwon.springcloud.config;\n\nimport org.springframework.cloud.client.loadbalancer.LoadBalanced;\nimport org.s"
  },
  {
    "path": "consul-ribbon-service/src/main/java/com/jourwon/springcloud/controller/UserRibbonController.java",
    "chars": 2078,
    "preview": "package com.jourwon.springcloud.controller;\n\nimport com.jourwon.springcloud.pojo.Result;\nimport com.jourwon.springcloud."
  },
  {
    "path": "consul-ribbon-service/src/main/java/com/jourwon/springcloud/pojo/Result.java",
    "chars": 946,
    "preview": "package com.jourwon.springcloud.pojo;\n\n/**\n * Description:统一返回前端的对象\n *\n * @author JourWon\n * @date 2019/12/18 13:57\n */\n"
  },
  {
    "path": "consul-ribbon-service/src/main/java/com/jourwon/springcloud/pojo/User.java",
    "chars": 823,
    "preview": "package com.jourwon.springcloud.pojo;\n\n/**\n * Description:用户\n *\n * @author JourWon\n * @date 2019/12/18 14:00\n */\npublic "
  },
  {
    "path": "consul-ribbon-service/src/main/resources/application.yml",
    "chars": 265,
    "preview": "server:\n  port: 8308\nspring:\n  application:\n    name: consul-ribbon-service\n  cloud:\n    consul:\n      host: localhost\n "
  },
  {
    "path": "consul-ribbon-service/src/test/java/com/jourwon/springcloud/ConsulRibbonServiceApplicationTests.java",
    "chars": 237,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "consul-user-service/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "consul-user-service/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "consul-user-service/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "consul-user-service/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "consul-user-service/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "consul-user-service/pom.xml",
    "chars": 2533,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "consul-user-service/src/main/java/com/jourwon/springcloud/ConsulUserServiceApplication.java",
    "chars": 519,
    "preview": "package com.jourwon.springcloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.aut"
  },
  {
    "path": "consul-user-service/src/main/java/com/jourwon/springcloud/controller/UserController.java",
    "chars": 1876,
    "preview": "package com.jourwon.springcloud.controller;\n\nimport com.jourwon.springcloud.pojo.Result;\nimport com.jourwon.springcloud."
  },
  {
    "path": "consul-user-service/src/main/java/com/jourwon/springcloud/pojo/Result.java",
    "chars": 946,
    "preview": "package com.jourwon.springcloud.pojo;\n\n/**\n * Description:统一返回前端的对象\n *\n * @author JourWon\n * @date 2019/12/18 13:57\n */\n"
  },
  {
    "path": "consul-user-service/src/main/java/com/jourwon/springcloud/pojo/User.java",
    "chars": 823,
    "preview": "package com.jourwon.springcloud.pojo;\n\n/**\n * Description:用户\n *\n * @author JourWon\n * @date 2019/12/18 14:00\n */\npublic "
  },
  {
    "path": "consul-user-service/src/main/java/com/jourwon/springcloud/service/UserService.java",
    "chars": 418,
    "preview": "package com.jourwon.springcloud.service;\n\nimport com.jourwon.springcloud.pojo.User;\n\nimport java.util.List;\n\n/**\n * Desc"
  },
  {
    "path": "consul-user-service/src/main/java/com/jourwon/springcloud/service/impl/UserServiceImpl.java",
    "chars": 2114,
    "preview": "package com.jourwon.springcloud.service.impl;\n\nimport com.jourwon.springcloud.pojo.User;\nimport com.jourwon.springcloud."
  },
  {
    "path": "consul-user-service/src/main/resources/application-replica1.yml",
    "chars": 221,
    "preview": "server:\n  port: 8207\n\nspring:\n  application:\n    name: consul-user-service\n  cloud:\n    consul:\n      # 将服务注册到consul\n   "
  },
  {
    "path": "consul-user-service/src/main/resources/application.yml",
    "chars": 221,
    "preview": "server:\n  port: 8206\n\nspring:\n  application:\n    name: consul-user-service\n  cloud:\n    consul:\n      # 将服务注册到consul\n   "
  },
  {
    "path": "consul-user-service/src/test/java/com/jourwon/springcloud/ConsulUserServiceApplicationTests.java",
    "chars": 235,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "eureka-client/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "eureka-client/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "eureka-client/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "eureka-client/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "eureka-client/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "eureka-client/pom.xml",
    "chars": 2361,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "eureka-client/src/main/java/com/jourwon/springcloud/EurekaClientApplication.java",
    "chars": 519,
    "preview": "package com.jourwon.springcloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.aut"
  },
  {
    "path": "eureka-client/src/main/resources/application-replica.yml",
    "chars": 311,
    "preview": "# 指定运行端口\nserver:\n  port: 8102\n\n# 指定服务名称\nspring:\n  application:\n    name: eureka-client\n\neureka:\n  client:\n    # 注册到Eurek"
  },
  {
    "path": "eureka-client/src/main/resources/application-security.yml",
    "chars": 290,
    "preview": "# 指定运行端口\nserver:\n  port: 8103\n\n# 指定服务名称\nspring:\n  application:\n    name: eureka-client\n\neureka:\n  client:\n    # 注册到Eurek"
  },
  {
    "path": "eureka-client/src/main/resources/application.yml",
    "chars": 279,
    "preview": "# 指定运行端口\nserver:\n  port: 8101\n\n# 指定服务名称\nspring:\n  application:\n    name: eureka-client\n\neureka:\n  client:\n    # 注册到Eurek"
  },
  {
    "path": "eureka-client/src/test/java/com/jourwon/springcloud/EurekaClientApplicationTests.java",
    "chars": 230,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "eureka-security-server/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "eureka-security-server/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "eureka-security-server/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "eureka-security-server/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "eureka-security-server/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "eureka-security-server/pom.xml",
    "chars": 2386,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "eureka-security-server/src/main/java/com/jourwon/springcloud/EurekaSecurityServerApplication.java",
    "chars": 524,
    "preview": "package com.jourwon.springcloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.aut"
  },
  {
    "path": "eureka-security-server/src/main/java/com/jourwon/springcloud/config/WebSecurityConfig.java",
    "chars": 678,
    "preview": "package com.jourwon.springcloud.config;\n\nimport org.springframework.security.config.annotation.web.builders.HttpSecurity"
  },
  {
    "path": "eureka-security-server/src/main/resources/application.yml",
    "chars": 284,
    "preview": "server:\n  port: 8004\n\nspring:\n  application:\n    name: eureka-security-server\n  security:\n    user:\n      # 配置spring sec"
  },
  {
    "path": "eureka-security-server/src/test/java/com/jourwon/springcloud/EurekaSecurityServerApplicationTests.java",
    "chars": 238,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "eureka-server/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "eureka-server/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "eureka-server/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "eureka-server/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "eureka-server/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "eureka-server/pom.xml",
    "chars": 2201,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "eureka-server/src/main/java/com/jourwon/springcloud/EurekaServerApplication.java",
    "chars": 518,
    "preview": "package com.jourwon.springcloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.aut"
  },
  {
    "path": "eureka-server/src/main/resources/application-replica1.yml",
    "chars": 295,
    "preview": "# 指定运行端口\nserver:\n  port: 8002\n\n# 指定服务名称\nspring:\n  application:\n    name: eureka-server\n\n# 指定主机地址\neureka:\n  instance:\n   "
  },
  {
    "path": "eureka-server/src/main/resources/application-replica2.yml",
    "chars": 297,
    "preview": "# 指定运行端口\nserver:\n  port: 8003\n\n# 指定服务名称\nspring:\n  application:\n    name: eureka-server\n\n# 指定主机地址\neureka:\n  instance:\n   "
  },
  {
    "path": "eureka-server/src/main/resources/application.yml",
    "chars": 273,
    "preview": "# 指定运行端口\nserver:\n  port: 8001\n\n# 指定服务名称\nspring:\n  application:\n    name: eureka-server\n\n# 指定主机地址\neureka:\n  instance:\n   "
  },
  {
    "path": "eureka-server/src/test/java/com/jourwon/springcloud/EurekaServerApplicationTests.java",
    "chars": 230,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "feign-service/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "feign-service/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "feign-service/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "feign-service/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "feign-service/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "feign-service/pom.xml",
    "chars": 2529,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "feign-service/src/main/java/com/jourwon/springcloud/FeignServiceApplication.java",
    "chars": 593,
    "preview": "package com.jourwon.springcloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.aut"
  },
  {
    "path": "feign-service/src/main/java/com/jourwon/springcloud/config/FeignConfig.java",
    "chars": 371,
    "preview": "package com.jourwon.springcloud.config;\n\nimport feign.Logger;\nimport org.springframework.context.annotation.Bean;\nimport"
  },
  {
    "path": "feign-service/src/main/java/com/jourwon/springcloud/controller/UserFeignController.java",
    "chars": 1408,
    "preview": "package com.jourwon.springcloud.controller;\n\nimport com.jourwon.springcloud.pojo.Result;\nimport com.jourwon.springcloud."
  },
  {
    "path": "feign-service/src/main/java/com/jourwon/springcloud/pojo/Result.java",
    "chars": 946,
    "preview": "package com.jourwon.springcloud.pojo;\n\n/**\n * Description:统一返回前端的对象\n *\n * @author JourWon\n * @date 2019/12/18 13:57\n */\n"
  },
  {
    "path": "feign-service/src/main/java/com/jourwon/springcloud/pojo/User.java",
    "chars": 823,
    "preview": "package com.jourwon.springcloud.pojo;\n\n/**\n * Description:用户\n *\n * @author JourWon\n * @date 2019/12/18 14:00\n */\npublic "
  },
  {
    "path": "feign-service/src/main/java/com/jourwon/springcloud/service/UserService.java",
    "chars": 1131,
    "preview": "package com.jourwon.springcloud.service;\n\nimport com.jourwon.springcloud.pojo.Result;\nimport com.jourwon.springcloud.poj"
  },
  {
    "path": "feign-service/src/main/java/com/jourwon/springcloud/service/impl/UserFallbackService.java",
    "chars": 1074,
    "preview": "package com.jourwon.springcloud.service.impl;\n\nimport com.jourwon.springcloud.pojo.Result;\nimport com.jourwon.springclou"
  },
  {
    "path": "feign-service/src/main/resources/application.yml",
    "chars": 326,
    "preview": "server:\n  port: 8701\n\nspring:\n  application:\n    name: feign-service\n\neureka:\n  client:\n    register-with-eureka: true\n "
  },
  {
    "path": "feign-service/src/test/java/com/jourwon/springcloud/FeignServiceApplicationTests.java",
    "chars": 230,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "hystrix-dashboard/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "hystrix-dashboard/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "hystrix-dashboard/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "hystrix-dashboard/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "hystrix-dashboard/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "hystrix-dashboard/pom.xml",
    "chars": 2559,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "hystrix-dashboard/src/main/java/com/jourwon/springcloud/HystrixDashboardApplication.java",
    "chars": 624,
    "preview": "package com.jourwon.springcloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.aut"
  },
  {
    "path": "hystrix-dashboard/src/main/resources/application.yml",
    "chars": 215,
    "preview": "server:\n  port: 8501\n\nspring:\n  application:\n    name: hystrix-dashboard\n\neureka:\n  client:\n    register-with-eureka: tr"
  },
  {
    "path": "hystrix-dashboard/src/test/java/com/jourwon/springcloud/HystrixDashboardApplicationTests.java",
    "chars": 234,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "hystrix-service/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "hystrix-service/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "hystrix-service/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "hystrix-service/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "hystrix-service/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "hystrix-service/pom.xml",
    "chars": 2876,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "hystrix-service/src/main/java/com/jourwon/springcloud/HystrixServiceApplication.java",
    "chars": 657,
    "preview": "package com.jourwon.springcloud;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.aut"
  },
  {
    "path": "hystrix-service/src/main/java/com/jourwon/springcloud/config/RibbonConfig.java",
    "chars": 503,
    "preview": "package com.jourwon.springcloud.config;\n\nimport org.springframework.cloud.client.loadbalancer.LoadBalanced;\nimport org.s"
  },
  {
    "path": "hystrix-service/src/main/java/com/jourwon/springcloud/controller/UserHystrixController.java",
    "chars": 2232,
    "preview": "package com.jourwon.springcloud.controller;\n\nimport cn.hutool.core.thread.ThreadUtil;\nimport com.jourwon.springcloud.poj"
  },
  {
    "path": "hystrix-service/src/main/java/com/jourwon/springcloud/filter/HystrixRequestContextFilter.java",
    "chars": 857,
    "preview": "package com.jourwon.springcloud.filter;\n\nimport com.netflix.hystrix.strategy.concurrency.HystrixRequestContext;\nimport o"
  },
  {
    "path": "hystrix-service/src/main/java/com/jourwon/springcloud/pojo/Result.java",
    "chars": 946,
    "preview": "package com.jourwon.springcloud.pojo;\n\n/**\n * Description:统一返回前端的对象\n *\n * @author JourWon\n * @date 2019/12/18 13:57\n */\n"
  },
  {
    "path": "hystrix-service/src/main/java/com/jourwon/springcloud/pojo/User.java",
    "chars": 823,
    "preview": "package com.jourwon.springcloud.pojo;\n\n/**\n * Description:用户\n *\n * @author JourWon\n * @date 2019/12/18 14:00\n */\npublic "
  },
  {
    "path": "hystrix-service/src/main/java/com/jourwon/springcloud/service/UserService.java",
    "chars": 4445,
    "preview": "package com.jourwon.springcloud.service;\n\nimport cn.hutool.core.bean.BeanUtil;\nimport cn.hutool.core.collection.CollUtil"
  },
  {
    "path": "hystrix-service/src/main/resources/application-replica1.yml",
    "chars": 371,
    "preview": "server:\n  port: 8402\n\nspring:\n  application:\n    name: hystrix-service\n\neureka:\n  client:\n    register-with-eureka: true"
  },
  {
    "path": "hystrix-service/src/main/resources/application.yml",
    "chars": 371,
    "preview": "server:\n  port: 8401\n\nspring:\n  application:\n    name: hystrix-service\n\neureka:\n  client:\n    register-with-eureka: true"
  },
  {
    "path": "hystrix-service/src/test/java/com/jourwon/springcloud/HystrixServiceApplicationTests.java",
    "chars": 232,
    "preview": "package com.jourwon.springcloud;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spring"
  },
  {
    "path": "nacos-config-client/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  }
]

// ... and 240 more files (download for full content)

About this extraction

This page contains the full source code of the JourWon/springcloud-learning GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 440 files (925.1 KB), approximately 261.4k tokens, and a symbol index with 766 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!