spring 核心技术
1--控制反转或反向控制 (inversion control IOC)

当一个对象需要另一个对象时, 传统设计过程中, 需要通过调用者来创建被调用着的对象实例
但是在spring中, 创建被调用者的工作不再有调用者来完成,而是由spring IOC容器完成.DI(dependency injection) 依赖注入
就是组件之间的依赖关系有容器在运行期决定,形象的来说, 就是由容器动态的将某种依赖关系注入到组件中
容器就是 .xml配置文件通过使用DI,当组件之间关系发生变化时,我们只需要修改系统中相关配置文件,不需要改动代码,这就减少了程序维护量, 又提高了程序的可重用性

2--手动装配
A:Bean工厂

使用org.springframework.beans.factory.BeanFactory接口来获得Bean对象实例
在spring中有很多BeanFactory接口的实现, 但最常用的是org.springframework.beans.factory.xml.XmlBeanFactory,
通过XmlBeanFactory类可以从xml配置文件中读取配置文件中Bean的装配信息, 并在spring容器中建立相应的javaBean对象实例,并返回该实例要想建立一个XmlBeanFactory对象实例, 需要将配置文件通过FileSystemResource对象传入XmlBeanFactory类的构造器
并通过BeanFactory的getBean方法获取Bean实例
eg:
装配applicationContext.xml文件
BeanFactory factory = new XmlBeanFactory(new FileSystemResource("applicationContext.xml"));
获得被装配的HelloWorld对象实例
HelloWorld helloworld = (HelloWorld)factory.getBean("helloworld");

B:应用上下文(ApplicationContext)

通过org.springframework.context.ApplicationContext接口来装配Bean
在spring中有两种方式实现:
FileSystemXmlApplicationContext:通过绝对或相对路径指定xml配置文件
ClassPathXmlApplicationContext: 从路径中搜索xml配置文件

例:

1--定义一个Bean叫Person, 属性: 姓名, 年龄, 工资. 使用spring IOC容器将各个属性值注入实例中

<bean id="person" class="com.spring.di01.Person"><property name="name" value="张三"></property><property name="age" value="11"></property><property name="salary" value="10086"></property>
</bean>

2--Person中增加一个User属性user和user2

  <bean id="user" class="com.spring.di01.User"><property name="id" value="2"></property><property name="username" value="mary"></property><property name="password"><value>123123</value></property></bean><bean id="person" class="com.spring.di01.Person"><property name="name" value="张三"></property><property name="age" value="11"></property><property name="salary" value="10086"></property><!-- 外部注入 --><property name="user"><ref bean="user"></ref></property><!-- 内部注入 --><property name="user2"><bean class="com.spring.di01.User"><property name="id" value="22"></property><property name="username" value="mary2"></property>            </bean></property></bean>

转载于:https://www.cnblogs.com/myjavalife/p/4899491.html

spring 核心技术相关推荐

  1. Spring核心技术原理-(2)-通过Web开发演进过程了解一下为什么要有Spring AOP?

    上一篇: Spring核心技术原理-(1)-通过Web开发演进过程了解一下为什么要有Spring? 上一篇从Web开发演进过程的一个侧面简述了一下为什么会有Spring?事实上只介绍了为什么会有Spr ...

  2. spring(7)---深入理解Spring核心技术——Spring中的各模块详解

    深入理解Spring核心技术--Spring中的各模块详解 Spring框架的两个基本概念IOC容器和AOP,相信大家现在对Spring中的这两个部分的基本概念有了一定的认识,好了,那么今天我们就来正 ...

  3. Spring 二、Spring核心技术

    二.Spring核心技术 1. IOC(控制反转) 1.1 什么是IOC IoC(Inversion of Control),意为控制反转,不是什么技术,而是一种设计思想.Ioc意味着将你设计好的对象 ...

  4. Spring 核心技术 - 数据缓冲区和编解码器

    Spring 学习指南大全 Spring 核心技术 官方文档版本 Version 5.2.22.RELEASE 文章目录 数据缓冲区和编解码器 DataBufferFactory DataBuffer ...

  5. Spring核心技术IOC

    Spring核心技术之IOC 本节目的:IOC作为spring一切的核心,了解内部机制很有必要的.本节会对照官方文档目录加上自己理解为主,将IOC的细节,尽可能地挖掘出来,让大家精通IOC的高级应用, ...

  6. Spring核心技术(八)——Spring自动装载的注解

    本文针对自动装载的一些注解进行描述. 基于注解的容器配置 @Required注解 @Required注解需要应用到Bean的属性的setter方法上面,如下面的例子: public class Sim ...

  7. Spring 核心技术与产品理念剖析【下】

    3. Spring Cloud 蝶变重生 Spring 框架的升级演进都是围绕分层架构进行的,从简单到复杂,再回到简单的过程.如果我们没有经历过 Spring 最开始繁琐的配置,然后一步步精简,就根本 ...

  8. 盘一盘 Spring 核心技术之依赖注入 | 原力计划

    作者 | 麦洛_ 责编 | 夕颜 头图  | CSDN付费下载自视觉中国 出品 | CSDN博客 前言 提起Spring,大家肯定不陌生,它是每一个Java开发者绕不过去的坎.Spring 框架为基于 ...

  9. Spring核心技术之IOC容器(一):IOC容器与Bean简介

    最近开始研究Spring框架,今天学习Spring的核心内容IOC 与 Bean 1. Spring IOC 与 Bean 简介  Inversion of Control (IoC)即控制反转,也叫 ...

最新文章

  1. 计算机刷新的作用,图文详解Win8重置和刷新功能:超强自我治愈
  2. php方法数组注释,php中的注释、变量、数组、常量、函数应用介绍
  3. 利用iframe无刷新上传文件的坑
  4. Exp3 免杀原理与实践 20164309
  5. VC++调用UpdateLayeredWindow实现半透明窗体【转】
  6. 五分钟搞定正则表达式,如果没搞定,再加两分钟
  7. LeetCode刷题过程中的一些小tips
  8. 中fuse_保险丝座中保险丝的材质,结构,接线方式以及区别的介绍
  9. keras报错ModuleNotFoundError: No module named ‘keras.backend.tensorflow_backend‘;
  10. 缓冲池、顺序读取与随机读取
  11. lvs+keepalived实现负载均衡和高可用
  12. 错误及原因:Empty JPEG image (DNL not supported)
  13. 转自Unity圣典:Unity中让射线发生折射的方法
  14. 让你从入门到精通CASS软件教程免费下载
  15. PhotoShop 基本知识
  16. QT随手记:解决opencv播放USB视频延迟、拖影的方法
  17. R 单样本wilcoxon test
  18. HTML5 屏幕适配笔记
  19. java 文件保存_java中怎么实现保存文件到本地
  20. VRRP 的基本概述

热门文章

  1. linux配置sonarqube遇到的坑
  2. dl360 g7安装linux,HPDL360G7服务器安装说明.ppt
  3. 朋友圈如何测试(思维导图)
  4. dhcp服务器分配指定ip,DHCP服务(自动分配IP、绑定固定IP)
  5. linux如何安装阵列卡驱动程序,Linux安装阵列卡驱动及档.doc
  6. perl cgi session php,如何使用Perl中的CGI :: Session处理Web会话?
  7. java exec dir的例子_java.lang.Runtime.exec(String[] cmdarray, String[] envp, File dir)方法实例...
  8. c语言一把钥匙只能开一把锁阅读答案,一把钥匙开一把锁阅读附答案
  9. 基于卷积神经网络的小麦病害识别方法
  10. 分窗 Gram-Schmidt 高光谱降维的 水稻纹枯病检测