什么是 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);
}
}
}