@Autowired
annotation either on constructor or setter method or fields. @Autowired
annotation is applied. autowire
attribute in the <bean>
tag. @Autowired
Annotation which is applied on constructor.
package in.sp.beans;
public class Engine
{
public void start()
{
System.out.println("Engine started...");
}
}
package in.sp.beans;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class Car
{
private Engine engine;
// Constructor for dependency injection
@Autowired
public Car(Engine engine)
{
this.engine = engine;
}
public void drive()
{
engine.start();
System.out.println("Car is running...");
}
}
package in.sp.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import in.sp.beans.Engine;
@Configuration
@ComponentScan(basePackages = "in.sp.beans")
public class AppConfig
{
@Bean
public Engine engine()
{
return new Engine();
}
}
package in.sp.main;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import in.sp.beans.Car;
import in.sp.config.AppConfig;
public class MainApp
{
public static void main(String[] args)
{
// Load Spring context using Java configuration
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
// Retrieve the Car bean
Car car = context.getBean(Car.class);
// Call the drive method
car.drive();
}
}
Engine started... Car is running...
@Autowired
Annotation which is applied on setter methods. package in.sp.beans;
public class Engine
{
public void start()
{
System.out.println("Engine started...");
}
}
package in.sp.beans;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class Car
{
private Engine engine;
// Setter method for dependency injection
@Autowired
public void setEngine(Engine engine)
{
this.engine = engine;
}
public void drive()
{
engine.start();
System.out.println("Car is running...");
}
}
package in.sp.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import in.sp.beans.Engine;
@Configuration
@ComponentScan(basePackages = "in.sp.beans") // Scans for @Component-annotated classes
public class AppConfig
{
@Bean
public Engine engine()
{
return new Engine();
}
}
package in.sp.main;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import in.sp.beans.Car;
public class MainApp
{
public static void main(String[] args)
{
// Loading Spring context from annotations
ApplicationContext context = new ClassPathXmlApplicationContext("in/sp/resources/applicationContext.xml");
Car car = context.getBean(Car.class);
car.drive();
}
}
Engine started... Car is running...
@Autowired
Annotation which is applied on fields. package in.sp.beans;
public class Engine
{
public void start()
{
System.out.println("Engine started...");
}
}
package in.sp.beans;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class Car
{
@Autowired
private Engine engine; // Field injection with @Autowired
public void drive()
{
engine.start();
System.out.println("Car is running...");
}
}
package in.sp.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import in.sp.beans.Engine;
@Configuration
@ComponentScan(basePackages = "in.sp.beans")
public class AppConfig
{
@Bean
public Engine engine()
{
return new Engine();
}
}
package in.sp.main;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import in.sp.beans.Car;
import in.sp.config.AppConfig;
public class MainApp
{
public static void main(String[] args)
{
// Load Spring context using Java configuration
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
// Retrieve the Car bean
Car car = context.getBean(Car.class);
// Call the drive method
car.drive();
}
}
Engine started... Car is running...
@Qualifier
or @Primary
annotations.
Your feedback helps us grow! If there's anything we can fix or improve, please let us know.
Weโre here to make our tutorials better based on your thoughts and suggestions.