什么是 DTO、DAO、DO?

  • DAO(Data Access Object)数据库操作层的类,封装了增删改查的操作。

  • DO(Data Object)数据模型层,对应着数据库中表的结构。

  • DTO(Data Transfer Object)用于数据传输的对象,一般用于 controller 和 service、前后端之间传参。

什么是 IOC(控制反转)?

控制反转(Inversion of Control, 简称 IoC)的意思是:

原本由你自己(代码)控制依赖对象的创建、管理和生命周期,现在交给 Spring 容器来控制。

使用 Spring IoC 容器后,Spring 会自动帮你创建并注入 Java 对象。控制权“反转”给了 Spring 容器。

什么是依赖注入?

依赖注入是实现 IoC 的一种方式。也就是说:Spring 通过把依赖“注入”到对象中,而不是你自己“获取”依赖,从而实现了控制反转。注入方式有几种:

1、构造函数注入

@Service
public class UserService {
    private final UserRepository repo;

    public UserService(UserRepository repo) {
        this.repo = repo;
    }
}

2、Setter 注入

@Component
public class UserService {
    private UserRepository repo;

    @Autowired
    public void setRepo(UserRepository repo) {
        this.repo = repo;
    }
}

3、字段注入

@Autowired
private UserRepository repo;

IoC 是一种思想,依赖注入是实现这个思想的方式。

什么是 ApplicationContext?

在 Spring 中,ApplicationContext 是 IoC 容器的一个具体接口实现。

Spring IoC 是理念和机制,ApplicationContext 是这个机制的具体实现,Spring Boot 自动创建并使用 ApplicationContext 来托管整个应用的 Bean 生命周期。

SpringBoot 提供的一些接口

ApplicationContextAware

是 Spring 提供的一个“感知接口”(Aware Interface)。它定义如下:

public interface ApplicationContextAware {
    void setApplicationContext(ApplicationContext applicationContext) throws BeansException;
}

任何实现了这个接口的类,在被 Spring 容器创建并注入时,都会自动调用 setApplicationContext() 方法,传入当前的 ApplicationContext 实例。

CommandLineRunner

它是 Spring Boot 启动完成后的一次性钩子(Hook)机制。

使用示例如下,加上 @Component 后,这个类会被自动注册为 Spring Bean,Spring Boot 启动后会调用 run 方法。参数 args 就是启动 Spring Boot 应用时传入的命令行参数。

@Component
public class MyStartupRunner implements CommandLineRunner {

    @Override
    public void run(String... args) {
        System.out.println(">>> 应用启动完成,执行初始化逻辑...");
        for (String arg : args) {
            System.out.println("参数:" + arg);
        }
    }
}