Spring注解志@Profile和@ActiveProfiles

@Profile 注解:
1.使用@Profile的原因
在平时的开发中,通常开发一个开发库,测试一个测试库,生产一个生产库。
我们将数据库信息写在一个配置文件中,在部署的时候我们将配置文件改成对应的配置文件,这样改来改去非常麻烦。
在使用@Profile后,我们就可以定义3个配置文件dev、sit、pro其分别对应3个profile,在实际运行的时候只需给定一个参数,容器就会加载激活的配置文件,这样就简便了。
2.使用实战
(1)测试bean

public class TestBean {
	private String content;

	public TestBean(String content) {
		super();
		this.content = content;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}
	
}

(2)测试配置

@Configuration
public class TestConfig {
	@Bean
	@Profile("dev")
	public TestBean devTestBean() {
		return new TestBean("from development profile");
	}
	
	@Bean
	@Profile("pro")
	public TestBean proTestBean() {
		return new TestBean("from production profile");
	}
}

(3)测试

@RunWith(SpringJUnit4ClassRunner.class) 
//在SpringJUnit4ClassRunner在JUnit环境下提供Spring  TestContext Framework功能
@ContextConfiguration(classes={TestConfig.class}) //加载配置ApplicationContext,classes属性用来加载类
@ActiveProfiles("pro")//声明活动的profile
public class DemoBeanIntegrationTests {
	@Autowired
	private TestBean testBean;
	
	@Test
	public void prodBeanShouldInject() {
		String expected="from production profile";
		String actual=testBean.getContent();
		Assert.assertEquals(expected, actual);
	}
	
}

3.测试结果
(1)@ActiveProfiles(“pro”)测试
在这里插入图片描述
(2)@ActiveProfiles(“dev”)测试
Spring注解志@Profile和@ActiveProfiles_第1张图片

项目代码地址–码云

一名初学者如有问题欢迎指正。

你可能感兴趣的:(学习)