自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

原创 5-4-4-Application作用范围

Application作用范围考虑以下XML配置来定义bean:<bean id="appPreferences" class="com.something.AppPreferences" scope="application"/>Spring容器通过对整个Web应用程序使用一次appPreferences bean定义来创建AppPreferences bean的新实例。 也就是说,appPreferences bean的作用域位于ServletContext级别,并存储为常规Serv

2021-06-22 19:37:30 119

原创 5-4-3-Session作用范围

Session作用范围考虑以下XML配置来定义bean:<bean id="userPreferences" class="com.something.UserPreferences" scope="session"/>Spring容器通过在单个HTTP会话的生存期内使用userPreferences bean定义来创建UserPreferences bean的新实例。 换句话说,userPreferences bean有效地作用在HTTP会话级别。 与请求范围的Bean一样,您可以根据

2021-06-22 19:37:07 138

原创 5-4-2-Request作用范围

Request作用范围考虑以下XML配置来定义bean:<bean id="loginAction" class="com.something.LoginAction" scope="request"/>Spring容器通过为每个HTTP请求使用loginAction bean定义来创建LoginAction bean的新实例。 也就是说,loginAction bean的作用域为HTTP请求级别。 您可以根据需要更改创建实例的内部状态,因为从同一loginAction bean定义创建

2021-06-22 19:36:52 363

原创 5-4-1-初始web配置

初始web配置为了支持在Request, Session, Application, WebSocket 级别(Web范围的Bean)的Bean范围界定,在定义Bean之前,需要一些较小的初始配置。 (对于标准范围:单例和原型,不需要此初始设置。)如何完成此初始设置取决于您的特定Servlet环境。如果您实际上在Spring Web MVC中访问由Spring DispatcherServlet处理的请求中的作用域Bean,则不需要特殊的设置。 DispatcherServlet已经公开了所有相关状态

2021-06-22 19:36:20 62

原创 5-4-0-web作用范围

Request, Session, Application, WebSocket 作用范围仅当您使用可感知Web的Spring ApplicationContext实现(例如XmlWebApplicationContext)时,Request, Session, Application, WebSocket 范围才可用。 如果将这些作用域与常规的Spring IoC容器(例如ClassPathXmlApplicationContext)一起使用,则会抛出一个IllegalStateException,该异

2021-06-22 19:35:26 38

原创 5-3-对原型bean有依赖关系的单例bean

对原型bean有依赖关系的单例bean当您使用对原型Bean有依赖性的单例作用域Bean时,请注意,依赖关系在实例化时已解决。 因此,如果将依赖项原型的bean依赖项注入到单例范围的bean中,则将实例化新的原型bean,然后将依赖项注入到单例bean中。 原型实例是曾经提供给单例范围的bean的唯一实例。但是,假设您希望单例作用域的bean在运行时重复获取原型作用域的bean的新实例。 您不能将原型作用域的bean依赖项注入到您的单例bean中,因为当Spring容器实例化单例bean并解析并注入其依

2021-06-22 19:34:58 66

原创 5-2-原型作用范围

原型作用范围Bean部署的非单一原型范围会在每次请求该特定Bean时创建一个新的Bean实例。 也就是说,该Bean被注入到另一个Bean中,或者您可以通过容器上的getBean()方法调用来请求它。 通常,应将原型作用域用于所有有状态Bean,将单例作用域用于无状态Bean。下图说明了Spring原型范围:(数据访问对象(DAO)通常不配置为原型,因为典型的DAO不拥有任何对话状态。对于我们而言,重用单例图的核心更为容易。)以下示例将bean定义为XML原型:<bean id="acco

2021-06-22 19:26:52 80

原创 5-0-Bean的作用范围

Bean的作用范围创建bean定义时,将创建一个模式,用于创建该bean定义所定义的类的实际实例。 bean定义是模式的想法很重要,因为它意味着与类一样,您可以从一个配方中创建许多对象实例。您不仅可以控制要插入到从特定bean定义创建的对象中的各种依赖项和配置值,还可以控制从特定bean定义创建的对象的范围。这种方法功能强大且灵活,因为您可以选择通过配置创建的对象的范围,而不必在Java类级别上烘烤对象的范围。可以将Bean定义为部署在多个范围之一中。 Spring框架支持六个范围,其中只有在使用可识别

2021-06-22 19:25:18 41

原创 5-1-单例作用范围

单例作用范围仅管理一个singleton bean的一个共享实例,并且所有对具有ID或与该bean定义相匹配的ID的bean的请求都将导致该特定的bean实例由Spring容器返回。换句话说,当您定义一个bean定义并且其作用域为单例时,Spring IoC容器将为该bean定义定义的对象创建一个实例。 该单个实例存储在此类单例bean的高速缓存中,并且对该命名bean的所有后续请求和引用都返回该高速缓存的对象。 下图显示了单例作用域的工作方式:Spring的“单例bean”概念与《四人帮(Gang

2021-06-22 19:24:56 200

原创 4-2-8-复合属性名称

复合属性名称设置bean属性时,可以使用复合属性名称或嵌套属性名称,只要路径中除最终属性名称以外的所有组件都不为空即可。 考虑以下bean定义:<bean id="something" class="things.ThingOne"> <property name="fred.bob.sammy" value="123" /></bean>xsomething bean具有fred属性,该属性具有bob属性,该属性具有sammy属性,并且最终的sammy

2021-06-22 19:23:06 79

原创 4-2-7-具有c-namespace的XML快捷方式

具有c-namespace的XML快捷方式与具有p-namespace的XML Shortcut相似,在Spring 3.1中引入的c-namespace允许使用内联属性来配置构造函数参数,而不是嵌套constructor-arg元素。以下示例使用c-namespace执行与 基于构造函数的依赖注入相同的操作:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/20

2021-05-31 11:38:03 60

原创 4-2-6-具有p-namespace的XML快捷方式

具有p-namespace的XML快捷方式p-namespace允许您使用bean元素的属性(而不是嵌套的元素)来描述协作bean的属性值,或同时使用这两者。Spring支持带有名称空间的可扩展配置格式,这些名称空间基于XML Schema定义。 本章讨论的bean配置格式是在XML Schema文档中定义的。但是,p-namespace未在XSD文件中定义,仅存在于Spring的核心中。下面的示例显示了两个XML代码段(第一个使用标准XML格式,第二个使用p-namespace),它们可以解析为相

2021-05-14 10:26:54 65

原创 4-2-5-Null和空字符串值

Null和空字符串值Spring将属性等的空参数视为空String。 以下基于XML的配置元数据片段将email属性设置为空的String值(“”)。<bean class="ExampleBean"> <property name="email" value=""/></bean>前面的示例等效于以下Java代码:exampleBean.setEmail("");元素处理空值。 以下清单显示了一个示例:<bean class="Examp

2021-05-14 10:26:24 53

原创 4-2-4-2-Collections

Collections(集合),,和元素分别设置Java集合类型的List,Set,Map和Properties的属性和参数。 以下示例显示了如何使用它们:<bean id="moreComplexObject" class="example.ComplexObject"> <!-- 导致setAdminEmails(java.util.Properties)调用 --> <property name="adminEmails"> &l

2021-05-14 10:25:56 50

原创 4-2-4-1-Collections合并

Collections合并Spring容器还支持合并集合。 应用程序开发人员可以定义父,,或元素,并具有子,,或元素。 从父集合继承和覆盖值。 也就是说,子集合的值是合并父集合和子集合的元素的结果,子集合的元素会覆盖父集合中指定的值。关于合并的本节讨论了父子bean机制。 不熟悉父级和子级bean定义的读者可能希望先阅读相关部分,然后再继续。以下示例演示了集合合并:<beans> <bean id="parent" abstract="true" class="exampl

2021-05-14 10:25:18 425

原创 4-2-2-内部Bean

内部Bean或元素内的元素定义了一个内部bean,如以下示例所示:<bean id="outer" class="..."> <!-- 无需使用对目标Bean的引用,只需在线定义目标Bean --> <property name="target"> <bean class="com.example.Person"> <!-- this is the inner bean --> <p

2021-05-14 10:24:43 104

原创 4-2-1-对其他Bean的引用

对其他Bean的引用(协作者)ref元素是**或定义在元素内的最后一个元素。 在这里,您将一个bean的指定属性的值设置为对该容器管理的另一个bean(协作者)的引用。 引用的bean是要设置其属性的bean的依赖关系,并且在设置属性之前根据需要对其进行初始化。 (如果协作者是单例bean,则它可能已经由容器初始化了。)所有引用最终都是对另一个对象的引用。 范围和验证取决于您是通过bean还是父属性**指定另一个对象的ID或名称。通过标记的bean属性指定目标bean是最通用的形式,它允许在同一容器或父

2021-05-14 10:10:54 240

原创 4-2-依赖关系和详细配置,直值(原语,字符串等)

依赖关系和详细配置如上一节所述,您可以将bean属性和构造函数参数定义为对其他托管bean(协作者)的引用,也可以定义为内联定义的值。 Spring的基于XML的配置元数据为此目的在其**和**元素内支持子元素类型。直值(原语,字符串等)元素的value属性将属性或构造函数参数指定为人类可读的字符串表示形式。 Spring的conversion service(转换服务)用于将这些值从字符串转换为属性或参数的实际类型。 以下示例显示了设置的各种值:<bean id="myDataSource"

2021-05-14 10:10:29 66

原创 4-1-4-依赖注入的例子

依赖注入的例子以下示例将基于XML的配置元数据用于基于setter的DI。Spring XML配置文件的一小部分指定了一些bean定义,如下所示:<bean id="exampleBean" class="examples.ExampleBean"> <!-- 使用嵌套的ref元素进行二传手注入--> <property name="beanOne"> <ref bean="anotherExampleBean"/>

2021-05-14 10:09:07 66

原创 4-1-3-依赖性解析过程

依赖性解析过程容器执行bean依赖项解析,如下所示:使用ApplicationContext描述所有bean的配置元数据创建和初始化。可以通过XML,Java代码或注释来指定配置元数据。对于每个bean,其依赖项都以属性,构造函数参数或static-factory方法的参数的形式表示(如果使用它而不是普通的构造函数)。实际创建Bean时,会将这些依赖项提供给Bean。每个属性或构造函数参数都是要设置的值的实际定义,或者是对容器中另一个bean的引用。每个值的属性或构造函数参数都将从

2021-05-14 10:08:08 155

原创 4-1-2-基于Setter的依赖注入

基于Setter的依赖注入通过调用无参数构造函数或无参数静态工厂方法以实例化您的bean之后,容器通过在bean上调用setter方法来完成基于setter的DI。下面的示例显示只能通过使用纯setter注入来进行依赖项注入的类。 此类是常规的Java。 它是一个POJO,不依赖于特定于容器的接口,基类或注释。public class SimpleMovieLister { // SimpleMovieLister依赖于MovieFinder private MovieFinder

2021-05-14 10:07:42 263

原创 4-1基于构造函数的依赖注入

基于构造函数的依赖注入基于构造函数的DI是通过容器调用具有多个参数(每个参数代表一个依赖项)的构造函数来完成的。 调用带有特定参数的静态工厂方法来构造Bean几乎是等效的,并且本次讨论将构造函数和静态工厂方法的参数视为类似。以下示例显示了只能通过构造函数注入进行依赖项注入的类:public class SimpleMovieLister { // SimpleMovieLister依赖于MovieFinder private final MovieFinder movieFinder

2021-05-08 12:41:57 612

原创 4-0依赖关系、依赖注入

依赖关系典型的企业应用程序不包含单个对象(或Spring术语中的bean)。 即使是最简单的应用程序,也有一些对象可以协同工作,以呈现最终用户视为一致的应用程序。 下一部分将说明如何从定义多个独立的bean定义到实现对象协作以实现目标的完全实现的应用程序。依赖注入(控制反转)依赖注入(DI)是一个过程,通过该过程,对象只能通过构造函数参数,工厂方法的参数或在构造或创建对象实例后在对象实例上设置的属性来定义其依赖关系(即,与它们一起工作的其他对象)。从工厂方法返回。然后,容器在创建bean时注入那些依赖

2021-05-08 12:40:42 140

原创 3-2-4-确定Bean的运行时类型

确定Bean的运行时类型确定特定bean的运行时类型并非易事。 Bean元数据定义中的指定类只是初始类引用,可能与声明的工厂方法结合使用,或者是FactoryBean类,这可能导致Bean的运行时类型不同,或者在实例的情况下根本不进行设置 级工厂方法(通过指定的factory-bean名称解析)。 此外,AOP代理可以使用基于接口的代理包装Bean实例,而目标Bean的实际类型(仅是其实现的接口)的暴露程度有限。找出特定bean的实际运行时类型的推荐方法是对指定bean名称的BeanFactory.ge

2021-05-08 12:39:51 189

原创 3-2-3-实例工厂方法实例化Bean

实例工厂方法实例化Bean类似于通过静态工厂方法进行实例化,使用实例工厂方法进行实例化会从容器中调用现有bean的非静态方法来创建新bean。 要使用此机制,请将class属性保留为空,并在factory-bean属性中,在当前(或父或祖先)容器中指定包含要创建该对象的实例方法的Bean的名称。 使用factory-method属性设置工厂方法本身的名称。 以下示例显示了如何配置此类Bean:<!-- 工厂bean,其中包含一个名为createInstance()的方法 --><be

2021-05-08 12:39:17 407

原创 3-2-2-静态工厂方法实例化Bean

静态工厂方法实例化Bean定义使用静态工厂方法创建的bean时,请使用class属性指定包含静态工厂方法的类,并使用名为factory-method的属性指定工厂方法本身的名称。 您应该能够调用此方法(带有可选参数,如后面所述),并返回一个活动对象,该对象随后将被视为已通过构造函数创建。 这种bean定义的一种用法是在旧版代码中调用静态工厂。以下bean定义指定通过调用工厂方法来创建bean。 该定义不指定返回对象的类型(类),而仅指定包含工厂方法的类。 在此示例中,createInstance()方法

2021-05-08 12:37:50 799

原创 3-2-1-构造函数实例化Bean

构造函数实例化Bean当通过构造函数方法创建bean时,所有普通类都可以被Spring使用并与之兼容。也就是说,正在开发的类不需要实现任何特定的接口或以特定的方式进行编码。只需指定bean类就足够了。但是,根据用于该特定bean的IoC的类型,您可能需要一个默认(空)构造函数。Spring IoC容器几乎可以管理您要管理的任何类。它不仅限于管理真正的JavaBean。大多数Spring用户更喜欢实际的JavaBean,它们仅具有默认(无参数)构造函数,并具有根据容器中的属性建模的适当的setter和ge

2021-05-08 12:36:37 162

原创 3-2-0-实例化Bean

实例化BeanBean定义本质上是创建一个或多个对象的方法。 当被询问时,容器将查看命名bean的配方,并使用该bean定义封装的配置元数据来创建(或获取)实际对象。如果使用基于XML的配置元数据,则在元素的class属性中指定要实例化的对象的类型(或类)。 这个class属性(在内部是BeanDefinition实例的Class属性)通常是必需的。 (有关异常,请参阅 Instantiation by Using an Instance Factory Method。)可以通过以下两种方式之一使用Cl

2021-05-08 12:35:56 40

原创 3-1-命名Bean

命名Bean每个bean具有一个或多个标识符。这些标识符在承载Bean的容器内必须是唯一的。一个bean通常只有一个标识符。但是,如果需要多个,则可以将多余的名称视为别名。在基于XML的配置元数据中,可以使用id属性和/或name属性来指定bean标识符。 id属性使您可以精确指定一个id。按照惯例,这些名称是字母数字(“ myBean”,“ someService”等),但它们也可以包含特殊字符。如果要为bean引入其他别名,还可以在name属性中指定它们,并用逗号(,),分号(;)或空格分隔。作为历

2021-05-07 15:08:45 430

原创 3-0-Bean概述

Bean概述Spring IoC容器管理一个或多个bean。 这些bean是使用您提供给容器的配置元数据创建的(例如,以XML 定义的形式)。在容器本身内,这些bean定义表示为BeanDefinition对象,其中包含(除其他信息外)以下元数据:包限定的类名:通常,定义了Bean的实际实现类。Bean行为配置元素,用于声明Bean在容器中的行为(作用域,生命周期回调等)。引用其他bean来完成其工作所需要的。 这些引用也称为协作者或依赖项。要在新创建的对象中设置的其他配置设置,

2021-05-07 14:52:32 66

原创 2-容器概述

容器概述org.springframework.context.ApplicationContext接口 表示Spring IoC容器,并负责实例化,配置和组装Bean。容器通过读取配置元数据来获取有关要实例化,配置和组装哪些对象的指令。配置元数据以XML,Java注解或Java代码表示。它使您能够表达组成应用程序的对象以及这些对象之间的丰富相互依赖关系。Spring提供了ApplicationContext接口的几种实现。在独立应用程序中,通常创建ClassPathXmlApplicationCon

2021-05-06 20:53:32 34

原创 1-IOC容器和Bean简介

Spring IoC容器和Bean简介本章介绍了控制反转(IoC)原理的Spring框架实现。 IoC也称为依赖注入(DI)。在此过程中,对象仅通过构造函数参数,工厂方法的参数或在构造或从工厂方法返回后在对象实例上设置的属性来定义其依赖项 。然后,容器在创建bean时注入那些依赖项。该过程从根本上讲是通过使用类的直接构造或诸如服务定位器模式之类的机制来控制其依赖关系的实例化或位置的bean本身的逆过程(因此,其名称为Control Inversion)。org.springframework.bean

2021-05-06 15:58:32 171

Spring自整理的笔记.7z

spring自整理笔记MD

2021-05-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除