spring容器启动】的更多相关文章

我们可以在spring容器启动时添加自己的定制化初始化工作. 1)具体方法为:在web.xml中配置初始化属性contextInitializerClasses的值例如: <context-param> <param-name>contextInitializerClasses</param-name> <param-value>xxxxxxxxxx</param-value> </context-param> 启动xx为自定义类的全…
线上发现一个问题,应用在启动时会卡死,log上并没有什么异常输出,初判应该是死锁问题. 抓现场的thread dump文件, 确实是有两个线程有deadlock问题. 线程一 "HSFBizProcessor-8-thread-13" daemon prio=10 tid=0x00007fc686a83000 nid=0x37128 waiting for monitor entry [0x000000004b7f3000] java.lang.Thread.State: BLOCKE…
第六步: public abstract class AbstractApplicationContext extends DefaultResourceLoader implements ConfigurableApplicationContext, DisposableBean { protected ConfigurableListableBeanFactory obtainFreshBeanFactory() { refreshBeanFactory();//具体实现调用子类容器的ref…
使用spring,我们在web.xml都会配置ContextLoaderListener <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> public class ContextLoaderListener extends ContextLoader implements Servle…
1 主要类 ContextLoaderListener:注册在web.xml中,web应用启动时,会创建它,并回调它的initWebApplicationContext()方法,从而创建并启动spring容器.必须继承ServletContextListener. WebApplicationContext:用于web应用的spring容器上下文,它代表了spring容器,继承自ApplicationContext.是一个接口,在ContextLoader.properties配置文件中可以声明…
一.ServletContext对象获取Demo Servlet容器在启动时会加载Web应用,并为每个Web应用创建唯一的ServletContext对象. 可以把ServletContext看作一个Web应用的服务器端组件的共享内存.在ServletContext中可以存放共享数据,有4个读取或者设置共享数据的方法: 方法名 描述 setAttribute(String name, Object object) 把一个对象和属性名绑定,并将这个对象存放在ServletContext中 getA…
一.在Web项目中,启动Spring容器的方式有三种,ContextLoaderListener.ContextLoadServlet.ContextLoaderPlugin. 1.1.监听器方式: web.xml <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/applicationContext-*.xml</p…
一.一切从手动启动IoC容器开始 ClassPathResource resource = new ClassPathResource("bean.xml"); DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory); reader.loadBeanDefinit…
1. 前言 最近搭建的工程都是基于SpringBoot,简化配置的感觉真爽.但有个以前的项目还是用SpringMvc写的,看到满满的配置xml文件,却有一种想去深入了解的冲动.折腾了好几天,决心去写这篇关于Spring启动的博客,自己是个刚入职的小白,技术水平有限,也是硬着头皮看源码去Debug,很多不懂的地方还请谅解! 2. 概述 先给出几个让我头皮发麻的概念:web容器,Spring容器,SpringMvc容器 容器就是管理对象的地方,例如web容器就是管理servlet的地方,Spring…
1. 前言 最近搭建的工程都是基于SpringBoot,简化配置的感觉真爽.但有个以前的项目还是用SpringMvc写的,看到满满的配置xml文件,却有一种想去深入了解的冲动.折腾了好几天,决心去写这篇关于Spring启动的博客,自己是个刚入职的小白,技术水平有限,也是硬着头皮看源码去Debug,很多不懂的地方还请谅解! 2. 概述 先给出几个让我头皮发麻的概念:web容器,Spring容器,SpringMvc容器 容器就是管理对象的地方,例如web容器就是管理servlet的地方,Spring…
1.AbstractApplicationContext的prepareRefresh()方法调用. 2.XmlBeanDefinitionReader的loadBeanDifinitions(BeanDefinitionRegistry)方法调用.加载spring配置文件,加载完成之后回调BeanDefinitionRegistry的preInstantiateSingletons()方法,这个方法由DefaultListableBeanFactory类实现. 3.AbstractApplic…
在项目的web.xml中配置 <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> 此配置为spring容器加载入口,因为其javax.servlet.ServletContextListener接口. 下面代码为ServletContextListener的源码: public interfa…
业务需求中,可能会有一些逻辑需要在应用启动完成后,例如字典缓存,资源池初始化等等,代码如下 public class InitApplication implements ApplicationContextAware,ApplicationListener<ContextRefreshedEvent> { private Logger logger = LoggerFactory.getLogger(InitApplication.class); private ApplicationCon…
第十步: public class XmlBeanDefinitionReader extends AbstractBeanDefinitionReader { /** * Load bean definitions from the specified XML file. * @param resource the resource descriptor for the XML file * @return the number of bean definitions found * @thr…
@EnableAsync annotation metadata was not injected 2015年12月20日 20:06:54 7570 在初始化spring事务部分碰到该错误, 详细错误信息如下: 警告: Exception encountered during context initialization - cancelling refresh attempt org.springframework.beans.factory.BeanCreationException: E…
Spring 容器像一台构造精妙的机器,我们通过配置文件向机器传达控制信息,机器就能够按照设定的模式进行工作.如果我们将Spring容器比喻为一辆汽车,可以将 BeanFactory看成汽车的发动机,而ApplicationContext则是 整辆汽车,它不但包括发动机,还包括离合器.变速器以及底盘.车身.电气设备等其他组件.在ApplicationContext内,各个组件按部就班. 有条不紊地完成汽车的各项功能. ApplicationContext内部封装 了一个BeanFactory对象…
SSH框架十分受欢迎,其中有一个原因就是spring可以和Struts2框架无缝整合.在使用spring时,无需手动创建web容器,而是通过配置文件声明式创建spring容器. 在web应用中,创建spring容器有两种方式: 在web.xml中配置 利用第三方MVC框架创建 第一种比较常用,第二种方法只对特定框架有效,在此就不做介绍,下面只介绍第一种方法. 为了让Spring容器随Tomcat/JBoss等启动而自动启动,我们用到了ServletContextListener监听器来完成. 先…
常有在spring容器启动后执行某些操作的需求,现做了一个demo的实现,做一下记录,也希望可以给需要的同学提供参考. 1.spring启动后,以新线程执行后续需要的操作,所以执行类实现Runnable接口 @Component public class StepExecutor implements Runnable{ @Overridepublic void run() {startStreamTask(); } public void startStreamTask() { //do yo…
spring中最常用的控制反转和面向切面编程. 一.IOC IoC(Inversion of Control,控制倒转).对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系.在一个对象中,如果要使用另外的对象,就必须得到它(自己new一个,或者从JNDI中查询一个),使用完之后还要将对象销毁(比如Connection等),对象始终会和其他的接口或类藕合起来. 所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在…
在做web项目开发中,尤其是企业级应用开发的时候,往往会在工程启动的时候做许多的前置检查. 比如检查是否使用了我们组禁止使用的Mysql的group_concat函数,如果使用了项目就不能启动,并指出哪个文件的xml文件使用了这个函数. 而在Spring的web项目中,我们可以介入Spring的启动过程.我们希望在Spring容器将所有的Bean都初始化完成之后,做一些操作,这个时候我们就可以实现一个接口: 1 2 3 4 5 6 7 package com.yk.test.executor.p…
在做web项目开发中,尤其是企业级应用开发的时候,往往会在工程启动的时候做许多的前置检查. 比如检查是否使用了我们组禁止使用的Mysql的group_concat函数,如果使用了项目就不能启动,并指出哪个文件的xml文件使用了这个函数. 而在Spring的web项目中,我们可以介入Spring的启动过程.我们希望在Spring容器将所有的Bean都初始化完成之后,做一些操作,这个时候我们就可以实现一个接口: package com.yk.test.executor.processor publi…
问题?spring是如何创建对象的?什么时候创建对象?有几种创建方式?测试对象是单例的还是多例的 ?对象的初始化和销毁? 下面的四大模块IOC的内容了!需要深刻理解 SpringIOC定义:把对象的创建.初始化.销毁等工作交给spring容器来做.由spring容器控制对象的生命周期. 先拷入核心jar包:点击打开下载链接 一.spring是如何创建对象的,有几种创建方式 spring容器创建对象的方式 1.默认是调用默认的构造函数 2.利用静态工厂方法创建 spring调用工厂方法产生对象,但…
前面讲过,spring的生命周期为:实例化前奏-->实例化-->实例化后期-->初始化前期-->初始化-->初始化后期-->bean的具体调用-->销毁前-->销毁.那么,从装配XML属性到实例化bean的内部机制是怎样的,没有细说,今天我们来一起刨根问底. 还是老风格,以具体例子先入为主.下面是一个再简单不过的spring框架的栗子.(XML,有.Bean,有.Spring容器,有.main函数,有.麻雀虽小,但是够了.) 这是XML,简单易懂,嘎嘣脆:…
最近在负责一个大项目,项目组成员包括项目经理大概10个人左右.项目技术用struts+spring+hibernate实现.项目的规模相对来说是比较大的,总共有10大模块,每个大模块又分为有十几个.甚至几十个小模块.开发工具用eclipse,由于在开发阶段,项目开发成员需要频繁重启服务器.在启动服务器的时候,每次启动时间总是会超过1分钟.记得以前在做另外一个项目时,启动时间不到5秒钟,相差了10倍,而且项目规模是差不多的. 从初步分析来说,应该是hibernate解释hbm.xml时花费时间,或…
---恢复内容开始--- 问题:在一个web应用中我使用了spring框架,但有一部分模块或组件并没有托管给Spring,比如有的可能是一个webservice服务类,如果我想在这些非托管的类里使用托管对象该怎么办呢,很自然的我们需要获得spring容器对象的引用ApplicationContext,我的想法是在服务启动后,想办法将ApplicationContext容器的应用保存到一个静态变量中,以后使用就简单了. 1)刚开始用的是spring+struts2,实力话spring用的是Cont…
1.       背景 1.1.       背景介绍 在web项目中我们有时会遇到这种需求,在web项目启动后需要开启线程去完成一些重要的工作,例如:往数据库中初始化一些数据,开启线程,初始化消息队列等,在这种需求下,如何在web容器启动后执行这些工作就成为了本文的重点. 1.2.       测试项目搭建 首先我们新建一个web项目来模拟这种需求,这里我们选择创建一个maven项目 在项目的pom文件中添加以下properties项 <properties>   <!--web--&…
在开发中,总是能碰到用注解注入不了Spring容器里面bean对象的问题.为了解决这个问题,我们需要一个工具类来直接获取Spring容器中的bean.因此就写了这个工具类,在此记录一下,方便后续查阅.废话不多说,直接上代码. 一.代码 package com.zxy.demo.spring; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext;…
1.spring容器 BeanFactory提供了IoC的功能:ApplicatContext建立在BeanFactory的基础上 在初始化BeanFactory的实现类时,并没有实例化Bean,直到第一次访问某个Bean时才实例化目标Bean:在初始化ApplicationContext实现类时同时就实例化了所有单例的Bean 2.BeanFactory接口 package org.springframework.beans.factory; import org.springframewor…
引言 Spring容器就像一台构造精妙的机器,我们通过配置文件向机器传达控制信息,机器就能够按照设定的模式工作.如果将Spring容器比作一辆车,那么可以将BeanFactory看成汽车的发动机,而ApplicationContext则是一辆完整的汽车,它不但包括发动机,还包括离合器.变速器及底盘.车身.电气设备等其他组件.在ApplicationContext内,各个组件按部就班.有条不絮地完成汽车的各项功能. 内部工作机制 Spring的AbstractApplicationContext是…
Spring容器 启动Spring容器(实例化容器) -- IOC容器读取Bean配置创建Bean实例之前,必须对它进行实例化(加载启动),这样才可以从容器中获取Bean的实例并使用.  Bean是Spring管理的基本单位,任何的Java对象和组件都被当成Bean处理,容器还负责管理Bean与Bean之间的依赖关系.  两种类型的启动实现   1.BeanFactory:IOC容器的基本实现,是Spring框架的基础设施,面向Spring本身: -- Spring容器最基本的接口就是BeanF…