🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
In this article, we will quickly discuss how to develop a simple Spring boot application using Java-based configuration.
We use @Configuration and @Bean annotations to develop a spring boot standalone in-memory application.
Overview
Spring provides @Configuration and @Bean annotations for Java-based configuration in the Spring boot application.
@SpringBootApplication annotation indicates a configuration class that declares one or more @Bean methods and also triggers auto-configuration and component scanning.
This is a convenience annotation that is equivalent to declaring @Configuration, @EnableAutoConfiguration, and @ComponentScan.
Read more about @SpringBootApplication annotation on Spring Boot @SpringBootApplication Annotation with Example
You may also interested in Spring (not Spring boot)Java-based configuration example on Spring Java Based Configuration Example
Let me create a brand new Spring boot project that demonstrates how to configure Spring boot applications using Java-based configuration.
1. Setup
Let's quickly create a Spring Boot application using Spring Initializr at http://start.spring.io/, which is an online Spring Boot application generator.
Add this Maven dependency to the pom.xml file:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>Here is the project structure or packaging structure for your reference:
In the next step, we will create a few service classes so that we can create Spring beans using @Bean Java-based configuration annotation.
2. Create Interfaces and Classes
In this example, we are sending messages using different services like SMSService, TwitterService, and EmailService.MessageService.java
Let's create a MessageService interface with the following content:
public interface MessageService { public void sendMsg(String message); }EmailService.java
Let's create an EmailService class that implements the MessageService interface and its method:
public class EmailService implements MessageService { public void sendMsg(String message) { System.out.println(message); } }SMSService.java
Let's create the SMSService class that implements the MessageService interface and its method:
public class SMSService implements MessageService { public void sendMsg(String message) { System.out.println(message); } }TwitterService.java
Let's create the TwitterService class that implements the MessageService interface and its method:
public class TwitterService implements MessageService { public void sendMsg(String message) { System.out.println(message); } }UserService.java
Let's create a UserService interface with the following content:
public interface UserService { public void processMsg(String message); } UserServiceImpl.java
Let's create the UserServiceImpl class that implements the UserService interface and its method:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; public class UserServiceImpl implements UserService { @Autowired @Qualifier("TwitterService") private MessageService messageService; public void setMessageService(MessageService messageService) { this.messageService = messageService; } public void processMsg(String message) { messageService.sendMsg(message); } } In the next step, we will create Spring beans for the above service classes using Bean Java-based configuration annotation.
3. Java-based Configuration
The main entry point class is annotated with @SpringBootApplication annotation so we can configure Spring beans in this class using @Bean annotation:import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import net.guides.springboot2.springboot2javaconfig.service.EmailService; import net.guides.springboot2.springboot2javaconfig.service.MessageProcessor; import net.guides.springboot2.springboot2javaconfig.service.MessageProcessorImpl; import net.guides.springboot2.springboot2javaconfig.service.MessageService; import net.guides.springboot2.springboot2javaconfig.service.SMSService; import net.guides.springboot2.springboot2javaconfig.service.TwitterService; @SpringBootApplication public class Springboot2JavaConfigApplication { @Bean(name = "emailService") public MessageService emailService() { return new EmailService(); } @Bean(name = "smsService") public MessageService smsService() { return new SMSService(); } @Bean(name = "twitterService") public MessageService twitterService() { return new TwitterService(); } @Bean public MessageProcessor messageProcessor() { return new MessageProcessorImpl(twitterService()); } public static void main(String[] args) { ApplicationContext applicationContext = SpringApplication.run(Springboot2JavaConfigApplication.class, args); MessageProcessor userService = applicationContext.getBean(MessageProcessor.class); userService.processMsg("twitter message sending "); } }Next, let's run this Spring boot application and you will see the output in the console:
Conclusion
We have used @Configuration and @Bean annotations to demonstrate Spring Java-based configuration and we haven't used @Service or @Component annotation in this example. (annotation-based configuration).
Check out the same example can be configured using XML based configuration on Spring Boot XML Configuration Example
Learn complete Spring Boot 2 on Spring Boot 2 Tutorial
Comments
Post a Comment
Leave Comment