Skip to content

Latest commit

 

History

History
142 lines (106 loc) · 2.92 KB

File metadata and controls

142 lines (106 loc) · 2.92 KB

Add bean to Spring context using stereotype annotation

This project is based on chapter 2.2.2. Using stereotype annotations to add beans to the Spring context from book Spring Starts here (2021) by Laurentiu Spilca.

Create Maven project with Intellij Idea

File > New project > Java

Add Spring Context dependency

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>6.1.10</version>
</dependency>

Create entity

public class Book {
    private final String title;

    public Book() {
        this.title = "One Hundred Years of Solitude";
    }

    public String getTitle() {
        return title;
    }
}

Mark entity with @Component annotation

+ @Component
public class Book {
    private final String title;

    public Book() {
        this.title = "One Hundred Years of Solitude";
    }

    public String getTitle() {
        return title;
    }
}

Create configuration class

@Configuration
public class ApplicationConfiguration {
}

Configure component scan in configuration class

@Configuration
+ @ComponentScan(basePackages = "org.example")
public class ApplicationConfiguration {
}

Create Spring context

ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfiguration.class);

Get bean from Spring context

Book book = context.getBean(Book.class);

Add tests

Add dependency for Spring TestContext Framework

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>6.1.10</version>
    <scope>test</scope>
</dependency>

Add dependency for JUnit

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.11.0-M2</version>
    <scope>test</scope>
</dependency>

Create test to check that application context is created

public class ApplicationTests {

    @Test
    @DisplayName("Checks that Application Context is created")
    public void checkApplicationContextCreated() {
        ApplicationContext context = new AnnotationConfigApplicationContext();

        assertNotNull(context);
    }
}

Create test to check that book is added to Spring context

  • use @ExtendWith(SpringExtension.class) to integrate Spring TestContext Framework to the test
  • use @ContextConfiguration to configure Spring context in Spring integration tests
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = { ApplicationConfiguration.class })
public class BookTests {

    @Autowired
    private Book book;

    @Test
    @DisplayName("Fetch the book bean from the context")
    public void fetchBookBean() {
        String actualTitle = book.getTitle();
        String expectedTitle = "One Hundred Years of Solitude";

        assertEquals(actualTitle, expectedTitle);
    }
}