Spring 父子容器】的更多相关文章

必须要说的是,父子容器是通过设置形成的关系. 容器实现了 ConfigurableApplicationContext 或 ConfigurableBeanFactory 接口,这两个接口中分别有setParent 及setParentBeanFactory 方法,可以将指定容器设置为当前容器的父容器. 首先,默认情况下,Spring + SpringMVC 框架的web项目,会先创建 WebApplicationContext(应用上下文环境,就是IoC容器啦),并以WebApplicatio…
此文已由作者尧飘然授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Spring&SpringMVC Spring&SpringMVC作为bean管理容器和MVC默认框架,是大多数web应用都会选择的方案.在其使用过程中,尽管基于xml的配置bean管理的方式依然存在,但在很多情况下已经采用的强大的注解功能将其替代.实际项目中,Spring和SpringMVC同时配置,以及xml配置bean和注解的混合使用,会造成诸如bean重复加载.多次实例化.无法自动注入.配置…
一.背景 最近由于项目的包扫描出现了问题,在解决问题的过程中,偶然发现了Spring和SpringMVC是有父子容器关系的,而且正是因为这个才往往会出现包扫描的问题,我们在此来分析和理解Spring和SpringMVC的父子容器关系并且给出Spring和SpringMVC配置文件中包扫描的官方推荐方式. 二.概念理解和知识铺垫 在Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命周期的,而在一个项目中,容器不一定只有一个,Spring中可以包括多个容器,而且容器有上…
总结如下: 明确了Servlet规范中ServletContext的作用和意义.此外明确一个Tomcat中多个web应用,每个人web应用有唯一的一个ServletContext(全局上下文).[例子见:同一tomcat多个应用session问题]        这个ServletContext 对应JSP中内置对象javax.servlet.jsp.ServletContext(作用于application全局级) 明确Spring(Spring.context包定义)上下文 Applicat…
在ssm框架搭建的时候 配置了一个Spring容器,又配置了一个前端控制器 <!-- 初始化spring容器 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/applicationContext-*.xml</param-value> </context-param> <l…
在创建ssm项目工程时,经常需要读取properties资源配置文件,传统的方法当然可以. 但是spring提供了更简便的方法,@value注解. 在page.properties文件中,配置分页信息. 这个时候,发现在Service层用@value("${PAGESIZE}")可以取到10. 然而在controller中同样的注解却不起作用了. 原来,这涉及到了spring的父子容器问题. spring和springmvc都是容器.spring是父容器,springmvc是子容器.…
1.概念理解和知识铺垫 在Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命周期的,而在一个项目中,容器不一定只有一个,Spring中可以包括多个容器,而且容器有上下层关系,目前最常见的一种场景就是在一个项目中引入Spring和SpringMVC这两个框架,那么它其实就是两个容器,Spring是父容器,SpringMVC是其子容器,并且在父容器中注册的Bean对于子容器是可见的,而在子容器中注册的Bean对于父容器是不可见的,也就是子容器可以看见父容器中的注册的Be…
通过HierarchicalBeanFactory接口,Spring的IoC容器可以建立父子层级关联的容器体系,子容器可以访问父容器中的Bean,但父容器不能访问子容器的Bean.在容器内,Bean的id必须是唯一的,但子容器可以拥有一个和父容器id相同的Bean.父子容器层级体系增强了Spring容器架构的扩展性和灵活性,因为第三方可以通过编程的方式,为一个已经存在的容器添加一个或多个特殊用途的子容器,以提供一些额外的功能. Spring使用父子容器实现了很多功能,比如在Spring MVC中…
要想很好理解这三个上下文的关系,需要先熟悉spring是怎样在web容器中启动起来的.spring的启动过程其实就是其IoC容器的启动过程,对于web程序,IoC容器启动过程即是建立上下文的过程. spring的启动过程: 首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境: 其次,在web.xml中会提供有contextLoaderListener.在web容器启动时,…
问题: 在整合框架的时候有人也许会产生一个问题:能不能只配置一个扫描包加载实现类的扫描驱动,即在根目录下扫描所有的注解(@Controller.@Service.@Repository.@Compnent),如这样配置: <!-- 扫描加载所有的被注解的对象 --> <context:component-scan base-package="com"></context:component-scan> 答案: 1):如果没有spring,只有spri…
一般来说,我们在整合spring和SpringMVC这两个框架中,web.xml会这样写到: <!-- 加载spring容器 --> <!-- 初始化加载application.xml的各种配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/applicationContext.xml…
部分转载自:https://www.cnblogs.com/ljdblog/p/7461854.html springMVC容器和Spring容器 为什么一定要在web.xml中配置spring的listener呢? <listener> <description>spring监听器</description> <listener-class>org.springframework.web.context.ContextLoaderListener</…
转载地址:http://www.tianshouzhi.com/api/tutorials/spring 1.spring和springmvc父子容器概念介绍 在spring和springmvc进行整合的时候,一般情况下我们会使用不同的配置文件来配置spring和springmvc,因此我们的应用中会存在至少2个ApplicationContext实例,由于是在web应用中,因此最终实例化的是ApplicationContext的子接口WebApplicationContext.如下图所示: 上…
背景和概述 在spring与springMVC中通过IOC可以管理bean对象,有两个配置文件可以配置ioc spring的配置文件applicationContext.xmlspringMVC的配置文件springMVC.xml工作中我们用spring来管理service层和repertory层的bean对象,而让springMVC去管理controller. 那么很自然有如下的疑问? 1.能不能用springMVC的配置文件springMVC.xml来管理全部的bean对象,包括contro…
需求;项目对外提供接口,要求每个对外接口都要进行token认证. 解决办法:写一个token认证的工具类,在每个需要认证的接口方法开始的地方,调用工具类中的token认证方法. 问题:因为要满足指定条件才可以进行下一步,在接口中调用token认证的时候,要返回结果进行判断,不止是一行代码可以解决问题. 优化:使用aop 切面编程,在执行接口的内容之前,进行认证.通过注解的方式,织入到切点中.这样在需要进行认证的接口上只需要添加一个注解就可以token认证功能. 问题:基于Aspect注解实现该功…
转自 https://blog.csdn.net/dhaiuda/article/details/80026354 Spring和SpringMVC的容器具有父子关系,Spring容器为父容器,SpringMVC为子容器,子容器可以引用父容器中的Bean,而父容器不可以引用子容器中的Bean. 了解了Spring与SpringMVC父子容器的关系,接下来让我们看看Spring与SpringMVC容器的初始化过程. 以下讲解使用的web.xml文件如下: <context-param> <…
转载于http://www.tianshouzhi.com/api/tutorials/spring 1.0 spring与springmvc父子容器 1.spring和springmvc父子容器概念介绍 在spring和springmvc进行整合的时候,一般情况下我们会使用不同的配置文件来配置spring和springmvc,因此我们的应用中会存在至少2个ApplicationContext实例,由于是在web应用中,因此最终实例化的是ApplicationContext的子接口WebAppl…
前言 在使用Spring和SpringMVC的老版本进行开发时,我们需要配置很多的xml文件,非常的繁琐,总是让用户自行选择配置也是非常不好的.基于约定大于配置的规定,Spring提供了很多注解帮助我们简化了大量的xml配置:但是在使用SpringMVC时,我们还会使用到WEB-INF/web.xml,但实际上我们是完全可以使用Java类来取代xml配置的,这也是后来SpringBoott的实现原理.本篇就来看看Spring是如何实现完全的零XML配置. 正文 先来看一下原始的web.xml配置…
引言 以前写了几篇关于SpringBoot的文章<面试高频题:springBoot自动装配的原理你能说出来吗>.<保姆级教程,手把手教你实现一个SpringBoot的starter>,这几天突然有个读者问:能说一说Spring的父子容器吗?说实话这其实也是Spring八股文里面一个比较常见的问题.在我的印象里面Spring就是父容器,SpringMvc就是子容器,子容器可以访问父容器的内容,父容器不能访问子容器的东西.有点类似java里面的继承的味道,子类可以继承父类共有方法和变量…
整合Spring时Service层为什么不做全局包扫描详解 一.Spring和SpringMVC的父子容器关系 1.讲问题之前要先明白一个关系 一般来说,我们在整合Spring和SpringMVC这两个框架中,web.xml会这样写到: <!-- 加载spring容器 --> <!-- 初始化加载application.xml的各种配置文件 --> <context-param> <param-name>contextConfigLocation</p…
  Spring和SpringMVC作为Bean管理容器和MVC层的默认框架,已被众多WEB应用采用,而实际使用时,由于有了强大的注解功能,很多基于XML的配置方式已经被替代,但是在实际项目中,同时配置Spring和SpringMVC时会出现一些奇怪的异常,比如Bean被多次加载,多次实例化,或者依赖注入时,Bean不能被自动注入,但是明明你已经将该Bean注册了的.找原因还是要看问题的根源,我们从容器说起.   在Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命…
在网上找了一下,没有直接解说ioc父子容器关系的文章,所以大概看了下代码,自己写下吧,写俩行做个笔记. 1. 在进行dean的注册的时候,父容器和子容器是互不干扰的,各自注册自己的 2. 在实例化的时候,父容器只能拿到自己的bean. 子容器会优先拿自己的,如果自己没有的话,才会去父容器里去拿. 好的,希望这个总结对大家有用 ps:补充一下,我看的代码是4.2.2版本的,因为看到和一些书上说的不一致,但是自己看代码确实是这样的,所以这里标明下版本…
  一.Spring容器和springmvc容器的关系如下图所示: Spring和springmvc和作为两个独立的容器,会把扫描到的注解对象分别放到两个不同的容器中, Springmvc容器是spring容器的一部分,他们访问对象的范围如下所示: ①:springmvc子容器可以访问spring父容器中的对象 ②:spring父容器不能访问springmvc子容器中的对象   ***在实际应用中的实例*** 一般情况下,一个spring / springmvc / mybatis 组合的框架中…
1 Spring MVC WEB配置 Spring Framework本身没有Web功能,Spring MVC使用WebApplicationContext类扩展ApplicationContext,使得拥有web功能.那么,Spring MVC是如何在web环境中创建IoC容器呢?web环境中的IoC容器的结构又是什么结构呢?web环境中,Spring IoC容器是怎么启动呢? 以Tomcat为例,在Web容器中使用Spirng MVC,必须进行四项的配置: 修改web.xml,添加servl…
自定义拦截器: 一.若想实现自定义拦截器,需要实现 org.springframework.web.servlet.HandlerInterceptor 接口. 二.HandlerInterceptor API 1. 接口中定义了三个方法 2.preHandle() (1)调用时机 在 org.springframework.web.servlet.DispatcherServlet#doDispatch 方法中. org.springframework.web.servlet.HandlerE…
概述: Spring 对于Java 开发来说,以及算得上非常基础并且核心的框架了,在有一定开发经验后,阅读源码能更好的提高我们的编码能力并且让我们对其更加理解.俗话说知己知彼,百战不殆.当你对Spring 掌握熟透之后,也就没什么能过阻拦你在开发路上前进了. IOC 总体来说有两处地方最重要,一个是创建Bean容器,一个是初始化.在本文中,主要为大家讲解了 IOC Bean 容器创建过程.后续将会补上初始化部分的知识. 为了保持文章的严谨性,如果读者发现我哪里说错了请一定不吝指出,非常希望可以听…
  使用监听器listener来加载spring的配置文件:如下 <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-beans.xml</param-value> </context-param> <listener> <listener-class>org.springfra…
声明!非原创,本文出处 Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器.既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题. 本文采用的源码版本是 4.3.11.RELEASE,算是 5.0.x 前比较新的版本了.为了降低难度,本文所说的所有的内容都是基于 xm…
目录 1. 前言 1.1 IOC容器到底是什么 1.2 BeanFactory和ApplicationContext的联系以及区别 1.3 解读IOC容器启动流程的意义 1.4 如何有效的阅读源码 2. 初探IOC容器启动源码 2.1 启动容器的真正入口refresh() 2.2 容器启动流程的不同阶段 3 容器启动前的准备工作 4. 总结 1. 前言 1.1 IOC容器到底是什么 IOC和AOP是Spring框架的核心功能,而IOC又是AOP实现的基础,因而可以说IOC是整个Spring框架的…
一.Spring容器(父容器) 1.Mapper代理对象 2.Service对象 二.Springmvc(前端控制器)(子容器)        Controller对象 1.标准的配置是这样的:Controller只在SpringMVC的配置文件扫描.Service等只在Spring容器的配置文件配置扫描.        2.Spring中也可以扫描Controller,但是使用时还是使用的SpringMVC自己的(自己没有配置,那么不能用),造成对象冗余,而且使用时事务控制可能有问题.   …