spring 容器结构/机制debug分析和几个重要概念以及IOC 的开发模式

简介: spring 容器结构/机制debug分析和几个重要概念以及IOC 的开发模式

😀前言

本片文章是spring 容器结构/机制debug分析和几个重要概念以及IOC 的开发模式

🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉



💝spring 容器结构/机制debug分析和几个重要概念以及IOC 的开发模式

🥰Spring 学习的核心内容

解读上图:

1、Spring 核心学习内容 IOC、AOP, jdbcTemplate, 声明式事务

2、IOC: 控制反转 , 可以管理 java 对象

3. AOP : 切面编程

4. JDBCTemplate : 是 spring 提供一套访问数据库的技术, 应用性强,相对好理解

5. 声明式事务: 基于 ioc/aop 实现事务管理, 理解需要花时间

6. IOC, AOP 是重点同时难点

💗Spring 几个重要概念

1. Spring 可以整合其他的框架(解读: Spring 是管理框架的框架)

2. Spring 有两个核心的概念: IOC 和 AOP

3. IOC [Inversion Of Control 反转控制]

● 传统的开发模式

[JdbcUtils / 反射]程序------>环境 //程序读取环境配置,然后自己创建对象

解读上图

(以连接到数据库为例说明)

1、程序员编写程序, 在程序中读取配置信息

2. 创建对象, new Object???() // 反射方式

3. 使用对象完成任务

❤️‍🔥● IOC 的开发模式

程序<-----容器 //容器创建好对象,程序直接使用.

解读上图

1、Spring 根据配置文件 xml/注解, 创建对象, 并放入到容器(ConcurrentHashMap)中,并且可以完成对象之间的依赖

2、当需要使用某个对象实例的时候, 就直接从容器中获取即可

3、程序员可以更加关注如何使用对象完成相应的业务, (以前是 new ... ==> 注解/配置方式)

4. DI—Dependency Injection 依赖注入,可以理解成是 IOC 的另外叫法.

5. Spring 最大的价值,通过配置,给程序提供需要使用的

web 层[Servlet(Action/Controller)]/Service/Dao/[JavaBean/entity]对象,这个是核心价值所在,也是 ioc 的具体体现, 实现解耦

代码示例—入门

通过 Spring 的方式[配置文件],获取 JavaBean: Monster 的对象,并给该的对象属性赋 值,输出该对象信息.

查看容器注入了哪些 bean 对象,会输出 bean 的id

1. 创建容器 ApplicationContext

2. 该容器和容器配置文件关联

3. 通过getBean获取对应的对象   默认返回的是Object , 但是运行类型Monster

4. 输出

5. 也可以再获取的时候,直接指定Class类型, 可以在次获取

6. 查看容器注入了哪些bean对象,会输出bean的id

public void getMonster() {
        //解读
        //1. 创建容器 ApplicationContext
        //2. 该容器和容器配置文件关联
        ApplicationContext ioc =
                new ClassPathXmlApplicationContext("beans.xml");
        //3. 通过getBean获取对应的对象
        //   默认返回的是Object , 但是运行类型Monster
        //Object monster01 = ioc.getBean("monster01");
        Monster monster01 = (Monster) ioc.getBean("monster01");
        //4. 输出
        System.out.println("monster01=" + monster01 + " 运行类型=" + monster01.getClass());
        System.out.println("monster01=" + monster01 + "属性name=" + monster01.getName() +
                " monserid=" + monster01.getMonsterId());
        //5. 也可以再获取的时候,直接指定Class类型, 可以在次获取
        Monster monster011 = ioc.getBean("monster01", Monster.class);
        System.out.println("monster011=" + monster011);
        System.out.println("monster011.name=" + monster011.getName());
        //6. 查看容器注入了哪些bean对象,会输出bean的id
        System.out.println("================================");
        String[] beanDefinitionNames = ioc.getBeanDefinitionNames();
        for (String beanDefinitionName : beanDefinitionNames) {
            System.out.println("beanDefinitionName=" + beanDefinitionName);
        }
        System.out.println("================================");
        System.out.println("ok~~~");
    }

xml代码

       1. 配置monster对象/javabean

       2. 在beans中可以配置多个bean

       3. bean表示就是一个java对象

       4. class属性是用于指定类的全路径->spring底层使用反射创建

       5. id属性表示该java对象在spring容器中的id, 通过id可以获取到对象

       6.  用于给该对象的属性赋值

 

<!--
    -->
    <bean class="com.spring.bean.Monster" id="monster01">
        <property name="monsterId" value="100"/>
        <property name="name" value="牛魔王"/>
        <property name="skill" value="芭蕉扇"/>
    </bean>

💞注意事项和细节

1、说明

ClassPathXmlApplicationContext ioc =

                                                       new ClassPathXmlApplicationContext("beans.xml");

为什么读取到 beans.xml

2、解释一下类加载路径

获取类加载的路径

File f = new File(this.getClass().getResource("/").getPath());

                       System.out.println(f);

3、debug 看看 spring 容器结构/机制

综合解图

😄总结

本篇讲解了spring 容器结构/机制debug分析--Spring 学习的核心内容和几个重要概念--IOC 的开发模式--综合解图


文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁

希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻

如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞


目录
相关文章
|
人工智能 JSON 安全
Spring Boot实现无感刷新Token机制
本文深入解析在Spring Boot项目中实现JWT无感刷新Token的机制,涵盖双Token策略、Refresh Token安全性及具体示例代码,帮助开发者提升用户体验与系统安全性。
1286 4
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
1066 26
|
9月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
9月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
928 6
|
9月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
849 6
|
XML 人工智能 Java
Spring IOC 到底是什么?
IOC(控制反转)是一种设计思想,主要用于解耦代码,简化依赖管理。其核心是将对象的创建和管理交给容器处理,而非由程序直接硬编码实现。通过IOC,开发者无需手动new对象,而是由框架负责实例化、装配和管理依赖对象。常见应用如Spring框架中的BeanFactory和ApplicationContext,它们实现了依赖注入和动态管理功能,提升了代码的灵活性与可维护性。
310 1
|
XML Java 数据格式
Spring IoC容器的设计与实现
Spring 是一个功能强大且模块化的 Java 开发框架,其核心架构围绕 IoC 容器、AOP、数据访问与集成、Web 层支持等展开。其中,`BeanFactory` 和 `ApplicationContext` 是 Spring 容器的核心组件,分别定位为基础容器和高级容器,前者提供轻量级的 Bean 管理,后者扩展了事件发布、国际化等功能。
400 18
|
JSON 前端开发 Java
Spring MVC 核心组件与请求处理机制详解
本文解析了 Spring MVC 的核心组件及请求流程,核心组件包括 DispatcherServlet(中央调度)、HandlerMapping(URL 匹配处理器)、HandlerAdapter(执行处理器)、Handler(业务方法)、ViewResolver(视图解析),其中仅 Handler 需开发者实现。 详细描述了请求执行的 7 步流程:请求到达 DispatcherServlet 后,经映射器、适配器找到并执行处理器,再通过视图解析器渲染视图(前后端分离下视图解析可省略)。 介绍了拦截器的使用(实现 HandlerInterceptor 接口 + 配置类)及与过滤器的区别
1215 0
|
存储 C++ 容器
高维结构投影系列(一):波函数与弦:万象的压缩容器
波函数与弦理论看似分属不同领域,实则揭示同一宇宙奥秘:用极简结构承载无限可能。波函数展现态空间的概率压缩,弦振动呈现粒子谱的展开选择。二者皆为高维结构的投影机制——一个映射态空间,一个映射谱空间。现实并非粒子碰撞,而是结构压缩与展开的选定分支。宇宙或是一套“压缩—展开”系统,现实只是可能性之海中被观测选中的片段。
531 0
|
XML Java 数据格式
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?

热门文章

最新文章