This project is based on chapter 2.2.1. Using the @Bean annotation to add beans into 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>
public class Book {
private String title;
public Book(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Book)) {
return false;
}
Book book = (Book) obj;
return title.equals(book.title);
}
public int hashCode() {
return title.hashCode();
}
}
@Configuration
public class ApplicationConfiguration {
}
@Configuration
public class ApplicationConfiguration {
+ @Bean
+ Book book() {
+ return new Book(" One Hundred Years of Solitude");
+ }
}
ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfiguration.class);
Book book = context.getBean("book", Book.class);
<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 actualBook;
@Test
@DisplayName("Fetch the book bean from the context")
public void fetchBookBean() {
Book expectedBook = new Book("One Hundred Years of Solitude");
assertEquals(expectedBook, actualBook);
}
}