1. Spring 是什么?
Spring 是一个开源的 Java 开发框架,核心目标是简化企业级应用开发。它提供了模块化工具(如 Spring MVC、Spring Security、Spring Data 等),让开发者更专注于业务逻辑,而非重复的底层代码。
容器是什么?
在 Spring 中,容器是一个装对象的'盒子',它负责创建、配置、组装你编写的 Java 对象(称为 Bean),并管理它们的生命周期。
IoC(控制反转) 是什么?
谁使用谁控制 => Spring 来控制。
是 Spring 的核心思想。传统代码中,对象自己控制依赖的创建(如 new Service());而 IoC 将控制权'反转'给容器——你只需声明依赖关系,容器自动注入所需对象。
例如:
// 传统方式:程序员自己创建依赖
UserService service = new UserService();
// IoC 方式:容器自动注入依赖
@Autowired
private UserService service;
简述 IoC 和 DI
控制反转(IoC)的核心思想是将对象的创建和管理权从传统的'谁使用谁控制'模式转变为由框架(如 Spring)统一管理。这种方式有效降低了组件间的耦合度,使系统更易于维护和扩展。
在 IoC 模式下,对象的生命周期完全由 Spring 容器管理,开发者无需手动实例化对象。依赖注入(DI)是 IoC 的一种实现方式,通过 DI,Spring 容器在运行时自动将依赖的对象注入到目标组件中,开发者只需声明依赖关系即可获得所需实例。
通过在类上面注释 @Component:告诉 Spring 将该对象的控制权转给 Spring。
在类中注明依赖之后注释 @Autowired:表明从 Spring 容器中拿出该对象并赋值给注明的依赖。
2. 详解 IoC
2.1 Bean 的存储
Spring 为了更好地完善 web 服务提供许多注解能够完成对象的存储,代替 @Component。
类注解: @Controller, @Service, @Repository, @Component, @Configuration
方法注解: @Bean
类注解:
@Controller public class UserController { public String sayHello(){ return "Hello World!"; } }
public static void main(String[] args) {
// 应用上下文
ApplicationContext context = SpringApplication.run(SpringIocDemoApplication.class, args);
context.getBean(UserController.class);
System.out.println(bean.sayHello());
}

