依赖注入是一种设计原则,主要用于减少类之间的紧耦合度,通过将对象的选择和创建逻辑外包给一个容器来实现动态注入。
适用场景:
- 当需要将对象的生命周期管理和依赖关系外包给外部容器时(如Spring DI容器)。
- 当应用程序希望通过配置文件或注解来动态更改对象依赖时。
@Component public class Circle implements Shape { @Override public void draw() { System.out.println("Drawing a Circle"); } } @Component public class Square implements Shape { @Override public void draw() { System.out.println("Drawing a Square"); } } public class ShapeService { private final Shape shape; @Autowired public ShapeService(Shape shape) { this.shape = shape; } public void drawShape() { shape.draw(); } } public class Main { public static void main(String[] args) { ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); ShapeService service = context.getBean(ShapeService.class); service.drawShape(); // 根据Spring配置或XML定义的Shape类型输出 } }