Java-Spring入门:IOC容器与依赖注入
-
Spring是什么?(一个轻量级的Java开发框架,核心是IOC和AOP)。
-
为什么需要它?(解决传统Java EE开发中对象耦合度高、代码臃肿的问题)。
-
什么是IOC/DI?(用“工厂模式+配置文件/注解”来管理对象,而不是由对象自己创建依赖)。
-
一个最简单的体验:用Spring容器获取一个Bean(对象),而不使用
new关键字。 -
Spring家族图谱:简单介绍Spring Boot(简化配置)、Spring MVC(Web层)、Spring Cloud(微服务)分别扮演什么角色。
1、Spring 是什么?
| 传统开发 |
对象之间的依赖关系(如 1、导致问题:导致代码耦合度高、难以测试、维护困难。 |
| Spring开发 |
Spring 提供了一个“容器”(即 IOC 容器),它负责创建和管理所有的对象(称为 Bean),并自动将依赖的对象“注入”给需要它的对象。 1、实现效果:对象不再主动找依赖,而是被动接收依赖。 |
| IOC(控制反转) |
对象的创建和管理权,从代码本身( |
| DI(依赖注入) |
IOC容器在创建对象时,自动把它所依赖的其他对象“注入”给它。 1、IOC 是一种设计思想,DI 是实现这种思想的具体方式。 |
2、代码示例
|
1、定义一个简单的服务类 // 1. 使用 @Component 注解,告诉 Spring 这个类需要被容器管理(就是Bean) @Component public class GreetingService { public String sayHello() { return "Hello from Spring!"; } }
|
2、创建 Spring 容器并获取 Bean import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; // 2. 配置类:告诉 Spring 要扫描哪些包下的注解 @Configuration @ComponentScan(basePackages = "com.example") // 扫描 com.example 包 class AppConfig { } public class SpringDemo { public static void main(String[] args) {
|
|
3、实际使用 // 1. Dao 类 @Component public class UserDao { public String getUserName() { return "张三"; } } // 2. Service 类,依赖 UserDao @Component public class UserService { // 使用 @Autowired 注解,Spring 会自动注入 UserDao 的实例 // 没有创建 UserDao,而是由 Spring 自动注入的 @Autowired private UserDao userDao; public void printUserName() { System.out.println("用户名: " + userDao.getUserName()); } } // 3. 在 main 方法中获取 UserService ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); UserService userService = context.getBean(UserService.class); userService.printUserName(); // 输出:用户名: 张三
|
3、Spring 家族图谱(简介)
| 项目 | 定位 | 核心价值 |
|---|---|---|
| Spring Framework | 基础框架 | 提供 IOC 容器、AOP 等核心能力(本篇介绍) |
| Spring Boot | 配置简化工具 |
1、“约定大于配置”,自动配置,快速创建独立应用。 2、基于 Spring Framework 的工具,通过“自动配置”和“起步依赖”,极大地简化了 Spring 应用的搭建和配置。 3、“开箱即用的 Spring”,底层依然是 IOC 容器和依赖注入这些核心机制。 |
| Spring MVC | Web 层框架 | 基于 Servlet 的 MVC 模式,用于构建 Web 应用和 RESTful API |
| Spring Cloud | 微服务工具集 | 提供服务注册、配置管理、网关等微服务治理能力 |
| Spring Data JPA | 数据访问简化 | 简化数据库访问的模板和 Repository 实现 |
本文来自博客园,作者:Fēngwèi,转载请注明原文链接:https://www.cnblogs.com/fengwei-blogs/p/22516836

浙公网安备 33010602011771号