Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion spring-boot-modules/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
<module>flyway-multidb-springboot</module>
<module>spring-boot-admin</module>
<module>spring-boot-angular</module>
<module>spring-boot-config-order</module>
<module>spring-boot-annotations</module>
<module>spring-boot-annotations-2</module>
<module>spring-boot-artifacts</module>
Expand Down Expand Up @@ -167,4 +168,4 @@
</dependencies>
</dependencyManagement>

</project>
</project>
43 changes: 43 additions & 0 deletions spring-boot-modules/spring-boot-config-order/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.baeldung.springbootconfigorder</groupId>
<artifactId>spring-boot-config-order</artifactId>
<version>1.0</version>
<name>spring-boot-config-order</name>
<packaging>jar</packaging>

<parent>
<groupId>com.baeldung.spring-boot-modules</groupId>
<artifactId>spring-boot-modules</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

<properties>
<start-class>com.baeldung.Application</start-class>
</properties>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.baeldung.application;

import com.baeldung.application.defaultconfig.ConfigA;
import com.baeldung.application.defaultconfig.ConfigB;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class BeanOrderApplication {

public static void main(String[] args) {
SpringApplication.run(new Class[]{BeanOrderApplication.class, ConfigA.class, ConfigB.class},
args);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.baeldung.application.autoconfig;

import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@AutoConfigureOrder(1)
public class FirstAutoConfig {

@Bean
public String autoBeanOne() {
return "AutoBeanOne";
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.baeldung.application.autoconfig;

import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@AutoConfigureAfter(FirstAutoConfig.class)
public class SecondAutoConfig {

@Bean
public String autoBeanTwo() {
return "AutoBeanTwoAfterOne";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.baeldung.application.defaultconfig;

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

@Configuration
public class ConfigA {

@Bean
public String beanA() {
return "Bean A";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.baeldung.application.defaultconfig;

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

@Configuration
public class ConfigB {

@Bean
public String beanB() {
return "Bean B";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.baeldung.application.dependsonconfig;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;

@Configuration
public class DependsConfig {

@Bean
public String firstBean() {
return "FirstBean";
}

@Bean
@DependsOn("firstBean")
public String secondBean() {
return "SecondBeanAfterFirst";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.baeldung.application.orderbased;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;

@Configuration
@Order(1)
public class ConfigOne {

@Bean
public String configOneBean() {
return "ConfigOneBean";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.baeldung.application.orderbased;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;

@Configuration
@Order(2)
public class ConfigTwo {

@Bean
public String configTwoBean() {
return "ConfigTwoBean";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.baeldung.autoconfig;

import com.baeldung.application.autoconfig.FirstAutoConfig;
import com.baeldung.application.autoconfig.SecondAutoConfig;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;

import static org.assertj.core.api.Assertions.assertThat;

@SpringBootTest(classes = {SecondAutoConfig.class, FirstAutoConfig.class})
class AutoConfigOrderUnitTest {

@Autowired
private ApplicationContext context;

@Test
void givenAutoConfigs_whenLoaded_thenOrderFollowsAnnotations() {
String beanOne = context.getBean("autoBeanOne", String.class);
String beanTwo = context.getBean("autoBeanTwo", String.class);

assertThat(beanOne).isEqualTo("AutoBeanOne");
assertThat(beanTwo).isEqualTo("AutoBeanTwoAfterOne");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.baeldung.defaultconfig;

import com.baeldung.application.defaultconfig.ConfigA;
import com.baeldung.application.defaultconfig.ConfigB;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;

import static org.assertj.core.api.Assertions.assertThat;

@SpringBootTest(classes = {ConfigA.class, ConfigB.class})
class DefaultConfigOrderUnitTest {

@Autowired
private ApplicationContext context;

@Test
void givenConfigsWithoutOrder_whenLoaded_thenBeansExistRegardlessOfOrder() {
assertThat(context.getBean("beanA")).isEqualTo("Bean A");
assertThat(context.getBean("beanB")).isEqualTo("Bean B");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.baeldung.dependsonconfig;

import com.baeldung.application.dependsonconfig.DependsConfig;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;

import static org.assertj.core.api.Assertions.assertThat;

@SpringBootTest(classes = DependsConfig.class)
class DependsConfigUnitTest {

@Autowired
private ApplicationContext context;

@Test
void givenDependsOnBeans_whenLoaded_thenOrderIsMaintained() {
String first = context.getBean("firstBean", String.class);
String second = context.getBean("secondBean", String.class);

assertThat(first).isEqualTo("FirstBean");
assertThat(second).isEqualTo("SecondBeanAfterFirst");
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.baeldung.orderbased;

import com.baeldung.application.orderbased.ConfigOne;
import com.baeldung.application.orderbased.ConfigTwo;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;

import static org.assertj.core.api.Assertions.assertThat;

@SpringBootTest(classes = {ConfigTwo.class, ConfigOne.class})
class OrderedConfigUnitTest {

@Autowired
private ApplicationContext context;

@Test
void givenOrderedConfigs_whenLoaded_thenOrderIsRespected() {
String beanOne = context.getBean("configOneBean", String.class);
String beanTwo = context.getBean("configTwoBean", String.class);

assertThat(beanOne).isEqualTo("ConfigOneBean");
assertThat(beanTwo).isEqualTo("ConfigTwoBean");
}
}