寒假学习(5)

Spring框架的核心
依赖注入
在传统的编程中,类会直接创建其所依赖的对象。例如,一个 Car 类可能需要一个 Engine 对象,它会在构造函数或类中直接实例化 Engine:

public class Car {
    private Engine engine;

    public Car() {
        engine = new Engine(); // 直接实例化依赖对象
    }

    public void start() {
        engine.start();
    }
}

这种方式的缺点是 Car 类和 Engine 类之间紧密耦合,难以进行扩展和单元测试。
而通过依赖注入,Car 类不需要自己创建 Engine 实例,而是由外部容器(如Spring)提供给它所需要的依赖。
在Spring中,依赖注入有两种常见的方式:
构造器注入(Constructor Injection)
构造器注入是通过类的构造函数来传递依赖关系。在Spring中,使用@Autowired注解或XML配置来实现。

@Component
public class Engine {
    public void start() {
        System.out.println("Engine starting...");
    }
}

@Component
public class Car {
    private Engine engine;

    // 构造器注入
    @Autowired
    public Car(Engine engine) {
        this.engine = engine;
    }

    public void start() {
        engine.start();
    }
}

@Component注解用于标记Engine和Car为Spring容器管理的组件。
@Autowired注解标记构造器,表示Spring会自动注入Engine对象。
Spring容器会在启动时自动创建Engine和Car实例,并通过构造器将Engine注入到Car中。
Setter注入(Setter Injection)
Setter注入是通过对象的setter方法来设置依赖关系。

@Component
public class Engine {
    public void start() {
        System.out.println("Engine starting...");
    }
}

@Component
public class Car {
    private Engine engine;

    // Setter方法注入
    @Autowired
    public void setEngine(Engine engine) {
        this.engine = engine;
    }

    public void start() {
        engine.start();
    }
}

@Autowired注解放在setter方法上,Spring会自动调用该方法并传入Engine实例。

posted @ 2025-02-03 23:08  muxin1630  阅读(6)  评论(0)    收藏  举报