Spring 引导项目中定义的全局变量和应用程序变量
Global variables And Application Variables Defining in Spring boot project
我正在尝试使用 spring 和 spring 启动来开发微服务。在我的项目中,我正在将整体架构转换为面向服务的架构。项目包含 20 个 Micro services.I 这些我需要设置应用程序变量和全局变量。我有与此相关的困惑,我在这里添加这些困惑,
- 可以在 application.properties 文件中声明我的全局变量吗?如果不可能,我可以在哪里定义我的全局变量?
- 如果我使用 spring 配置服务器进行全局配置,如何有条件地将这些属性导入客户端项目?
- 我可以在配置服务器中为不同的配置文件设置不同的 属性 文件,并有条件地为不同的配置文件导入客户端项目吗?在我的案例中,每个配置文件代表不同的区域。
在探索之后,我找到了这个问题的解决方案,用于加载全局变量和应用程序变量,包括数据库配置。我们可以使用的最佳方式是 - spring 云配置服务器外部化配置。
我们可以为 spring 云配置服务器创建一个微服务。在配置服务器中,我们可以通过两种方式创建变量和配置。
- 配置来自 GIT Link 参考资料
- 使用本地文件系统/环境变量。
Links 参考
- https://cloud.spring.io/spring-cloud-config/single/spring-cloud-config.html
- https://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.3.3.RELEASE/multi/multi__spring_cloud_config_server.html
- https://github.com/spring-cloud/spring-cloud-config
这里我跟着使用本地文件系统。
需要在 src/main/resources 下创建 Config 文件夹。并按照命名约定创建不同的配置文件,
db,properties,db-test.properties,db-prod.properties,db-dev.properties。
我为不同的开发环境创建了示例。就像我们可以为变量和配置创建任何配置文件一样。
并在 application.properties 中为配置服务器添加以下内容
server.port=8888
spring.profiles.active=native
在配置服务器的pom.xml文件中添加配置服务器依赖,
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
将以下内容添加到主应用程序中 运行 class,
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
并通过添加pom.xml依赖来创建客户端微服务项目,
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
在 application.properties 文件中添加以下行以设置客户端从服务器接收配置,
server.port=8080
spring.application.name=db
spring.cloud.config.uri=localhost:8888
最后 运行 您的客户项目通过指定配置文件,
java -jar -Dsping.profiles.active=<profile> <jar_name>.jar
提前致谢
我正在尝试使用 spring 和 spring 启动来开发微服务。在我的项目中,我正在将整体架构转换为面向服务的架构。项目包含 20 个 Micro services.I 这些我需要设置应用程序变量和全局变量。我有与此相关的困惑,我在这里添加这些困惑,
- 可以在 application.properties 文件中声明我的全局变量吗?如果不可能,我可以在哪里定义我的全局变量?
- 如果我使用 spring 配置服务器进行全局配置,如何有条件地将这些属性导入客户端项目?
- 我可以在配置服务器中为不同的配置文件设置不同的 属性 文件,并有条件地为不同的配置文件导入客户端项目吗?在我的案例中,每个配置文件代表不同的区域。
在探索之后,我找到了这个问题的解决方案,用于加载全局变量和应用程序变量,包括数据库配置。我们可以使用的最佳方式是 - spring 云配置服务器外部化配置。
我们可以为 spring 云配置服务器创建一个微服务。在配置服务器中,我们可以通过两种方式创建变量和配置。
- 配置来自 GIT Link 参考资料
- 使用本地文件系统/环境变量。
Links 参考
- https://cloud.spring.io/spring-cloud-config/single/spring-cloud-config.html
- https://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.3.3.RELEASE/multi/multi__spring_cloud_config_server.html
- https://github.com/spring-cloud/spring-cloud-config
这里我跟着使用本地文件系统。
需要在 src/main/resources 下创建 Config 文件夹。并按照命名约定创建不同的配置文件,
db,properties,db-test.properties,db-prod.properties,db-dev.properties。 我为不同的开发环境创建了示例。就像我们可以为变量和配置创建任何配置文件一样。
并在 application.properties 中为配置服务器添加以下内容
server.port=8888
spring.profiles.active=native
在配置服务器的pom.xml文件中添加配置服务器依赖,
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
将以下内容添加到主应用程序中 运行 class,
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
并通过添加pom.xml依赖来创建客户端微服务项目,
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
在 application.properties 文件中添加以下行以设置客户端从服务器接收配置,
server.port=8080
spring.application.name=db
spring.cloud.config.uri=localhost:8888
最后 运行 您的客户项目通过指定配置文件,
java -jar -Dsping.profiles.active=<profile> <jar_name>.jar
提前致谢