Example code: https://github.com/michaelzhanghe/springcloud-03-licensingservice.git
------------------------------Windows10--------------------------------
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cloudlearning</groupId> <artifactId>springcloud-03-licensingservice</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springcloud-03-licensingservice</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.M9</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <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-config-client</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-rsa</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.196</version> </dependency> <dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.1-901.jdbc4</version> </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> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project>
schema.sql: SQL statement to create database table
DROP TABLE IF EXISTS licenses; CREATE TABLE licenses ( license_id VARCHAR(100) PRIMARY KEY NOT NULL, organization_id TEXT NOT NULL, license_type TEXT NOT NULL, product_name TEXT NOT NULL, license_max INT NOT NULL, license_allocated INT, comment VARCHAR(100)); INSERT INTO licenses (license_id, organization_id, license_type, product_name, license_max, license_allocated) VALUES ('f3831f8c-c338-4ebe-a82a-e2fc1d1ff78a', 'e254f8c-c442-4ebe-a82a-e2fc1d1ff78a', 'user','customer-crm-co', 100,5); INSERT INTO licenses (license_id, organization_id, license_type, product_name, license_max, license_allocated) VALUES ('t9876f8c-c338-4abc-zf6a-ttt1', 'e254f8c-c442-4ebe-a82a-e2fc1d1ff78a', 'user','suitability-plus', 200,189); INSERT INTO licenses (license_id, organization_id, license_type, product_name, license_max, license_allocated) VALUES ('38777179-7094-4200-9d61-edb101c6ea84', '442adb6e-fa58-47f3-9ca2-ed1fecdfe86c', 'user','HR-PowerSuite', 100,4); INSERT INTO licenses (license_id, organization_id, license_type, product_name, license_max, license_allocated) VALUES ('08dbe05-606e-4dad-9d33-90ef10e334f9', '442adb6e-fa58-47f3-9ca2-ed1fecdfe86c', 'core-prod','WildCat Application Gateway', 16,16);
Access the 8888 port exposed by the local configuration server and call the configuration file of the default environment
The naming convention of the configuration file on the Git repos is to match the configuration in bootstrap.yml:
${spring.application.name}-${spring.profiles.active}.yml
create controller
package com.cloudlearning.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.cloudlearning.config.ServiceConfig; import org.springframework.web.bind.annotation.GetMapping; @RestController public class LicenseServiceController { @Autowired private ServiceConfig serviceConfig; @GetMapping(value="/licensingservice") public String getExampleProperty() { return serviceConfig.getExampleProperty(); } }
create service
package com.cloudlearning.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class ServiceConfig{ @Value("${example.property}") private String exampleProperty; public String getExampleProperty(){ return exampleProperty; } }
When the browser accesses the URI defined in the controller: /licensingservice, it will return the value of example.property "I AM IN THE DEFAULT" in the default environment springcloud-03-licensingservice.yml on Git
test:
1. Start the configuration server: springcloud-02-confsrv
From the log file, you can see the springcloud-03-licensingservice.yml corresponding to the call
2018-04-18 11:48:50.639 INFO 4608 --- [nio-8888-exec-3] o.s.c.c.s.e.NativeEnvironmentRepository : Adding property source: file:/C:/Users/Administrator/AppData/Local/Temp/config-repo-8073690710026718888/licensingservice/springcloud-03-licensingservice.yml
2. 启动licensingservice: springcloud-03-licensingservice