下面我来详细讲解“springboot入门之profile设置方式”的完整攻略。
一、什么是profile
在Spring Boot项目中,profile是一种方便在不同环境中运行应用程序的方式。可以通过定义不同的配置文件来区分不同的环境,比如开发环境、测试环境、生产环境等等。
二、profile的配置方式
Spring Boot提供了多种配置profile的方式,下面我们来逐一介绍。
1. 配置文件方式
在Spring Boot项目中,通过application-{profile}.properties/yaml等后缀的配置文件来定义不同环境中的配置信息,比如:
application-dev.properties(开发环境):
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
application-prod.properties(生产环境):
server.port=80
spring.datasource.url=jdbc:mysql://192.168.1.100:3306/prod
spring.datasource.username=prod_user
spring.datasource.password=prod_password
在application.properties(或者application.yml)中定义默认的配置信息,比如:
spring.application.name=myapp
spring.profiles.active=dev
这里定义了默认的profile为dev,如果没有设定时就会默认使用dev环境中的配置信息。
2. 注解方式
通过在Java Config中使用@Profile注解来定义不同环境的配置信息,例如:
@Configuration
@Profile("dev")
public class DevDataSourceConfig {
@Bean
public DataSource dataSource() {
return new DriverManagerDataSource("jdbc:h2:mem:test", "sa", "");
}
}
@Configuration
@Profile("prod")
public class ProdDataSourceConfig {
@Bean
public DataSource dataSource() {
return new DriverManagerDataSource("jdbc:mysql://localhost/mydb", "user", "pass");
}
}
在这个例子中,我们定义了两个不同的数据源配置类,分别用@Profile("dev")和@Profile("prod")注解来表示在dev和prod环境下使用不同的数据源。
3. 配置类方式
可以通过@ConfigurationProperties(prefix = "xxx")注解来定义不同环境下的配置信息,例如:
@Configuration
public class AppConfig {
@Bean
@ConfigurationProperties(prefix = "myapp")
public MyConfig myConfig() {
return new MyConfig();
}
}
public class MyApp {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.register(AppConfig.class);
context.getEnvironment().setActiveProfiles("dev");
context.refresh();
MyConfig myConfig = (MyConfig) context.getBean("myConfig");
}
}
在这个例子中,我们定义了一个@ConfigurationProperties(prefix = "myapp")注解的类MyConfig来存放需要读取的配置信息,在main方法中通过设置Active Profiles为dev,来在dev环境中读取相应的配置信息。
三、例子
下面我将举两个具体的例子来演示如何在Spring Boot中使用profile。
1. 连接数据库
我们假设一个Spring Boot项目需要连接不同环境的数据库,并且需要在启动时动态选择对应的profile。
1.1. 创建项目
首先,我们创建一个名为springboot-profile-demo的maven项目,并添加如下依赖:
<!-- Spring Boot Web Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MySQL Driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
1.2. 创建配置文件
在src/main/resources目录下创建application.properties,内容如下:
spring.datasource.url=jdbc:mysql://localhost/mydb
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driverClassName=com.mysql.jdbc.Driver
此时,我们使用的是本地开发环境的MySQL数据库。
1.3. 定义配置类
在src/main/java下创建一个类DbConfig,用于动态读取不同profile下的数据库配置信息:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Configuration
@ConfigurationProperties(prefix = "spring.datasource")
@PropertySource("classpath:application.properties")
public class DbConfig {
private String url;
private String username;
private String password;
private String driverClassName;
// 省略getter/setter方法
}
1.4. 选择profile
修改Spring Boot的启动参数,指定profile为prod:
--spring.profiles.active=prod
当我们使用prod环境启动时,会读取到application-prod.properties中的配置信息。
完整代码:https://github.com/iamjimi/springboot-profile-demo
2. 日志配置
我们假设一个Spring Boot项目需要在不同环境输出不同级别的日志,而且需要在启动时动态选择对应profile。
2.1. 创建项目
首先,我们创建一个名为springboot-profile-demo的maven项目,并添加如下依赖:
<!-- Spring Boot Web Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.2. 创建配置文件
在src/main/resources目录下创建logback-spring.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<springProfile name="dev">
<logger name="com.example" level="DEBUG"/>
</springProfile>
<springProfile name="prod">
<logger name="com.example" level="INFO"/>
</springProfile>
</configuration>
此时,我们在dev环境下开启debug级别的日志输出,在prod环境下开启info级别的日志输出。
2.3. 选择profile
修改Spring Boot的启动参数,指定profile为prod:
--spring.profiles.active=prod
当我们使用prod环境启动时,会启用logback-spring.xml文件中prod profile中的配置信息,输出info级别的日志信息。
完整代码:https://github.com/iamjimi/springboot-profile-logger-demo
好了,以上就是关于“springboot入门之profile设置方式”的完整攻略了。希望对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot入门之profile设置方式 - Python技术站