5.5. Properties

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:


5.5.1. @EnableConfigurationProperties 引用自定义 *.properties 配置文件

Application.java 涮锅配置NetkillerProperties.java是 @ComponentScan 扫描范围,可以不用声明下面注解。

				@EnableConfigurationProperties(NetkillerProperties.class)
			
			
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.authentication.UserCredentials;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

import com.mongodb.Mongo;

import pojo.NetkillerProperties;

@Configuration
@SpringBootApplication
@EnableConfigurationProperties(NetkillerProperties.class)
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class })
@ComponentScan({ "web", "rest" })
@EnableMongoRepositories
public class Application {
	
	@SuppressWarnings("deprecation")
	public @Bean MongoDbFactory mongoDbFactory() throws Exception {
		UserCredentials userCredentials = new UserCredentials("finance", "your_password");
		return new SimpleMongoDbFactory(new Mongo("mdb.netkiller.cn"), "finance", userCredentials);
	}

	public @Bean MongoTemplate mongoTemplate() throws Exception {
		return new MongoTemplate(mongoDbFactory());
	}

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

}
			
			

NetkillerProperties.java

			
package pojo;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@ConfigurationProperties(prefix="netkiller")
public class NetkillerProperties {
	private String name;
	private String email;
	private String home;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getHome() {
		return home;
	}
	public void setHome(String home) {
		this.home = home;
	}
	@Override
	public String toString() {
		return "NetkillerProperties [name=" + name + ", email=" + email + ", home=" + home + "]";
	}
}
			
			

IndexController.java

			
package web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import domain.City;
import pojo.NetkillerProperties;
import repository.CityRepository;

@Controller
public class IndexController {
	
	@Autowired
	private CityRepository repository;

	@Autowired
	private NetkillerProperties propertie;
	
	@RequestMapping("/index")
	@ResponseBody
	public String index() {
	//public ModelAndView index() {

		String message = "Hello";
		//return new ModelAndView("home/welcome", "variable", message);
		return message;
	}
	
	@RequestMapping("/config")
	@ResponseBody
	public String config() {
		return propertie.toString();
	}
}
			
			

src/main/resource/application.properties

			
netkiller.name=Neo
netkiller.email=netkiller@msn.com
netkiller.home=http://www.netkiller.cn
			
			

@ConfigurationProperties 默认配置是 application.properties

你可以通过 locations 指向特定配置文件

				@ConfigurationProperties(prefix = "message.api",locations = "classpath:config/message.properties")
			

@EnableConfigurationProperties 可以导入多个配置文件

				@EnableConfigurationProperties({NetkillerProperties.class, NeoProperties.class})
			

5.5.2. spring.profiles.active 参数切换配置文件

首先我们准备三个配置文件

				src/main/resource/application-development.properties
				src/main/resource/application-testing.properties
				src/main/resource/application-production.properties
			

使用下面--spring.profiles.active参数切换运行环境配置文件

				java -jar application.jar --spring.profiles.active=development
				java -jar application.jar --spring.profiles.active=testing
				java -jar application.jar --spring.profiles.active=production
			

分别为三个环境打包

				mvn clean package -Pdevelopment
				mvn clean package -Ptesting
				mvn clean package -Pproduction
			

5.5.3. SpringApplicationBuilder.properties() 方法添加配置项

			
			
  public static void main(String[] args) {
    new SpringApplicationBuilder(Application.class)
        .properties("spring.config.name=client").run(args);
  }			
			
			



原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
4月前
|
XML Java 数据格式
Java中的Properties类详解Properties配置文件
Java中的Properties类详解Properties配置文件
39 0
|
XML 存储 安全
一文带你全面了解Properties类
一文带你全面了解Properties类
120 0
一文带你全面了解Properties类
|
Java Spring
application.properties或.yml文件
application.properties或.yml文件
91 0
application.properties或.yml文件
|
XML 移动开发 Java
详解log4j.properties配置
详解log4j.properties配置
|
机器学习/深度学习 关系型数据库 Oracle
xtt.properties
Reduce Transportable Tablespace Downtime using Incremental Backups (Doc ID 1389592.1) Properties file for xttdriver.
942 0
|
Windows Linux
|
Java Spring
|
Windows Linux
|
NoSQL Java 网络安全
|
NoSQL Java 网络安全