Spring-Profile环境切换
目录
DataSource.java
package org.javaboy.ioc;
/**
* @author 邓雪松 (づ ̄ 3 ̄)づ)
* @create 2021-10-23-19-17
*/
public class DataSource {
private String url;
private String username;
private String password;
@Override
public String toString() {
return "DataSource{" +
"url='" + url + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
JavaConfig.java(这是用java的方式后边的xml是配置方式)
package org.javaboy.ioc;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
/**
* @author 邓雪松 (づ ̄ 3 ̄)づ)
* @create 2021-10-21-21-00
*/
@Configuration
public class JavaConfig {
//比如下边的是生产环境 Profile()内指定bean的环境
@Bean
@Profile("dev")
DataSource devDs(){
DataSource ds = new DataSource();
ds.setUrl("jdbc:mysql:///vhr");
ds.setUsername("root");
ds.setPassword("123");
return ds;
}
//下边比如是开发环境的ds
@Bean
@Profile("prod")
DataSource prodDs(){
DataSource ds = new DataSource();
ds.setUrl("jdbc:mysql://192.168.23.56:3306/vhr");
ds.setUsername("root");
ds.setPassword("456");
return ds;
}
}
Main.java
package org.javaboy.ioc;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.lang.reflect.AnnotatedElement;
/**
* @author 邓雪松 (づ ̄ 3 ̄)づ)
* @create 2021-10-21-21-09
*/
public class Main {
public static void main(String[] args) {
//m2();
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext();
ctx.getEnvironment().setActiveProfiles("prod");
ctx.setConfigLocation("applicationContext.xml");
ctx.refresh();
DataSource ds = ctx.getBean(DataSource.class);
System.out.println("ds = " + ds);
}
private static void m2(){
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
//设置当前的环境
ctx.getEnvironment().setActiveProfiles("dev");//dev改为prod就是开发环境的了
ctx.register(JavaConfig.class);
ctx.refresh();//刷新容器
DataSource ds = ctx.getBean(DataSource.class);
System.out.println("ds = "+ds);
}
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<beans profile="dev">
<bean class="org.javaboy.ioc.DataSource" id="devDs">
<property name="url" value="jdbc:mysql:///vhr"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</bean>
</beans>
<beans profile="prod">
<bean class="org.javaboy.ioc.DataSource" id="prodDs">
<property name="username" value="root"/>
<property name="password" value="456"/>
<property name="url" value="jdbc:mysql://56.36.12.32..3306/vhr"/>
</bean>
</beans>
</beans>


浙公网安备 33010602011771号