springIOC简述

springIoc实现原理 spring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合 立即下载


1、spring概述
 spring是一个开源的设计层面框架,解决的是业务逻辑和其他各层的松耦合问题,
因为他将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量
级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。
 spring框架由很多模块组成,IOC、AOP、spring MVC、spring事务等,
 当然spring也可以整合其他框架例如:mybatis、shiro等。
2、spring IOC
 在java程序中,一个业务逻辑的实现往往需要多个对象来协作完成。在程序中我们使
用new Object()的方式创建对象,并且还要维护对象之间的相互依赖创建。所谓IOC(Inve
rsion of Control,控制反转),对于spring框架来说,就是由spring来负责控制对象的生
命周期以及对象之间的关系。对象的创建、销毁,对象之间的相互依赖关系都由spring来完
成,对象只需要关心业务逻辑本身就可以了。控制反转就是获得依赖对象的方式反转了。
2、1
 --需要的jar包
   --spring-core-4.3.5.RELEASE.jar
   --spring-beans-4.3.5.RELEASE.jar
   --spring-context-4.3.5.RELEASE.jar
   --spring-logging-4.3.5.RELEASE.jar
   --spring-expression-4.3.5.RELEASE.jar
2、2
 创建spring配置文件
  新建spring配置文件applicationContext.xml,该文件为spring配置的默认名,也可以
 自己起名字。
  <?xml version="1.0" encoding="UTF-8"?>
  <beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
  </beans>

2、3测试
  @Test
  public void testInitContext(){
   String conf = "applicationContext.xml";
   ApplicationContext applicationContext =
     new ClassPathXmlApplicationContext(conf);
   System.out.println(applicationContext);
  }
3 spring容器创建JavaBean

1、在applicationContext.xml中添加bean对象创建声明
  <!-- 用构造器来实例化bean -->
  <bean id="userDao" class="com.ztd.springdemo.demo01.UserDao"></bean>
1.2、获得bean
  @Test
  public void testInitContext(){
   //1.实例化spring容器
   String conf = "applicationContext.xml";
   ApplicationContext applicationContext =
     new ClassPathXmlApplicationContext(conf);
   //2.获得容器创建的bean实例
   UserDao userDao =
     (UserDao)applicationContext.getBean("userDao");
   userDao.create();
  }
1.3、bean属性注入
 1、以构造方法的方式注入属性
  <bean id="user" class="com.ztd.springdemo.demo01.User">
   <constructor-arg name="account" value="admin"/>
   <constructor-arg name="username" value="管理员"/>
  </bean>
 注意:必须有这个构造方法才行,参数名与构造方法中的保持一致
 2、以set方法的方式注入属性
  <bean id="user" class="com.ztd.springdemo.demo01.User">
   <property name="account" value="admin"/>
   <property name="username" value="管理員"/>
  </bean>
  注意:必须要有无参构造器方法和对应的getter/setter方法
 3、对象类型的属性的注入
  <bean id="userDao" class="com.ztd.springdemo.demo01.UserDao"
    init-method="init" destroy-method="destory" scope="singleton" />
  <bean id="userService" class="com.ztd.springdemo.demo01.UserService">
   <!-- ref属性:引用另一个bean的id或name -->
   <property name="userDao" ref="userDao"></property>
  </bean>
1.3、bean标签属性介绍
 1、bean的创建模式
  scope属性指定了bean的创建模式
   --singleton:单利的,默认的,只创建一个对象,调用getbean方法获取到的
  是同一个对象
   --prototype多例的,每次调用getbean方法获取的对象是从新创建的
  <bean id="userDao" class="com.ztd.springdemo.demo01.UserDao"
   scope="prototype"/>
 2、bean初始化和销毁的回调方法
 
  init-method属性指定的方法,在bean创建后自动调用
   <bean id="userDao" class="com.ztd.springdemo.demo01.UserDao"
    init-method="init"/>
    
  destory-method属性指定的方法,在bean销毁前自动调用
   <bean id="userDao" class="com.ztd.springdemo.demo01.UserDao"
    destroy-method="destroy"/>
 3、bean初始化时间
  lazy-init属性指定了bean的创建时间
  false:spring容器创建时就创建该bean
  true:使用该bean时创建
   <bean id="userDao" class="com.ztd.springdemo.demo01.UserDao"
    lazy-init="true"/>
4 spring自动组件扫描
  一般在xml配置文件中,声明一个bean或组件,spring容器会检测和注册该bean或组件。
 除了这种方式之外,spring还支持自动扫描bean或组件,这样就不必再在xml文件中繁琐的
 声明bean或组件。
 4.1、在applicationContext.xml中指定扫描类的路径
  <context:component-scan base-package="com.ztd.springdemo.demo02"/>
  如上注解会自动扫描com.ztd.springdemo.demo02包及其子包下所有组件类
 4.2、使用注解标注类
  指定了扫描路径后并不是该路径下所有类都会被spring容器实例化注册,只是在类上加上
 指定的注解标记时spring容器才会实例化注册。
  @Component   通用注解
  @Repository  持久化层组件注解
  @Service  业务层组件注解
  @Controller  控制层组件注解
  以上注解目前功能是一样,为了让标注类本身的用途看起来更清晰。
  
  import org.springframework.stereotype.Component;

   @Component
   public class UserDao {
    public void create(){
     System.out.println("创建了一个user");
    }
   }

  默认bean名字为类名首字母小写,如需自己指定bean的名字,使用如下方式
   @Component(“bean名字”)
   @Component("userDao")
   public class UserDaoImpl implements UserDao{
    public void create(){
     System.out.println("创建了一个user");
    }
   }

 4.2、bean属性注入
  1、 @Value 用于注入普通类型的属性
   
   @Value(“admain”)
   private String account;
  2、@Autowried 自动装配,是spring的注解
   默认按照类型注入
   若按名子注入则需要加@Qualifier强制使用名字注入
   @Autowried
   @Qualifier("userDaoImpl")
   private UserDao;
  3、@Resource 是JavaEE的注解
   先按照名字注入,找不到,则按照类型
   如需指定名字@Resource(name="bean名字")
   @Resource(name="userDaoImpl")
   private UserDao userDao;
 4.3 指定bean的创建模式
  默认为单利模式,如需多例@Scope(“prototype”)
  @Component
  @Scope("prototype")
  public class UserService {
  }
 4.4、指定bean初始化和销毁的回调方法
  bean初始化后的方法@PostConstruct
  bean销毁前执行的方法@PreDestroy
  @PostConstruct
  public void init(){
   System.out.println("userDao 創建");
  }

  @PreDestroy
  public void destroy(){
   System.out.println("userDao 銷毀");
  }

5、spring在web应用中的使用

 1、加入spring-web-*jar
 2、在web.xml中加入
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:applicationContext.xml</param-value>
 </context-param>
 <listener>
  <listener-class>org.springframework.web,context.ContextLoaderlistener</listener-class>
 <listener>
 3、从servletContext中获取spring容器实例
 ServletContext sc = getServletContext();
 ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(sc);

堆内存管理核心逻辑 超详细复习笔记 本文详细解析了堆内存管理的核心逻辑,包括初始化、分配和释放三个关键环节。系统通过全局堆管理结构体和链表机制实现动态内存管理:初始化时标记整块内存为空闲;分配时遍历链表查找合适空闲块并进行分割;释放时定位内存块头并重新标记为空闲,支持相邻块合并以减少碎片。文章对比了链表式管理和线性分配的优缺点,指出链表式更灵活但实现复杂,线性分配简单但无法释放。最后总结了常见错误(如指针回推错误、碎片问题)和扩展知识(不同内存管理算法)。这套机制是理解嵌入式系统和RTOS内存管理的基础。 阅读详情

相关推荐

Windows 11下用Ollama一键部署DeepSeek-R1大模型(附8B/14B版本选择建议)

本文详细介绍了在Windows 11环境下使用Ollama工具一键部署DeepSeek-R1大模型的完整指南,包括8B和14B版本的选择建议。通过硬件评估、安装配置、性能优化等步骤,帮助开发者高效实现本地部署,提升AI应用体验。

weixin_29079643的博客 272

Soring IOC和DI

在网上看了好多描述IOC和DI和文章,但感觉看他们的描述总感觉差点意思,所以我个人也总结了一些相关的概念,希望对面试或爱学习的小伙伴共勉。 IoC 和 DI: IoC (Inversion of Control): 大家常说就是控制反转。然而ioc不是一种新的技术,而是 Spring 的一种设计思想,这个相信大家使用过的小伙伴都应该知道。 何为ICO? 在传统的程序设计,我们直接在对象内部通过 new 来创建对象,是程序主动去创建依赖对象;而在 Spring 中有专门的一个容器来创建和管理这.

Liaryank的博客 370

threejs开发可视化数字城市效果

theme: condensed-night-purple 灵感图 现在随着城市的发展,越来越多的智慧摄像头,都被互联网公司布到城市的各个角落,举一个例子,一个大楼上上下下都被布置了智能摄像头,用于监控火势,人员进出,工装工牌佩戴等监控,这时候为了美化项目,大公司都会将城市的区域作为对象,进行3d可视化交互,接下来的内容,就是基于以上元素,开发的一款城市数据可视化的demo,包含楼宇特...

weixin_41770018的博客 1579

Spring核心知识-Ioc简述(概念和使用)

spring核心两大核心内容为ioc和aop。 本章节讲ioc的概念、作用和使用方式。 ioc简单介绍: 概念:控制反转,把对象创建和对象之间的调用过程,交给Spring管理 目的是降低耦合 底层原理:xml解析、工厂模式、反射 .过程: 1 xml解析得到类的全路径 ApplicationContext applicationContext =new ClassPathXmlApplicationContext("bean.xml"); 2 通过反射创建对象 3

weixin_42425732的博客 1818

使用Wireshark抓取用户在网站的登陆密码

(POST请求是浏览器向服务器提交数据的方式,我们的用户名和密码就是这样提交出去的),单击点开,发现我们的账号和密码,就被抓取到了,在。(注意哦,要去掉http和/,比如http://www.4399.com/,我们只需要记下4399.com即可)(这句话是筛选数据,就是只显示IP为我们要抓取网站的数据) ,点击右边的蓝色箭头。这就是Wireshark简单的抓取登录密码的教程,只适用于http协议的网站。”打开,是这个样子,上面的数据先不用管,我们先点击左上角红色的方块停止抓包。,然后回车,得到的IP为。

泡泡的博客 1万+

万字长文告诉新手如何学习Python图像处理(上篇完结 四十四) | 「Python」有奖征文

这篇文章是图像处理的最后一篇文章,后面我们将进入新的章节。图像处理文章主要讲解的图像处理方法包括图像几何运算、图像量化采样、图像点运算、图像形态学处理、图像增强、图像平滑、图像锐化、图像特效、图像分割、傅里叶变换与霍夫变换、图像分类等。个人感觉如果你是编程初学者、Python初学者或图像处理爱好者,这个系列真心适合你学习,并且这篇文章算是Python图像处理的学习路线,希望您喜欢。

杨秀璋的专栏 2万+

什么是IOC?

介绍:Spring框架是一个开源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程

weixin_64572002的博客 6233

【案例讲解】LVGL关于旋转的配置

在实现项目中,因为横竖屏的关系,需要对其做90度的旋转。配置旋转时发现一些局部刷新控件,旋转后效果不对。异常图标正常图标。

Bigan(安)的博客 4282

Spring —— IoC 简介

Spring —— IoC 简介

m0_51976820的博客 2287

从Safety Manual到系统安全概念

本文系统阐述了构建功能安全"证据链"的工程化方法论,核心要点包括:1)建立"风险→对策→验证→证据"闭环链条;2)SafetyManual和FMEDA作为关键证据支撑点,前者界定系统安全边界,后者量化诊断覆盖率;3)通过四步法继承芯片安全机制并扩展至系统级;4)形成"设计-分析-验证"三维闭环体系,包括安全目标、技术实现和验证矩阵;5)强调证据链闭环对安全认证和OEM认可的重要性。该方法论实现了从理论要求到工程实践的完整转化,确保安全设计可验证、可

VehSwHwDeveloper的博客 720

深度解析:C# Modbus TCP协议解析与异常处理(工控上位机必备)

协议解析要精准:掌握MBAP头和PDU的结构,尤其是常用功能码的请求/响应格式,避免因字节处理错误导致通信失败;异常处理要全面:覆盖通信层、协议层、数据层的所有异常类型,针对工业场景制定重试、重连、滤波等策略;资源管理要规范:使用释放资源,采用连接池复用连接,避免端口泄露;工业场景要适配:结合工控现场的特点(网络波动、电磁干扰、设备忙),优化通信效率和数据处理逻辑。通过以上解析和策略,可确保C#上位机与工业设备的Modbus TCP通信具备高稳定性、高可靠性、高容错性,满足工控领域的严苛要求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 996

Spring IoC简述

Spring IoC 简述

weixin_63898309的博客 508

ADS基础教程19 - 电磁仿真(EM)基本概念和实操

一、引言二、基本概念1.EM介绍2.Momentum介绍3.FEM介绍4.Substrate介绍三、创建Layout并进行Momentum仿真1.创建Layout2.添加Microtrip(微带线)3.添加Substrate4.Momentum仿真四、总结EM全称Electromagnetic,即electro(电)magnetic(磁)。ADS为设计和评估现代通信系统产品提供了电磁仿真工具(EM)。EM包括Momentumsimulator(动量仿真器)和FEM。

XZ_ZC的博客 1万+

SpringIOC原理与应用

ICO容器的结构如上图所示,首先要让IOC容器去读取Bean的配置信息,并在容器中生成一份相应的Bean定义注册表,根据这张注册表去实例化Bean,装配好Bean之间的依赖关系,为上层提供准备就绪的环境,Spring提供一个配置文件描述Bean还有Bean之间的依赖关系,利用Java语言的反射功能实例化Bean并建立Bean之间的依赖关系。 SpringIOC容器支持的...

一枚野生程序员 —— Tim 757

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SpringIOC框架

一、什么是SpringIOC SpringIOC就是把每一个bean(实体类)与bean(实体类)之间的关系交给第三方容器进行管理。 二、Xml配置 项目中的位置是:/demo/src/main/resources/applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:/...

LiGuogang 711

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

简述springIOC容器的bean加载流程

参考笔记:https://blog.51cto.com/u_14006572/3118363。

weixin_44348734的博客 827

SpringIOC的模拟实现

容器的初始化、Bean 实例的创建与依赖注入,以及最终调用。方法,对指定目录下的所有文件进行递归扫描,将文件路径存于。// 我们所持有的所有对象 在beans中。综上所述,整个程序的运行调用流程涵盖了。// 从beans 中获得对应的对象。//field 需要由我们来赋值。3. 获取Bean实例并调用方法。方法,设定基础路径和基础包名。注解标记的类的实例,将其存储在。// 根据当前域中的类型的名字。注解标记的字段进行依赖注入。列表,运用反射机制创建被。方法来执行具体业务逻辑。

m0_73971785的博客 950

SpringIoc代码示例与简述

一:简述 SpringIoc概念较为抽象,但其实不同之处就在于主动创建对象和被动创建对象的过程,拿饮品进行举例:要喝到果汁无疑就两种办法,自己做和买别人做的 1.主动创建对象 自己做果汁需要原料和工具,那么创建对象:JuiceMaker和Blender package springioc.activemake; /** * @Auther: 洺润Star * @Date: 2019/9/14...

洺润Star的博客 730

ioc简述(快速了解ioc及使用)

ioc简述(快速了解ioc及使用)

X2822889732的博客 1864

Spring中IOC详解

一、IOC的原型 IOC ----控制反转 比如我们有一个功能是获取用户数据,我们使用Dao层实现这个功能,再在Service层调用这个功能。但是我们每增加一个接口,比如获取mysql中的数据,就要修改原来的代码,如果再增加一个新的接口,又需要去service实现类中修改对应的实现。 解决方法 用户实际调用的是业务层,dao层他们不需要接触 UserServiceImpl userService = new UserServiceImpl(); userSe

qq_41359998的博客 1万+

Spring中IOC的理解(通俗易懂版)

文章目录1.IOC提出背景2:IOC的核心概念3:IOC的实现方式4:IOC的入门案例(1):思路分析(2):代码解析5:DI入门案例(1):思路分析(2):代码解析 1.IOC提出背景 代码书写现状:耦合度太高,我们修改一处代码,往往要修改很多出相关联的代码。 举例如下:当我们在数据层中不满足BookDaoImpl2中提供的方法了,我们写了新的实现类BookImpl,那么当业务层想要调用数据层中的实现方法的时候,我们就要修改 new 的对象。那么引发问题 我们该一处代码,就要修改与其相关联的代.

qq_48508278的博客 1万+

SpringIOC机制详解

所谓Bean的作用域其实就是指Spring给我们创建出的对象的存活范围,在配置文件中通过bean的scope属性指定取值范围说明singleton默认值,单例的prototype多例的requestWEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中sessionWEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中。

互联网底层民工的博客 9560

IOC简述

ioc面试前必看

weixin_44402870的博客 1228

Spring之IOC概念

IOC就是控制反转,把对象创建和对象之间的调用过程交给Spring进行管理。

肥羊的博客 1276

IOC 概述

控制反转(Inversion of Control,简称IOC)是一种设计原则,它通过将对象的创建和管理权交给外部容器来实现对象之间的解耦。传统的编程模式中,对象的创建和依赖关系是由应用程序自己管理的,而在IOC中,这些工作由容器负责。这样可以提高代码的可维护性、可测试性,并降低代码的耦合度。依赖注入(Dependency Injection,简称DI)是实现IOC的一种具体方式,它通过将对象的依赖关系注入到对象中,来实现对象之间的解耦。

weixin_51052174的博客 1946

spring的ioc是什么

浅谈对ioc的理解

qq_68992353的博客 1233

一文简述IOC

概述 ioc容器作为spring框架核心组件之一,此篇文章对其进行简述分析 概念: ioc全称Inversion of Control ,翻译为控制反转; 那么什么是控制反转? 在讨论这个问题前先看下对象的创建有哪些方式? //new Student stu=new Student(); //使用反射1 Class clazz =Class.forName("xxx.Student"); Student stu=(Student)clazz.newInstance(); //使用反射2 使用构造器类 C

山海可平的博客 748
上一篇: java线程 同步与异步
下一篇: Mybatis入门
sike_java
博客等级 码龄9年 16粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值