首页 > 其他分享 >Spring ioc的底层实现和特性

Spring ioc的底层实现和特性

时间:2022-12-03 23:26:13浏览次数:37  
标签:xml 容器 applicationContext spring 创建对象 Spring ioc 底层

首先,介绍一下spring,spring因为很好用,所以成为了java的行业标准,它在持久成,业务层都有自己的框架(Spring MVC等等。。),同时也可以兼容其他框架(Statu2 Mybatis等等)

然后就是spring的两个特点,一个是ioc,一个是aop。Aop的意思是面向切面编程,也就是,当有很多个业务在同一个地方都要做同一件事情时,比如在每个业务开头都创建日志文件,这个过程就不必在每个业务当中去一个一个写,而是把所有的业务的这个地方当做一个切面打开,然后再这个切面创建日志文件,从而节省时间,还便于管理,适用于企业级的大量业务的开发。

ioc就是提供一个容器来创建对象,在A类中如果要创建B类的对象的话,那么A就会依赖于B,当B变化是A就会受到很大影响。ioc就是提供容器,现在A类中创建对象不需要B类,而是通过容器来给A类中一个B类的对象,就降低了代码的耦合性。

那么要怎么通过容器来创建对象,需要一个xml文件,然后再需要创建对象的类中先加载配置文件,ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");

再调用applicationContext的getBean方法,从而获得对象:Student s =(Student) applicationContext.getBean("student");

 

 

这个ioc容器实现的底层原理,就是通过解析这个xml文件,然后通过反射获取里面类,获取方法。获取变量。 

 

 

 

 spring的特性有:scope作用域,spring继承,sprig的依赖,spring的p命名空间,spring的工厂模式

 

标签:xml,容器,applicationContext,spring,创建对象,Spring,ioc,底层
From: https://www.cnblogs.com/y-258/p/16949011.html

相关文章

  • Spring源码-01-调试代码
    Spring源码-01-调试代码Spring源码工程下新建模块用于调试源码一新建模块名称以spring为前缀二引入依赖plugins{id'java'}group'org.springframework'......
  • SpringBoot整合Mybatis多数据源
    Mybatis中如何配置多数据源一什么情况下会用到多数据库?场景1:一个商城网站,一个游戏网站,商城网站已经做好,游戏网站正在开发,游戏网站上的很多道具需要用到商城网站的产品数据,......
  • SpringBoot整合Mybatis多数据源
    Mybatis中如何配置多数据源一什么情况下会用到多数据库?场景1:一个商城网站,一个游戏网站,商城网站已经做好,游戏网站正在开发,游戏网站上的很多道具需要用到商城网站......
  • Spring Cloud GateWay基于nacos如何去做灰度发布
    如果想直接查看修改部分请跳转动手-点击跳转本文基于ReactiveLoadBalancerClientFilter使用RoundRobinLoadBalancer灰度发布灰度发布,又称为金丝雀发布,是一种新旧版本......
  • Spring Bean的生命周期
    说明:本文基于Spring-Framework5.1.x版本讲解概述说起生命周期,很多开源框架、中间件的组件都有这个词,其实就是指组件从创建到销毁的过程。那这里讲SpringBean的生......
  • SpringCloud+MyBatis+Redis整合—— 超详细实例(一)
    1、SpringCloud+MyBatisMyBatis是一款优秀的轻量级半自动持久层框架,与之相对应的还有hibernate框架。①  话不多说,接下来搭建SpringCloud+MyBatis环境:第一步......
  • Spring Boot 单元测试笔记
    1.导入JUnit5测试框架<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope......
  • SpringCloud+MyBatis+Redis整合—— 超详细实例
    SpringCloud+MyBatis+Redisredis①是一种nosql数据库,以键值对<key,value>的形式存储数据,其速度相比于MySQL之类的数据库,相当于内存读写与硬盘读写的差别,所以常常用作缓存,用......
  • SpringCloud游戏平台改造-Day1
    Day1今天主要的工作是有,新建项目结构(后期可能会根据实际情况修改),实现了登录注册API项目思路目前的项目思路为以下几部分:GameAuth:用来提供用户登录注册接口,认证接口......
  • SpringCloud游戏平台改造-Day2
    Day2今天主要目的是接入SpringSecurity和JWT,不多说开干!Day1Day2接入SpringSecurityStep1实现来自SpringSecurity的UserDetailService接口,实现它的loaduserByUser......