Spring boot工具类静态属性注入及多环境配置详解

由于需要访问MongoDB,但是本地开发环境不能直接连接MongoDB,需要通过SecureCRT使用127.0.0.2本地IP代理。但是程序部署到线上生产环境后,是可以直接访问MongoDB的,因此开发好程序后,总是要修改一下MongoDB服务器的IP才能提交代码,这样很是不方便。

 private static final String PUBCHAT_HOST = "127.0.0.2";
// private static final String PUBCHAT_HOST = "PROD_MONGO_SERVER_IP";

由于没有使用spring-boot自带的 spring-boot-starter-data-mongodb ,而是使用 mongo-java-driver 访问MongoDB,因此在程序中需要定义一些访问MongoDB的配置,比如服务器地址、IP端口、数据库名……使用一个工具类的静态变量声明这些配置信息,配置信息的值保存在application.yml 配置文件中。通过 @ConfigurationProperties 注入。

静态工具类定义

属性是静态的:

private static String chat_username;

然后通过非静态的 set方法注入:

@Value("${mongo.config.username}")
 public void setChat_username(String chat_username) {
 MongoConfig.chat_username = chat_username;
 }

其他类通过公有的静态get方法获取属性:

public static String getChat_username() {
 return chat_username;
 }

prefix 的值在 application.yml 中定义

@ConfigurationProperties(prefix = "mongo.config")
public class MongoConfig {
 .....

整个完整代码如下:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * Created by Administrator on 2018/4/4.
 */
@Component(value = "MongoConfig")
@ConfigurationProperties(prefix = "mongo.config")
public class MongoConfig {

 private static String chat_username;

 private static String chat_password ;

 private static String chat_host;

 private static int chat_port;

 private static String chat_dbname;

 private static String chat_collprefix;

 public static String getChat_username() {
 return chat_username;
 }

 @Value("${mongo.config.username}")
 public void setChat_username(String chat_username) {
 MongoConfig.chat_username = chat_username;
 }

 public static String getChat_password() {
 return chat_password;
 }

 @Value("${mongo.config.password}")
 public void setChat_password(String chat_password) {
 MongoConfig.chat_password = chat_password;
 }

 public static String getChat_host() {
 return chat_host;
 }

 @Value("${mongo.config.host}")
 public void setChat_host(String chat_host) {
 MongoConfig.chat_host = chat_host;
 }

 public static int getChat_port() {
 return chat_port;
 }

 @Value("${mongo.config.port}")
 public static void setChat_port(int chat_port) {
 MongoConfig.chat_port = chat_port;
 }

 public static String getChat_dbname() {
 return chat_dbname;
 }

 @Value("${mongo.config.dbname}")
 public void setChat_dbname(String chat_dbname) {
 MongoConfig.chat_dbname = chat_dbname;
 }

 public static String getChat_collprefix() {
 return chat_collprefix;
 }

 @Value("${mongo.config.collprefix}")
 public void setChat_collprefix(String chat_collprefix) {
 MongoConfig.chat_collprefix = chat_collprefix;
 }
}

yml配置文件定义

通过 profile 指定不同环境下使用不同的配置。active 指定激活的环境,比如 dev 或者 prod

spring:
 application:
 name: textml
 profiles:
 active: dev

---
spring:
 profiles: dev, default,test

mongo:
 config:
  username: "xxx"
  password: "xxx"
  host: "127.0.0.2"
  port: 10001
  dbname: "xxx"
  collprefix: "xxxx"

---
spring:
 profiles: prod
mongo:
 config:
  username: "xxx"
  password: "xxx"
  host: "xxxx"
  port: 10001
  dbname: "xxxx"
  collprefix: "xxx"

测试

由于使用了MongoDB自定义配置,故使用 @SpringBootApplication(exclude = MongoAutoConfiguration.class) 排除Spring-boot 中自带的MongoDB配置。

@SpringBootApplication(exclude = MongoAutoConfiguration.class)
public class Application {

 public static void main(String[] args) {
 SpringApplication.run(Application.class, args);
 System.out.println("--config value--username:" + MongoConfig.getChat_username());
 }
}

参考:spring boot 静态变量注入配置文件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • spring boot静态变量注入配置文件详解
  • spring boot 注入 property的三种方式(推荐)
  • SpringBoot下的值注入(推荐)
  • springboot注入servlet的方法
  • 详解SpringBoot中实现依赖注入功能
  • Spring boot将配置属性注入到bean类中
(0)

相关推荐

  • spring boot 注入 property的三种方式(推荐)

    以前使用spring的使用要注入property要配置PropertyPlaceholder的bean对象.在springboot除  了这种方式以外还可以通过制定 配置ConfigurationProperties直接把property文件的 属性映射到 当前类里面. @ConfigurationProperties(prefix = "mypro", merge = true, locations = { "classpath:my.properties" })

  • SpringBoot下的值注入(推荐)

    在我们实际开发项目中,经常会遇到一些常量的配置,比如url,暂时不会改变的字段参数,这个时候我们最好是不要直接写死在代码里的,因为这样编写的程序,应用扩展性太差了,我们可以直接写在配置文件中然后通过配置文件读取该字段的值,这样的话以后需要更改,也不用在重新修改代码,好处不言而知. 一,字段直接注入 @Value("${example.url}") private String url; 这样直接在配置文件里写url值即可(application.properties|applicati

  • 详解SpringBoot中实现依赖注入功能

    今天给大家介绍一下SpringBoot中是如何实现依赖注入的功能. 在以往spring使用中,依赖注入一般都是通过在Spring的配置文件中添加bean方法实现的,相对于这个方式SpringBoot的实现方式就显得非常便捷了.SpringBoot的实现方式基本都是通过注解实现的. 下面来看一下具体案例,这里我编写了三个测试类用于测试依赖注入到底是否可以正确实现. TestBiz接口: package example.biz; public interface TestBiz { public S

  • spring boot静态变量注入配置文件详解

    本文实例为大家分享了spring boot静态变量注入配置文件的具体代码,供大家参考,具体内容如下 spring 静态变量注入 spring 中不支持直接进行静态变量值的注入,我们看一下代码: @Component(value = "KafkaConfig") @ConfigurationProperties(prefix = "baseConfig") public class KafkaConfig { private static String logBrok

  • Spring boot将配置属性注入到bean类中

    一.@ConfigurationProperties注解的使用 看配置文件,我的是yaml格式的配置: // file application.yml my: servers: - dev.bar.com - foo.bar.com - jiaobuchong.com 下面我要将上面的配置属性注入到一个Java Bean类中,看码: import org.springframework.boot.context.properties.ConfigurationProperties; import

  • springboot注入servlet的方法

    问:有了springMVC,为什么还要用servlet?有了servlet3的注解,为什么还要使用ServletRegistrationBean注入的方式? 使用场景:在有些场景下,比如我们要使用hystrix-dashboard,这时候就需要注入HystrixMetricsStreamServlet(第三方的servlet),该servlet是hystrix的组件. 一.代码 1.TestServlet(第一个servlet) package com.xxx.secondboot.servle

  • Spring boot工具类静态属性注入及多环境配置详解

    由于需要访问MongoDB,但是本地开发环境不能直接连接MongoDB,需要通过SecureCRT使用127.0.0.2本地IP代理.但是程序部署到线上生产环境后,是可以直接访问MongoDB的,因此开发好程序后,总是要修改一下MongoDB服务器的IP才能提交代码,这样很是不方便. private static final String PUBCHAT_HOST = "127.0.0.2"; // private static final String PUBCHAT_HOST =

  • Spring Bean属性注入的两种方式详解

    目录 属性注入概念 一.构造器注入 示例1 注意点 二.setter注入 示例2 三.如何选择注入方式 属性注入概念 Spring 属性注入(DI依赖注入)有两种方式:setter注入,构造器注入. 这个注入的属性可以是普通属性(基本数据类型与String等),也可以是一个引用数据类型(主要是对象),或者是一个集合(list.map.set等) 下表是属性注入bean标签中常用的元素 元素名称 描述 constructor-arg 构造器注入.该元素的 index 属性指定构造参数的索引(从 0

  • Spring Boot 定制与优化内置的Tomcat容器实例详解

    1.Spring Boot 定制与优化内置Tomcat容器. > 内置的容器有三个分别是Undertow.Jetty.Tomcat,Spring Boot 对这三个容器分别进行了实现,它们上层接口都是EmbeddedServletContainerFactory,该接口也是本文的主要核心. 对于内置容器的定制与优化主要有两种方式,第一种方式是通过配置文件来配置,另外一种是通过码代码的方式.接下来主要对上述两种方式进行实现. 2.通过配置文件来定制与优化Tomcat > 配置的核心内容参考org

  • 在Spring Boot应用程序中使用Apache Kafka的方法步骤详解

    第1步:生成我们的项目: Spring Initializr来生成我们的项目.我们的项目将提供Spring MVC / Web支持和Apache Kafka支持. 第2步:发布/读取Kafka主题中的消息: <b>public</b> <b>class</b> User { <b>private</b> String name; <b>private</b> <b>int</b> age

  • Java中Spring Boot+Socket实现与html页面的长连接实例详解

    Spring Boot+Socket实现与html页面的长连接,客户端给服务器端发消息,服务器给客户端轮询发送消息,附案例源码 功能介绍 客户端给所有在线用户发送消息客户端给指定在线用户发送消息服务器给客户端发送消息(轮询方式) 注意:socket只是实现一些简单的功能,具体的还需根据自身情况,代码稍微改造下 项目搭建 项目结构图 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xml

  • Spring boot jpa 删除数据和事务管理的问题实例详解

    今天我们介绍的是jpa删除和事务的一些坑,接下来看看具体内容. 业务场景(这是一个在线考试系统)和代码:根据问题的id删除答案 repository层: int deleteByQuestionId(Integer questionId); service 层: public void deleteChoiceAnswerByQuestionId(Integer questionId) { choiceAnswerRepository.deleteByQuestionId(questionId)

  • spring boot+vue 的前后端分离与合并方案实例详解

    springboot和vue结合的方案网络上的主要有以下两种: 1. [不推荐]在html中直接使用script标签引入vue和一些常用的组件,这种方式和以前传统的开发是一样的,只是可以很爽的使用vue的双向数据绑定,这种方式只适合于普通的全栈开发. 2.[推荐]使用vue官方的脚手架创建单独的前端工程项目,做到和后端完全独立开发和部署,后端单独部署一个纯restful的服务,而前端直接采用nginx来部署,这种称为完全的前后端分离架构开发模式,但是在分离中有很多api权限的问题需要解决,包括部

  • Spring Boot 通过 Mvc 扩展方便进行货币单位转换的代码详解

    由于公司是支付平台,所以很多项目都涉及到金额,业务方转递过来的金额是单位是元,而我们数据库保存的金额单位是分.一般金额的流向有以下几个方向: 外部业务方请求我们服务,传递过来的金额单位是元,需要把元转换成分.比如:下单接口. 内部系统之间的流转,不管是向下传递还是向上传递系统间的流程都是分,不需要扭转.比如:调用支付引擎(向下传递),支付引擎回调收单业务(向上传递). 向业务方返回数据,这个时候需要把分转换成元.比如:商户调用查询订单接口. 内部系统的展示,这个时候需要把分转换成元.比如:显示收

  • Spring Boot打包部署和环境配置详解

    执行命令 yum -y list java* 查看可安装java版本. Failed to set locale, defaulting to C Loaded plugins: fastestmirror base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/4): base/7/x86_64/group_gz | 166 kB 00:00:00 (2/4): extras/7/x86_64/p

  • Spring Boot 在启动时进行配置文件加解密的方法详解

    寻找到application.yml的读取的操作. 从spring.factories 中查看到 # Application Listeners org.springframework.context.ApplicationListener=\ org.springframework.boot.context.config.ConfigFileApplicationListener,\ ConfigFileApplicationListener 该对象对application.yml进行读取操作

随机推荐