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.
File > New project > Java
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.1.10</version>
</dependency>
@Component
public class Book {
private String title;
public Book() {
this.title = "One Hundred Years of Solitude";
}
public String getTitle() {
return title;
}
}
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>3.0.0</version>
</dependency>
@Component
public class Book {
private String title;
public Book() {
this.title = "One Hundred Years of Solitude";
}
+ @PostConstruct
+ public void init() {
+ this.title = "Changed title";
+ }
public String getTitle() {
return title;
}
}
@Configuration
@ComponentScan(basePackages = "org.example")
public class ApplicationConfiguration {
}
ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfiguration.class);
Book book = context.getBean(Book.class);
System.out.println("The book's title is " + book.getTitle());
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>6.1.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.11.0-M2</version>
<scope>test</scope>
</dependency>
public class ApplicationTests {
@Test
@DisplayName("Checks that Application Context is created")
public void checkApplicationContextCreated() {
ApplicationContext context = new AnnotationConfigApplicationContext();
assertNotNull(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("Check that the book title was changed")
public void checkBookTitleChanged() {
String actualTitle = book.getTitle();
String expectedTitle = "Changed title";
assertEquals(expectedTitle, actualTitle);
}
}