JAVA-19547 Move articles from spring-core-2 module to spring-boot modules (#13730)

This commit is contained in:
anuragkumawat
2023-03-30 22:00:57 +05:30
committed by GitHub
parent 8edd798024
commit 1e042cc6fe
19 changed files with 49 additions and 50 deletions

View File

@@ -0,0 +1,5 @@
package com.baeldung.profiles;
public interface DatasourceConfig {
void setup();
}

View File

@@ -0,0 +1,15 @@
package com.baeldung.profiles;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
@Component
@Profile("dev")
public class DevDatasourceConfig implements DatasourceConfig {
@Override
public void setup() {
System.out.println("Setting up datasource for DEV environment. ");
}
}

View File

@@ -0,0 +1,15 @@
package com.baeldung.profiles;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
@Component
@Profile("production")
public class ProductionDatasourceConfig implements DatasourceConfig {
@Override
public void setup() {
System.out.println("Setting up datasource for PRODUCTION environment. ");
}
}

View File

@@ -0,0 +1,18 @@
package com.baeldung.profiles;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
@Component
public class ProfileManager {
@Autowired
private Environment environment;
public void getActiveProfiles() {
for (final String profileName : environment.getActiveProfiles()) {
System.out.println("Currently active profile - " + profileName);
}
}
}

View File

@@ -0,0 +1,12 @@
package com.baeldung.profiles;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Configuration
@ComponentScan("com.baeldung.profiles")
@PropertySource(value = "classpath:application.properties")
public class SpringProfilesConfig {
}

View File

@@ -4,4 +4,34 @@ management.metrics.enable.jvm=true
management.endpoint.restart.enabled=true
spring.datasource.tomcat.jmx-enabled=false
management.endpoint.shutdown.enabled=true
spring.config.import=file:./additional.properties,optional:file:/Users/home/config/jdbc.properties
spring.config.import=file:./additional.properties,optional:file:/Users/home/config/jdbc.properties
#---
spring.profiles.active=@spring.profiles.active@
my.prop=used-always-in-all-profiles
#---
spring.config.activate.on-profile=dev
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/db
#spring.datasource.username=root
#spring.datasource.password=root
#---
spring.config.activate.on-profile=production
#spring.datasource.driver-class-name=org.h2.Driver
#spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
#spring.datasource.username=sa
#spring.datasource.password=sa
#---
spring.profiles.group.production=proddb,prodquartz
#---
spring.config.activate.on-profile=proddb
db=url_to_production_db
#---
spring.config.activate.on-profile=prodquartz
quartz=url_to_quartz_scheduler

View File

@@ -0,0 +1,15 @@
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"
>
<beans profile="dev">
<bean id="devDatasourceConfig" class="com.baeldung.profiles.DevDatasourceConfig"/>
</beans>
<beans profile="production">
<bean id="productionDatasourceConfig" class="com.baeldung.profiles.ProductionDatasourceConfig"/>
</beans>
</beans>

View File

@@ -0,0 +1,23 @@
package com.baeldung.profiles;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("dev")
@ContextConfiguration(classes = { SpringProfilesConfig.class }, loader = AnnotationConfigContextLoader.class)
public class DevProfileWithAnnotationIntegrationTest {
@Autowired
DatasourceConfig datasourceConfig;
@Test
public void testSpringProfiles() {
Assert.assertTrue(datasourceConfig instanceof DevDatasourceConfig);
}
}

View File

@@ -0,0 +1,32 @@
package com.baeldung.profiles;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("production")
@ContextConfiguration(classes = { SpringProfilesConfig.class }, loader = AnnotationConfigContextLoader.class)
public class ProductionProfileWithAnnotationIntegrationTest {
@Autowired
DatasourceConfig datasourceConfig;
@Autowired
Environment environment;
@Test
public void testSpringProfiles() {
for (final String profileName : environment.getActiveProfiles()) {
System.out.println("Currently active profile - " + profileName);
}
Assert.assertEquals("production", environment.getActiveProfiles()[0]);
Assert.assertTrue(datasourceConfig instanceof ProductionDatasourceConfig);
}
}

View File

@@ -0,0 +1,22 @@
package com.baeldung.profiles;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SpringProfilesConfig.class }, loader = AnnotationConfigContextLoader.class)
public class SpringProfilesWithMavenPropertiesIntegrationTest {
@Autowired
DatasourceConfig datasourceConfig;
@Test
public void setupDatasource() {
Assert.assertTrue(datasourceConfig instanceof DevDatasourceConfig);
}
}

View File

@@ -0,0 +1,33 @@
package com.baeldung.profiles;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
public class SpringProfilesWithXMLIntegrationTest {
private ClassPathXmlApplicationContext classPathXmlApplicationContext;
@Test
public void testSpringProfilesForDevEnvironment() {
classPathXmlApplicationContext = new ClassPathXmlApplicationContext("classpath:springProfiles-config.xml");
final ConfigurableEnvironment configurableEnvironment = classPathXmlApplicationContext.getEnvironment();
configurableEnvironment.setActiveProfiles("dev");
classPathXmlApplicationContext.refresh();
final DatasourceConfig datasourceConfig = classPathXmlApplicationContext.getBean("devDatasourceConfig", DatasourceConfig.class);
Assert.assertTrue(datasourceConfig instanceof DevDatasourceConfig);
}
@Test
public void testSpringProfilesForProdEnvironment() {
classPathXmlApplicationContext = new ClassPathXmlApplicationContext("classpath:springProfiles-config.xml");
final ConfigurableEnvironment configurableEnvironment = classPathXmlApplicationContext.getEnvironment();
configurableEnvironment.setActiveProfiles("production");
classPathXmlApplicationContext.refresh();
final DatasourceConfig datasourceConfig = classPathXmlApplicationContext.getBean("productionDatasourceConfig", DatasourceConfig.class);
Assert.assertTrue(datasourceConfig instanceof ProductionDatasourceConfig);
}
}