Spring之Profile

本文介绍了在Spring中如何利用Profile进行环境切换。通过讲解Java配置和XML配置两种方式,展示了如何在不同环境下加载不同的配置,包括实体类、配置类和测试类的应用,帮助开发者在开发、测试和生产环境间灵活切换。
摘要由CSDN通过智能技术生成

在实际开发中,项目即将上线时,可能需要不停的在开发环境、生产环境、测试环境之间进行切换。
那么我们此时就需要用Profile来实现了

java配置实现

实体类

package com.zhouym.javabean;


public class DataSource {
	private String url;
	private String name;
	private String password;
	
	
	public DataSource(String url, String name, String password) {
		this.url = url;
		this.name = name;
		this.password = password;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "DataSource [url=" + url + ", name=" + name + ", password=" + password + "]";
	}
	
	
}

创建一个AppJavaConfig类

package com.zhouym.javabean;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
@ComponentScan("com.zhouym.javabean")
public class AppJavaConfig {
	
	//通过Profile注解,标记当前环境是出于什么环境下,我们可以通过在测试类那边传递profile的属性值动态的改变环境
	@Bean("ds")
	@Profile("dev") //profile dev标记为开发环境
	public DataSource devDs() {
		return new DataSource("http://devl.com", "root", "123456");
	}
	
	@Bean("ds")
	@Profile("pro")  //profile pro标记为生产环境
	public DataSource proDs() {
		return new DataSource("http://pros.com", "admin", "12345");
	}
}

测试类

package com.zhouym.javabean;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AutoTest {

	public static void main(String[] args) {		
		AnnotationConfigApplicationContext acac = new AnnotationConfigApplicationContext();
		acac.getEnvironment().setActiveProfiles("dev");
		acac.register(AppJavaConfig.class);
		acac.refresh();
		DataSource ds = acac.getBean(DataSource.class);
		System.out.println(ds);
		
	}

}

测试结果
在这里插入图片描述

改变profile的值为pro,结果为
在这里插入图片描述

xml配置实现

DataSource类

package com.zhouym.javabean;


public class DataSource {
	private String url;
	private String name;
	private String password;
	
		
	/**
	 * 提供无参构造
	 */
	public DataSource() {
	}
	public DataSource(String url, String name, String password) {
		this.url = url;
		this.name = name;
		this.password = password;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "DataSource [url=" + url + ", name=" + name + ", password=" + password + "]";
	}
	
	
}

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"
 xmlns:p="http://www.springframework.org/schema/p"
 xmlns:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
 http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
	<beans profile="dev">
		<bean class="com.zhouym.javabean.DataSource">
			<property name="url" value="http://devl.com"/>
			<property name="name" value="root"/>
			<property name="password" value="1234"/>
		</bean>
	</beans>
	
	<beans profile="pro">
		<bean class="com.zhouym.javabean.DataSource">
			<property name="url" value="http://pros.com"/>
			<property name="name" value="admin"/>
			<property name="password" value="1234"/>
		</bean>
	</beans>	
	
 </beans>

测试类

package com.zhouym.javabean;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AutoTest {

	public static void main(String[] args) {
		
		ClassPathXmlApplicationContext cpac = new ClassPathXmlApplicationContext();
		cpac.getEnvironment().setActiveProfiles("dev");
		cpac.setConfigLocation("ApplicationContext.xml");
		cpac.refresh();
		DataSource ds = cpac.getBean(DataSource.class);
		System.out.println(ds);
	}

}

测试结果
在这里插入图片描述
改变测试类中的profile值为pro,结果为
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值