ioc

五分钟学Java:一篇文章搞懂spring和springMVC

浪尽此生 提交于 2020-03-26 09:46:12
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 本文思维导图 什么是Spring,为什么你要学习spring? 你第一次接触spring框架是在什么时候?相信很多人和我一样,第一次了解spring都不是做项目的时候用到,而是在网上看到或者是听到过一个叫做spring的框架,这个框架号称完爆之前的structs和structs2,吸引了不少人的注意。 那么,spring到底有没有神奇呢,据记载,spring框架出现的时间是在2002年,当时的人们对于繁琐笨重的EJB框架诟病不已,而且对于structs这类框架也没有什么好感,这个时候spring从天而,救一大批Java开发者于水火之中。 让我们先看看百度百科对于spring的定义,Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。 ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ◆范围:任何Java应用 Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。 spring框架解决了程序员在Java开发中长期存在的两个痛点

五分钟学Java:一篇文章搞懂spring和springMVC

Deadly 提交于 2020-03-25 22:42:57
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 本文思维导图 什么是Spring,为什么你要学习spring? 你第一次接触spring框架是在什么时候?相信很多人和我一样,第一次了解spring都不是做项目的时候用到,而是在网上看到或者是听到过一个叫做spring的框架,这个框架号称完爆之前的structs和structs2,吸引了不少人的注意。 那么,spring到底有没有神奇呢,据记载,spring框架出现的时间是在2002年,当时的人们对于繁琐笨重的EJB框架诟病不已,而且对于structs这类框架也没有什么好感,这个时候spring从天而,救一大批Java开发者于水火之中。 让我们先看看百度百科对于spring的定义,Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。 ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ◆范围:任何Java应用 Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。 spring框架解决了程序员在Java开发中长期存在的两个痛点

五分钟学Java:一篇文章搞懂spring和springMVC

浪尽此生 提交于 2020-03-25 21:36:11
3 月,跳不动了?>>> 原创声明 本文首发于微信公众号【程序员黄小斜】 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 本文思维导图 什么是Spring,为什么你要学习spring? 你第一次接触spring框架是在什么时候?相信很多人和我一样,第一次了解spring都不是做项目的时候用到,而是在网上看到或者是听到过一个叫做spring的框架,这个框架号称完爆之前的structs和structs2,吸引了不少人的注意。 那么,spring到底有没有神奇呢,据记载,spring框架出现的时间是在2002年,当时的人们对于繁琐笨重的EJB框架诟病不已,而且对于structs这类框架也没有什么好感,这个时候spring从天而,救一大批Java开发者于水火之中。 让我们先看看百度百科对于spring的定义,Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。 ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ◆范围:任何Java应用 Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。

Spring IOC 启动过程?

只愿长相守 提交于 2020-03-25 21:01:50
这是一道经典的Spring回答的深入程度可以看出面试者对Spring框架的理解。 https://www.jianshu.com/p/8c24e0c804cc 首先看图理解过程 Spring的模型是一切皆Bean,从上图可以看出,分为以下几步: 第一步读取bean配置信息 第二步根据bean注册表实例化Bean 第三步将Bean实例放到容器中 第四步使用Bean 然后看一下Spring类的继承图 然后结合代码看过程 上面的回答是个简单版本,不够详细,大部分面试官是不满意的,下面结合代码。 我们学习并练习Spring框架时,一般开始都是这样一句代码: 意思是加载xml文件创建一个ApplicationContext 的Spring 容器。 那么就从new ClassPathXmlApplicationContext这个构造方法开始看吧。进入源码: 其实可以看到他是来到这里了: 上面这个构造方法呢,其实就是new ClassPathXmlApplicationContext("classpath:application.xml") 真正开始的地方。开始之前大家先看看上面第二、第三张图“ApplicationContext 的继承图”和“BeanFactory的继承图”,ClassPathXmlApplicationContext 经过好几次继承才到 ApplicationContext

69道必考spring面试题

旧时模样 提交于 2020-03-24 18:49:40
目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用Spring框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约2MB。 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 容器:Spring 包含并管理应用中对象的生命周期和配置。 MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。 异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。 3.

spring ioc学习笔记

天大地大妈咪最大 提交于 2020-03-24 18:12:52
ioc的核心是DI,目的就是提供一种更简单的机制来设置组件依赖项,并在整个生命周期中管理这些依赖项。需要某些依赖项的组件通常被称为依赖对象,或者在ioc的情况下被称为目标对象。通常ioc可以分解为两种子类型:依赖注入和依赖查找,这些子类型被进一步分解为ioc服务的具体实现。通过这个定义可以清楚的看到,当谈论DI时,通常是在谈论ioc,而当谈论ioc时,并不总是在谈论DI(依赖查找也是ioc的一种形式)。使用依赖查找时,组建必须对依赖项的引用,而使用依赖注入时,依赖项将通过ioc容器注入组件,依赖查找有两种类型:依赖拉取,上下文依赖查找。依赖注入有两种类型:构造函数注入和setter注入。下面一一介绍 依赖拉取 依赖拉取是最常见的ioc类型,在依赖拉取中,根据需要从注册表中提取依赖项。 Spring还提供依赖拉取作为一种检索框架所管理组件的机制: public class DependencyPull { public static void main(String[] args) { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring/app-context.xml"); MessageRenderer mr = applicationContext.getBean(

spring六种种依赖注入方式

佐手、 提交于 2020-03-24 14:18:29
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做。 spring有多种依赖注入的形式,下面仅介绍spring通过xml进行IOC配置的方式: Set注入 这是最简单的注入方式,假设有一个SpringAction,类中需要实例化一个SpringDao对象,那么就可以定义一个private的SpringDao成员变量,然后创建SpringDao的set方法(这是ioc的注入入口): Java代码 package com.bless.springdemo.action; public class SpringAction { //注入对象springDao private SpringDao springDao; //一定要写被注入对象的set方法 public void setSpringDao(SpringDao springDao) { this.springDao =

srping基础——DI(三)

走远了吗. 提交于 2020-03-22 21:15:13
1、依赖和依赖注入   传统应用程序设计中所说的依赖一般指的是“类与类之间的关系”,那么首先让我们复习一下类之间的关系:    泛化 :表示类与类之间的继承关系,表示接口与接口之间的继承关系;       实现 :表示类对接口的实现;       依赖 :当类与类之间有使用关系时就属于依赖关系,不同于关联关系,依赖不具有“拥有关系”,而是一种相识关系,只在某个特定的地方才有关系。       关联 :表示接口与接口或类与类之间的依赖关系,表现为“拥有关系”;具体代码可以用实例变量来表示。       组合 :属于关联的特殊情况,体现了部分整体的关系,是一种“强拥有关系”;整体与部分拥有相同的生命周期,是一种强关联;       聚合 :属于关联的特殊情况,也体现了部分整体的关系,是一种“弱拥有关系”;整体和部分可以有不一样的生命周期。是一种弱关联;      它们关系的强弱顺序:泛化= 实现> 组合> 聚合> 关联> 依赖   spring IoC容器依赖有两层含义: bean依赖容器 和 容器注入bean的依赖资源 。 bean依赖容器: 这里的依赖是指容器负责创建bean,并管理bean的生命周期,正式由于容器来控制创建bean并注入依赖,也就是控制值被反转了,这也正式IoC名字的由来,此处的依赖指的是bean和容器之间的依赖关系。 容器注入bean的依赖资源:

Spring扩展:替换IOC容器中的Bean组件 -- @Replace注解

痴心易碎 提交于 2020-03-22 02:13:39
1、背景: 工作中是否有这样的场景?一个软件系统会同时有多个不同版本部署,比如我现在做的IM系统,同时又作为公司的技术输出给其他银行,不同的银行有自己的业务实现(比如登陆验证、用户信息查询等); 又或者你的工程里依赖了公司的二方包A,A又依赖了B...这些jar包里的组件都是通过Spring容器来管理的,如果你想改B中某个类的逻辑,但是又不可能让架构组的人帮你打一份特殊版本的B;怎么办呢?是否可以考虑下直接把Spring容器里的某个组件(Bean)替换成你自己实现的Bean? 2、原理&实现 2.1 先看看Spring开放给我们的扩展 Spring框架超强的扩展性毋庸置疑,我们可以通过BeanPostProcessor来简单替换容器中的Bean。 @Component public class MyBeanPostProcessor implements ApplicationContextAware, BeanPostProcessor { private ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this

C# IoC学习笔记

那年仲夏 提交于 2020-03-21 18:35:49
一、引言 面向接口(抽象)编程,是为了降低程序的耦合度,符合依赖倒置原则。因此典型的三层架构UI、BLL、DAL基于接口设计后,会拓展成UI、IBLL、BLL、IDAL、DAL。在上一篇《 C# IoC学习笔记 》中我们可以了解到,控制反转(IoC)使对象的创建交给了第三方IoC容器如Unity。利用Unity的IoC功能,可以对基于接口设计的三层架构做进一步的升级,搭建一个更容易实现的可配置可扩展的三层架构;利用Unity的AOP功能,使框架更加的简洁,因为它抽出了框架的公共逻辑部分。 二、项目建立 2.1、项目建立 依次新建项目UI(Client)、IBLL、BLL、IDAL、DAL、Model、Common。 2.2项目说明 三、项目之间的引用关系 3.1、对着项目名称右键->添加->引用->项目,添加各个项目的引用。 3.2、引用说明 四、项目需安装的NuGet包 五、注意事项 对Unity容器的IoC调用进行封装,Container应封装成 单例模式 以提高效率,此处使用MemoryCache。 5.1、在Common项目引用System.Runtime.Caching.dll,并在Helper文件夹下新建一个缓存帮助类:MemoryCacheHelper.cs。 /// <summary> /// 内存缓存帮助类,支持绝对过期时间、滑动过期时间、文件依赖三种缓存方式。