news 2026/6/9 17:25:45

Spring 核心基础总结(容器 注解开发)(基于黑马ssm网课进行总结)(day3)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring 核心基础总结(容器 注解开发)(基于黑马ssm网课进行总结)(day3)

Spring 核心基础总结(容器 & 注解开发)

本文依旧参考黑马网课ssm进行总结,上一节课的内容:Spring 中的依赖注入与数据源对象管理详解


📚 目录(点击跳转对应章节)

一、Spring 容器(IoC Container)
二、Bean 相关知识
三、Spring 注解开发
四、Bean 生命周期(重点 ⭐)
五、依赖注入(DI)
六、第三方 Bean 管理(重点 ⭐)
七、@Configuration 注解说明
八、XML 配置 vs 注解配置对比
九、总结


一、Spring 容器(IoC Container)

1️⃣ 什么是 Spring 容器

Spring 容器是管理对象(Bean)创建、依赖注入、生命周期的核心组件。

核心思想:

IoC(控制反转)—— 对象的创建和依赖关系由 Spring 容器统一管理,而不是由程序员手动 new。


2️⃣ 创建容器的方式

常见容器接口:

  • ApplicationContext(推荐,功能更强)
  • BeanFactory(底层接口)

示例:

ApplicationContextctx=newClassPathXmlApplicationContext("applicationContext.xml");

3️⃣ 获取 Bean 对象的方式

BookDaobookDao=(BookDao)ctx.getBean("bookDao");
BookDaobookDao=ctx.getBean(BookDao.class);
BookDaobookDao=ctx.getBean("bookDao",BookDao.class);

二、Bean 相关知识

1️⃣ Bean 的定义

Bean 是由 Spring 容器创建、管理和维护的 Java 对象。


2️⃣ Bean 的作用范围(Scope)

作用域说明
singleton单例(默认)
prototype每次获取都创建新对象
requestHTTP 请求级别
sessionHTTP 会话级别
@Scope("singleton")

三、Spring 注解开发

1️⃣ 使用注解定义 Bean

常用注解:

注解作用
@Component通用组件
@Service业务层
@Repository持久层
@Controller表现层
@RepositorypublicclassBookDaoImplimplementsBookDao{}

2️⃣ 纯注解开发(无 XML)

核心注解:

@Configuration@ComponentScan("com.example")publicclassSpringConfig{}
ApplicationContextctx=newAnnotationConfigApplicationContext(SpringConfig.class);

四、Bean 生命周期(重点 ⭐)

1️⃣ 生命周期控制注解

@PostConstructpublicvoidinit(){System.out.println("bean init ...");}@PreDestroypublicvoiddestroy(){System.out.println("bean destroy ...");}

2️⃣ Bean 生命周期流程(Singleton)

  1. 🔄 整体生命周期流程(以 Singleton Bean 为例)
    1. 构造函数执行
      BookDaoImpl()被调用
      → 输出:book dao constructor ...
    2. 依赖注入完成
    3. @PostConstruct 方法执行
      init()被调用
      → 输出:book init ...
    4. Bean 可用(进入运行状态)
    5. 容器关闭 / Bean 销毁
    6. @PreDestroy 方法执行
      destroy()被调用
      → 输出:book destory ...

    执行构造方法

  2. 依赖注入完成

  3. 执行@PostConstruct

  4. Bean 就绪

  5. 容器关闭

  6. 执行@PreDestroy


五、依赖注入(DI)

依赖注入 = 由 Spring 容器为 Bean 注入其所依赖的对象或数据。


1️⃣ 引用类型注入(自动装配)

@AutowiredprivateBookDaobookDao;

2️⃣ 简单类型注入

@Value("Java编程思想")privateStringbookName;

3️⃣ 使用配置文件解耦(推荐)

配置文件:

book.name=Spring Boot

Java 中使用:

@Value("${book.name}")privateStringbookName;

👉 避免硬编码,降低耦合度。


六、第三方 Bean 管理(重点 ⭐)

1️⃣ 不推荐的方式(耦合高)

DruidDataSourceds=newDruidDataSource();

2️⃣ 使用@Bean管理第三方 Bean(推荐)

@ConfigurationpublicclassJdbcConfig{@BeanpublicDataSourcedataSource(){returnnewDruidDataSource();}}

3️⃣ 配置类的导入方式

✅ 导入式(推荐)
@Import(JdbcConfig.class)
❌ 扫描式(不推荐)
@ComponentScan

扫描式隐藏性强,容易忘记使用过哪些配置类。


七、@Configuration注解说明


八、XML 配置 vs 注解配置对比

对比项XML 配置注解配置
可读性一般
开发效率
解耦稍弱
维护成本
推荐程度

九、总结

✅ Spring 的核心价值:

📌最佳实践建议:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 4:21:57

为什么你的新闻分析需要LangChain智能助手?3个关键优势解析

为什么你的新闻分析需要LangChain智能助手?3个关键优势解析 【免费下载链接】langchain 项目地址: https://gitcode.com/gh_mirrors/lan/langchain 在信息爆炸的时代,企业决策者每天面对海量新闻资讯,如何快速筛选出有价值的信息成为…

作者头像 李华
网站建设 2026/6/5 4:54:00

ServerPackCreator终极指南:轻松构建Minecraft服务器包

ServerPackCreator终极指南:轻松构建Minecraft服务器包 【免费下载链接】ServerPackCreator Create a server pack from a Minecraft Forge, NeoForge, Fabric, LegacyFabric or Quilt modpack! 项目地址: https://gitcode.com/gh_mirrors/se/ServerPackCreator …

作者头像 李华
网站建设 2026/6/5 4:53:15

10分钟精通Koikatsu Sunshine汉化补丁:进阶玩家终极指南

10分钟精通Koikatsu Sunshine汉化补丁:进阶玩家终极指南 【免费下载链接】KKS-HF_Patch Automatically translate, uncensor and update Koikatsu Sunshine! 项目地址: https://gitcode.com/gh_mirrors/kk/KKS-HF_Patch 还在为Koikatsu Sunshine的语言障碍和…

作者头像 李华
网站建设 2026/6/5 6:06:48

全面掌握Whisky:macOS平台Windows程序运行实战指南

全面掌握Whisky:macOS平台Windows程序运行实战指南 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 在macOS环境中无缝运行Windows程序是许多用户的迫切需求,而…

作者头像 李华
网站建设 2026/6/5 9:16:56

AI视频补帧革命:用SVFI让卡顿视频秒变流畅大片

AI视频补帧革命:用SVFI让卡顿视频秒变流畅大片 【免费下载链接】Squirrel-RIFE 项目地址: https://gitcode.com/gh_mirrors/sq/Squirrel-RIFE 还在为视频播放时的卡顿和画面撕裂而烦恼吗?SVFI视频补帧工具基于先进的RIFE算法,通过AI智…

作者头像 李华