spring初次体验
1.BeanFactory:实际上是实例化,配置和管理众多bean的容器。这些bean通常会彼此合作,因而它们之间会相互依赖。BeanFactory使用的配置数据可以反映这些依赖关系中(一些依赖可能不像配置数据一样可见,而是在运行期作为bean之间程序交互的函数)。
一个BeanFactory可以用接口org.springframework.beans.factory.Beanfactory表示,这个接口有多个实现。最常使用的简单的BeanFactory实现是org.springframe.beans.factory.xml.XmlBeanfactory
(ApplicationContext)是BeanFactory的子类,所以大部分的用户更喜欢使用ApplicationContext的xml格式。
虽然大多数情况下,几乎所有被BeanFactory管理的用户代码都不要知道BeanFactory,但是BeanFactory也会被某种方式实例化。可以使用下面的代码实例化BeanFactory。
InputStream is=new FileInputStream("beans.xml");
XmlBeanFactory bis=new XmlBeanFactory(is);
或者
ClassPathResource res=new ClassPathResource("beans.xml");
XmlBeanFactory bis=new XmlBeanFactory(res);
或者
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(
new String[] {"applicationContext.xml", "applicationContext-part2.xml"});
// of course, an ApplicationContext is just a BeanFactory
BeanFactory factory = (BeanFactory) appContext;
很多情况下,用户代码不需要实例化BeanFactory, 因为Spring框架代码会做这件事。例如,web层提供支持代码,在J2EE web应用启动过程中自动载入一个Spring ApplicationContext。这个声明过程在这里描述:
编程操作BeanFactory将会在后面提到,下面部分将集中描述BeanFactory的配置.
一个最基本的BeanFactory配置由一个或多个它所管理的Bean定义组成。在一个XmlBeanFactory中,根节点beans中包含一个或多个bean元素。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="..." class="...">
...
</bean>
<bean id="..." class="...">
...
</bean>
...
</beans>
2.作用域session和request的意义:
request表明该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前的HTTP request内有效,配置实例
request .session. global session使用的时候首先要在初始化的时候首先要在web.xml中做出如下配置:
如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可:
<web-app>
...
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
...
</web-app>
如果是Servlet2.4以前的web容器,那么你要使用一个javax.servlet.Filter的实现:
<web-app>
..
<filter>
<filter-name>requestContextFilter</filter-name>
<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>requestContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
...
</web-app>
接着就可以使用bean的作用域了
<bean id="role" class="spring.chapter2.maryGame.Role" scope="request"/>
session表明该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前的HTTP session内有效,和request配置条件一样,也需要在web.xml中进行配置
<bean id="role" class="spring.chapter2.maryGame.Role" scope="session"/>
3.bean的生命周期
- 容器启动,实例化所有实现了BeanFactoyPostProcessor接口的类。他会在任何普通Bean实例化之前加载.
- 实例化剩下的Bean,对这些Bean进行依赖注入。
- 如果Bean有实现BeanNameAware的接口那么对这些Bean进行调用
- 如果Bean有实现BeanFactoryAware接口的那么对这些Bean进行调用
- 如果Bean有实现ApplicationContextAware接口的那么对这些Bean进行调用
- 如果配置有实现BeanPostProcessor的Bean,那么调用它的postProcessBeforeInitialization方法
- 如果Bean有实现InitializingBean接口那么对这些Bean进行调用
- 如果Bean配置有init属性,那么调用它属性中设置的方法
- 如果配置有实现BeanPostProcessor的Bean,那么调用它的postProcessAfterInitialization方法
- Bean正常是使用
- 调用DisposableBean接口的destory方法
- 调用Bean定义的destory方法
如果从大体上区分值分只为四个阶段
- BeanFactoyPostProcessor实例化
- Bean实例化,然后通过某些BeanFactoyPostProcessor来进行依赖注入
- BeanPostProcessor的调用.Spring内置的BeanPostProcessor负责调用Bean实现的接口: BeanNameAware, BeanFactoryAware, ApplicationContextAware等等,等这些内置的BeanPostProcessor调用完后才会调用自己配置的BeanPostProcessor
- Bean销毁阶段
spring初次体验的更多相关文章
- kubebuilder实战之二:初次体验kubebuilder
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- ASP.NET Core Identity Hands On(1)——Identity 初次体验
ASP.NET Core Identity是用于构建ASP.NET Core Web应用程序的成员资格系统,包括成员资格.登录和用户数据存储 这是来自于 ASP.NET Core Identity 仓 ...
- 在docker中初次体验.net core 2.0
.net core的跨平台有了Linux,不能没有docker……网上的系列文章一大推,特别是docker还有了中文官网:https://www.docker-cn.com/ .上面说的很清楚了,这里 ...
- Visual Studio 2017 初次体验
在初次体验中遇到以下问题以及技巧 1. 在出现红色波浪线时为出现错误语法,将鼠标移动到相应位置可以获得相关错误信息 2.在编写代码过程中,行号上出现的小黄灯可以有提示信息 3.List 与 Array ...
- Total Commander的初次体验
从汉化新世纪下载到最新的TC张学思版后,运行文件只需依照其提示就可以完成该软件的安装.作为新手初次运行体验了以下功能: 一.目录跳转 1. 初次启动TC软件界面截图: 2. 按下Ctrl+d后,直接再 ...
- HashTable初次体验
用惯了数组.ArryList,初次接触到HashTable.Dictionary这种字典储存对于我来说简直就是高大上. 1.到底什么是HashTable HashTable就是哈希表,和数组一样,是一 ...
- 初次体验百度eCharts遇到的问题和解决方法
前言 上周在厌烦Highchart下,体验了下百度的eCharts,支持IE6.7.8+外,对数据在线编辑还有工具栏支持,体验时遇到了几个小问题,最近两天在尝试得到了一个解决方法. Tooltip时单 ...
- Thrift 个人实战--初次体验Thrift
前言: Thrift作为Facebook开源的RPC框架, 通过IDL中间语言, 并借助代码生成引擎生成各种主流语言的rpc框架服务端/客户端代码. 不过Thrift的实现, 简单使用离实际生产环境还 ...
- 基于winserver部署Apollo初次体验(附.net客户端demo)
前言 配置中心伴随着这几年分布式系统演变和微服务架构的兴起,已经成为必不可少的需求之一.试下一下如果哪天公司的所有应用服务,从公司服务器迁移到云服务,成千上万的配置,修改起来是多么耗时费劲的事(我们公 ...
随机推荐
- 一台主机上安装多个Tomcat
1. 下载解压版的Tomcat,并解压两次,分别命名为Tomcat_Server_01和Tomcat_Server_02: 2. 进入Tomcat_Server_01\bin目录,编辑service文 ...
- Java的关键字与标识符
Java作为一门编程语言,与其他语言一样,有字符集.标识符.和关键字.变量.常量.语句等编程语言的基本要素. 1.关键字 abstract boolean break byte case catch ...
- UDS(ISO14229-2006) 汉译(No.4 术语和缩写)
A_PCI Application layer Protocol Control Information应用层协议控制消息. A_PDU ...
- 企业商务差旅信息化管理与移动App
背景 某航空公司需要到北京某服务提供商公司学习交流,为了节省出行成本让出差员工乘坐公司运营航线,去程路途较远.需要在先乘飞机到天津机场,转地铁后,再乘动车到北京.回程时发生 后补机票失败, ...
- Java程序员应该知道的10个调试技巧
试可以帮助识别和解决应用程序缺陷,在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序.但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE,我们会把重点放在运 ...
- 8、ASP.NET MVC入门到精通——View(视图)
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 View视图职责是向用户提供界面.负责根据提供的模型数据,生成准备提供给用户的格式界面. 支持多种视图引擎(Razor和ASPX视图引擎是官 ...
- Hibernate总结(一)
Hibernate为了提高性能,提供了缓存与快照机制. 它的缓存分为一级缓存与二级缓存. Hibernate一级缓存:当一个事务中执行一次Sql语句时,就将返回的结果存储在Session中的Map集合 ...
- UEditor编辑器的使用
1.首先我们要去官网下载UEditor编辑器,选择语言,这里我用的是php utf-8版本(李昌辉) 2.下载完成之后解压文件,将解压的文件放到我们的网站目录里面 3.ueditor/utf8-php ...
- 推荐8个实现 SVG 动画的 JavaScript 库
SVG 是一种分辨率无关的图形(矢量图形).这意味着它在任何类型的屏幕都不会遭受任何质量损失.除此之外,你可以让 SVG 灵活现一些动画效果.这篇文章就给大家推荐8个实现 SVG 动画的 JavaSc ...
- 怎么在MVC中使用自定义Membership
首先我们来看看微软自带的membership: 我们打开系统下aspnet_regsql.exe 地址一般位于: C:\WINDOWS\Microsoft.NET\Framework\v2.0.507 ...