精华内容
下载资源
问答
  • spring容器

    2015-10-10 11:25:52
    spring容器是什么 spring容器,其实就是注入数据。或者说是, 1、控制反转。  2、依赖注入。 先有人叫它控制反转容器,后来有人觉得它太拗口,又给了它一个新的名字叫依赖注入。不管叫什么,其实都是一样,目的都...

    spring容器是什么

    spring容器,其实就是注入数据。或者说是,

    1、控制反转。 

    2、依赖注入。


    先有人叫它控制反转容器,后来有人觉得它太拗口,又给了它一个新的名字叫依赖注入。不管叫什么,其实都是一样,目的都是为了注入数据(Bean也是数据)。




    spring容器,由ApplicationContext这个类来表示

    spring容器,由ApplicationContext这个类来表示。那么,如何获取应用程序上下文呢?

    答:分2种应用场景,

    一、java程序

    有2种方法来获取,

    1)从磁盘

    2)从类路径



    二、java web程序

    有4种方法来获取,

    1)从磁盘

    2)从类路径

    3)从web应用程序的配置文件。  //以上3种,是采用编程方式创建ApplicationContext



    4)可利用如ContextLoader得支持类,在Web应用启动时自动创建ApplicationContext。  //这种方式是采用配置方式自动创建应用程序上下文对象:在配置文件里,配置ContextLoaderListener

    <listener>
    		<description>spring监听器</description>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>


    ApplicationContext与BeanFactory的区别

    1、ApplicationContext是继承与BeanFactory的,在功能支持方面也是基于BeanFactory的。换句话说,BeanFactory支持的功能(即管理Bean的生命周期,即Bean的创建、注入、销毁,获取等),ApplicationContex也都支持,而且ApplicationContext还提供了其他的更多的功能(比如,国际化等等,参考http://www.mianwww.com/html/2009/08/3486.html)。

    2、由于ApplicationContext包含了BeanFactory支持的功能,所以一般情况下不使用BeanFactory,而是使用ApplicationContext。


    附:ApplicationContext与BeanFactory的继承图(http://blog.csdn.net/zl3450341/article/details/9290671)







    展开全文
  • Spring容器

    千次阅读 2012-10-25 15:45:57
    容器是Spring框架的核心,Spring容器就是一个巨大的工厂。Spring容器使用Ioc管理所有组成应用系统的组件。  Spring容器会使用XML解析器读取改属性值,并利用反射来创建该实现类的实例。    Spring有两个核心...
      容器是Spring框架的核心,Spring容器就是一个巨大的工厂。Spring容器使用Ioc管理所有组成应用系统的组件。
    

      Spring容器会使用XML解析器读取改属性值,并利用反射来创建该实现类的实例。

     

      Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。它们都可以代表Spring容器。Spring容器是生成Bean实例的工厂,并管理容器中的Bean。Bean是Spring管理的基本单元。

     

      创建BeanFactory实例时,必须使用Spring容器管理的Bean详细配置信息(XML配置文件)。XML配置文件通常使用Resource对象传入。
    Resource接口是Spring提供的资源访问接口,通过使用该接口,Spring能以简单,透明的方式访问子盘,类路径,已经网络上的资源。

    大部分Java EE应用,在启动Web应用时自动加载Application实例。对于独立的应用程序,可通过如下方法来实例化BeanFactory。
    1.
     //搜索当前文件路径下的beans.xml文件,创建Resource对象
     InputStreamResource isr = new FileSystemResource("beans.xml");
     //以Resource对象作为参数,创建BeanFactory实例
     XmlBeanFactory factory = new XmlBeanFactory(isr);
    2.
     //搜索类加载路径,以类加载路径下的beans.xml文件创建Resource对象
     ClassPathResource res = new ClassPathResource("beans.xml");
     //以Resource对象为参数,创建BeanFactory实例
     XmlBeanFactory factory = new XmlBeanFactory(res);

     

    ApplicationContext允许以声明式方式操作容器,无需手动创建它。可利用如ContextLoader得支持类,在Web应用启动时自动创建ApplicationContext。当然,也可以采用编程方式创建ApplicationContext.
    除了提供BeanFactory所支持的全部功能外,ApplicationContext还有如下额外功能:
    1.ApplicationContext继承MessageSource接口,因此提供国际化支持。
    2.资源访问,比如URL和文件
    3.事件机制
    4.载入多个配置文件。

     

    ApplicationContext经常用到的三个实现:

    1.ClassPathXmlApplicationContext:从类路径中的XML文件载入上下文定义信息。把上下文定义文件当成类路径资源。

    2.FileSystemXmlApplicationContext:从文件系统中的XML文件载入上下文定义信息。

    3.XmlWebApplicationContext:从Web系统中的XML文件载入上下文定义信息。

     

    BeanFactory延迟加载所有的Bean,知道getBean()方法被调用时,Bean才被创建。

    当系统创建ApplicationContext容器时,默认会预初始化所有singleton Bean (prototype类型Bean当需要的时候才会创建)。


    展开全文
  • Spring容器父子类继承关系交给spring容器管理采用@autowired自动装配分析

    第一个青春是上帝给的
    第二个的青春是靠自己努力的。

    在开发项目过程中开发者们可能会遇到这样的问题

    @autowired自动装配模式的工作模式是:在springIOC定位所有的Bean后,这个字段需要按照类型注入,这样IOC容器就会寻找资源,然后将其注入。

    1,继承关系注入

    这时候需要注入的是子类,自动装配到父类
    例如solr的过程
    solr搜索需要创建一个SolrServer对象用来创建一个连接,实现的是SolrServer的子类HttpSolrServer

    //创建一个SolrServer对象,创建一个连接。参数solr服务的url
    SolrServer solrServer = new HttpSolrServer("http://119.23.43.244:8080/solr/collection1");
    

    每一步都需要创建的话比较繁琐,并且系统开销大,这时候就可以交给spring容器管理

    <bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
    	<constructor-arg index="0" value="http://119.23.43.244:8080/solr/collection1"/>
    </bean>
    

    交给spring容器管理之后我们就可以直接调用了,使用自动装配

    @Autowired
    private SolrServer solrServer;
    

    在这里插入图片描述
    自动装配SolrServer,spring会在容器中找这个类型,然后将HttpSolrServer注入到SolrServer中。
    java中子类可以转换成父类的类型,父类不可以转换成子类的类型。因此在spring中子类是可以注入父类中的。
    注意的是spring容器中只能配置一个子类,多了的话就不能使用自动装配了,spring就迷茫了,不知道把哪个实现类交给父类,抛出异常

    2,接口实现关系注入

    spring容器中注入2个同一接口的不用实现类也不能使用@autowired自动装配,因为springIOC容器会犯糊涂,无法判断把哪个对象注入进来,于是就会抛出异常,

    注入失败。这时候需要使用2个注解,消除自动装配的歧义性

    2.1,使用@primary注解

    注解@primary代表首要的,放到接口实现类的上面,代表如果产生自动装配歧义性的话,优先使用我进行注入。
    只能解决首要性的问题,不能解决选择性的问题。

    2.2,使用@Qualifier注解

    这个注解的原理是:采用按照名称查找,而不是类型,这样无论如何也不会产生歧义性,Spring容器最底层的接口BeanFactory就定义了这样的方法。
    首先给实现类设置别名

    //首先给实现类设置别名
    @component("roleService3")
    public class RoleServiceImpl3 implements ROleService{}
    //采用自动装配
    @autowired
    @Qualifier("roleService3")
    private RoleService roleService=null;
    
    

    IOC容器的底层接口—BeanFactory,它所定义的方法就是

    Object getBean(String name) throws BeanException;
    

    使用@Qualifier注解后就可以使用这个方法用过名称从IOC容器中获取对象进行注入。

    文章持续更新,可以微信搜索「 绅堂Style 」第一时间阅读,回复【资料】有我准备的面试题笔记。
    GitHub https://github.com/dtt11111/Nodes 有总结面试完整考点、资料以及我的系列文章。欢迎Star。
    在这里插入图片描述

    展开全文
  • 在基于 Spring 的应用中,你的应用对象生存于 Spring 容器中。容器Spring 框架的核心。Spring 容器使用 DI 管理构成应用的组件,它会创建相互协作的组件之间的关联。Q:Spring 容器主要负责什么? A:Spring ...

    在基于 Spring 的应用中,你的应用对象生存于 Spring 容器中。

    容器是 Spring 框架的核心。Spring 容器使用 DI 管理构成应用的组件,它会创建相互协作的组件之间的关联。

    Q:Spring 容器主要负责什么?
    A:Spring 容器负责创建对象装配它们,配置它们并管理它们的整个生命周期,从生存到死亡。

    Q:Spring自带了哪些容器实现?
    A:第一类:bean 工厂是最简单的容器,提供基本的 DI 支持;第二类:应用上下文基于 BeanFactory 构建,并提供应用框架级别的服务。

    Q:选择哪一类容器实现?
    A:应用上下文。因为 bean 工厂对大多数应用来说往往太低级了,因此,应用上下文要比 bean 工厂更受欢迎。


    2.1 使用应用上下文

    Spring 自带了多种类型的应用上下文。

    • AnnotationConfigApplicationContext:从一个或多个基于 Java 的配置类中加载 Spring 应用上下文。
    • AnnotationConfigWebApplicationContext:从一个或多个基于 Java 的配置类中加载 Spring Web 应用上下文。
    • ClassPathXmlApplicationContext:从类路径下的一个或多个 XML 配置文件中加载上下文定义,把应用上下文的定义文件作为类资源。
    • FileSystemXmlapplicationcontext:从文件系统下的一个或多个 XML 配置文件中加载上下文定义。
    • XmlWebApplicationContext:从 Web 应用下的一个或多个 XML 配置文件中加载上下文定义。

    如何使用?

    // 从指定的文件系统路径下,查找 knight.xml 文件
    ApplicationContext context = new FileSystemXmlApplicationContext("d:/knight.xml");
    
    // 使用 ClassPathXmlApplicationContext 从应用的类路径下加载应用上下文
    ApplicationContext context = new ClassPathXmlApplicationContext("knight.xml");
    
    // 从 Java 配置中加载应用上下文
    ApplicationContext context = new AnnotationConfigApplicationContext(com.springinaction.knights.config.KnightConfig.class);

    2.2 bean 的生命周期

    bean 装载到 Spring 应用上下文中的一个典型的生命周期过程。
    这里写图片描述

    下面进行详细描述:

    1. Spring 对 bean 进行实例化;
    2. Spring 将值和 bean 的引用注入到 bean 对应的属性中;
    3. 如果 bean 实现了 BeanNameAware 接口,Spring 将 bean 的 ID 传递给 setBeanName()方法
    4. 如果 bean 实现了 BeanFactoryAware 接口,Spring 将调用 setBeanFactory()方法,将 BeanFactory 容器实例传入;
    5. 如果 bean 实现了 ApplicationContextAware 接口,Spring 将调用 setApplicationContext()方法,将 bean 所在的应用上下文的引用传入进来;
    6. 如果 bean 实现了 BeanPostProcessor 接口,Spring 将调用它们的 postProcessBeforeInitialization()方法;
    7. 如果 bean 实现了 InitializingBean 接口,Spring 将调用它们的 afterPropertiesSet()方法。类似地,如果 bean 使用 initmethod 声明了初始化方法,该方法也会被调用;
    8. 如果 bean 实现了 BeanPostProcessor 接口,Spring 将调用它们的 postProcessAfterInitialization()方法;
    9. 此时,bean 已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,知道该应用上下文被销毁;
    10. 如果 bean 实现了 DisposableBean 接口,Spring 将调用它的 destory() 接口方法。同样,如果 bean 使用 destroymethod 声明了销毁方法,该方法也会被调用。

    上一篇: Spring 是如何简化 Java 开发的?
    下一篇:Spring 模块和 Spring Portfolio

    展开全文
  • servlet容器,web容器,spring容器,springmvc容器的区别

    千次阅读 多人点赞 2019-05-03 21:42:40
    web容器中有servlet容器,spring项目部署后存在spring容器和springmvc容器。其中spring控制service层和dao层的bean对象。springmvc容器控制controller层bean对象。servlet容器控制servlet对象。项目启动是,首先 ...
  • 请问tomcat容器与spring容器是父子关系吗,tomcat容器包含spring容器
  • Spring容器与SpringMVC容器 1.疑问:为什么不用spring去管理所有类? 我们配置springMVC 中,为什么controller不直接交给spring 管理而要spring MVC容器单独分开来管理 2.Spring容器 与 SpringMVC关系 Spring容器与...
  • 文章目录1 各个容器1.1 Web容器1.2 Servlet容器1.3 Servlet容器和ServletContext的关系1.4 Spring容器和SpringMVC容器1.5 spring与springmvc容器区别1.6 dubbo容器与spring,springmvc容器区别2 容器间的关系图 ...
  • Spring核心技术Spring容器

    千次阅读 2016-05-14 01:44:09
     容器是Spring框架的核心,Spring容器就是一个巨大的工厂。Spring容器使用Ioc管理所有组成应用系统的组件。  spring容器会使用XML解析器读取改属性值,并利用反射来创建该实现类的实例。    Spring有两个核心...
  • SpringUtil获取Spring容器对象

    千次阅读 2018-11-02 19:15:51
    自己公司使用的简单的SpringUtil,可以使用直接从Spring容器中获取对象.比较方便. 主要就是实现ApplicationContextAware ,学过Spring的都知道,Spring提供一些实现Aware对应的类,来获取对应的信息,比如,...
  • 容器:管理对象的地方。 spring,springMVC和web容器的区别? Tomcat(web容器)是管理servlet对象的地方,而spring和springMVC是管理...其次,spring容器和springMVC容器是父子容器的关系,spring容器是父容器,...
  • 动态注入Bean到Spring容器

    万次阅读 2017-08-18 15:42:12
    最近使用dubbo时遇到如下问题,使用@Reference注解时,其注入的属性并没有在Spring容器中进行管理,导致Spring的AOP对服务接口中的方法无法进行织入操作。因此需要将dubbo通过jdk代理创建接口动态代理bean添加到...
  • Spring系列第三讲IOC容器Bean概念Spring容器使用步骤Spring容器对象案例总结 IOC容器 IOC容器是具有依赖注入功能的容器,负责对象的实例化、对象的初始化,对象和对象之间依赖关系配置、对象的销毁、对外提供对象的...
  • web容器启动spring容器

    2016-10-15 13:11:30
    spring容器是如何在web应用中得到应用的,web容器又是如何以及何时启动spring容器的呢?web.xml中配置 <!---①从类路径下加载spring配置文件-> <param-name>contextConfigLocation clas
  • 解读Spring容器的refresh()

    万次阅读 2019-06-23 17:23:53
    Spring容器的refresh()【创建刷新】; 1、prepareRefresh()刷新前的预处理; 1)、initPropertySources()初始化一些属性设置;子类自定义个性化的属性设置方法; 2)、getEnvironment().validateRequiredProperties()...
  • Web容器 与Spring容器 启动

    千次阅读 2016-11-21 17:04:20
    web容器 与 Spring容器启动顺序与关系
  • Spring容器和springmvc容器的区别联系

    千次阅读 2018-01-26 15:26:38
    子容器(SpringMVC容器)可以访问父容器(Spring容器)的Bean,父容器(Spring容器)不能访问子容器(SpringMVC容器)的Bean。也就是说,当在SpringMVC容器中getBean时,如果在自己的容器中找不到对应的bean,则会去父容器中...
  • 基于 Spring 的应用中,所有的对象(即bean)生存于 Spring 容器Spring 负责创建、装配、配置并管理它们的整个生命周期。 图:Spring 框架的模块。核心容器包含了Beans、Core、Context、Expression Lanuage四个...
  • Spring容器导入Bean方法

    千次阅读 2019-06-24 11:21:29
    Spring容器导入Bean方法
  • spring容器的类图 更新于2018.10.11
  • dubbo容器和Spring容器 mvc容器 虽然都属于Spring容器类型,但三者在项目中却不会融合成一个容器,Spring容器管理Spring注解或配置文件所生成对象,dubbo容器管理远程服务所提供的对象,mvc管理其自己的对象 ...
  • springboot获取Spring容器中的bean

    万次阅读 2018-09-07 17:36:37
    我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接使用spring提供的其他对象或者说...
  • 简述Spring容器与SpringMVC的容器的联系与区别

    万次阅读 多人点赞 2017-07-04 10:55:07
    但在一个项目中,Spring容器往往不止一个,最常见的场景就是在一个项目中引入Spring和SpringMVC这两个框架,其本质就是两个容器:Spring是根容器,SpringMVC是其子容器。关于这两个容器的创建、联系及区别也正是本文...
  • Spring容器启动过程

    千次阅读 2017-02-06 00:32:07
    1、Spring容器的启动流程 ①Spring容器创建容器中的对象(执行构造函数) ②给对象的属性赋值(get或set方法) ③ 调用init方法(init方法) ④contextgetBean方法把对象提取...
  • Spring容器的初始化过程

    万次阅读 2018-10-16 11:16:58
    Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配号Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。 2、内部工作机制 ...
  • 文章目录1 mapper接口1.1 引出问题1.2 MyBatis-Spring1.2.1 MyBatis-...经常用Spring和MyBatis也挺久的了,但是一直比较好奇mapper接口是怎么加载到spring容器中的,因为要想注入spring容器中,都必须有实例的,这就
  • Spring框架:Spring容器详解

    千次阅读 2014-09-18 21:40:16
    Spring容器 Spring容器可以帮助你管理所有的Bean对象,专业术语称之为IoC控制反转。在传统的程序中,对象的生成都是由开发者完成的。而在控制反转中,对象的生成全部都交给框架完成。这样的好处就是减少了程序的...
  • Spring容器初始化过程

    千次阅读 2017-10-16 10:58:58
    Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配号Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。 二、内部...
  • Spring容器中bean的生命周期

    千次阅读 2019-11-01 23:43:11
    相比之下,Spring容器中的bean的生命周期就显得相对复杂多了。正确理解Spring bean的生命周期非常重要,因为你或许要利用Spring提供的扩展点来自定义bean的创建过程。下图展示了bean装载到Spring...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 77,340
精华内容 30,936
关键字:

spring容器

spring 订阅