It is a Java-based configuration option that enables you to write the most of your Spring configuration without using XML but with the help of few Java-based annotations. The Spring annotation wiring is not turned on in Spring Framework. Therefore, you need to enable it before you can use the Spring annotation-based wiring in the Spring Configuration file.
Below is the configuration file in case you want to use Annotation in your application:
- @Configuration and @Bean Annotations
By using annotations, Annotating a class using @Configuration, which will indicate that the class is managed by the Spring IoC container as a source of bean definitions.
The other one @Bean Annotation which inform Spring that a method which annotated herewith @Bean
@Configuration
public class HelloWorldDemo {
@Bean
public Hello hello(){
return new Hello();
}
}
Here, @Bean it works as bean ID
<beans>
<bean id = "hello" class = "com.demo.Hello" />
</beans>
public static void main(String[] arg) {
ApplicationContext cnt = new AnnotationConfigApplicationContext(HelloWorldDemo.class);
Hello hello= cnt.getBean(Hello.class);
hello.setMessage("Hello !");
hello.getMessage();
}
Here, we can load various configuration classes as follows
public static void main(String[] args) {
AnnotationConfigApplicationContext cnt = new AnnotationConfigApplicationContext();
cnt.register(AppConfig.class, OtherConfig.class);
cnt.register(AdditionalConfig.class);
cnt.refresh();
MyService myService = cnt.getBean(MyService.class);
myService.doStuff();
}
@Configuration
public class HelloWorldDemo {
@Bean
public Hello hello(){
return new Hello();
}
}
Here is the content of HelloDemo.java file
public class HelloDemo{
private String message;
public void setMessage(String message){
this.message = message;
}
public void getMessage(){
System.out.println("Your Message : " + message);
}
}
Following is the content of the MainDemo.java file
public class MainDemo {
public static void main(String[] args) {
ApplicationContext cnt = new AnnotationConfigApplicationContext(HelloWorldDemo.class);
Hello hello= cnt.getBean(Hello.class);
hello.setMessage("Hello!");
hello.getMessage();
}
}Your Message: Hello!
Now, Injecting the Bean Dependencies
@Configuration
public class AppConfigDemo {
@Bean
public Fun fun() {
return new Fun(bar());
}
@Bean
public Foo far() {
return new Foo();
}
}
Here, the fun bean receives a reference to foo via the constructor injection.

























