一、bean的实例化方式

1.默认构造

  <bean id="" class=""></bean> 必须提供默认构造方法

2.静态工厂

  用于生产实例对象,所有的方法必须都是静态的

  常用于spring整合其他框架(工具)

<bean id="" class="工厂实现类" factory-method="静态方法"></bean>

3.实例工厂

  必须先有实例对象,通过实例对象创建对象。所有的方法都是实例方法。

二、Bean的种类

1.普通bean:<bean id="" class=""></bean>

2.FactoryBean:是一个特殊的bean,具有工厂生产对象能力,只能生产特定的bean。

  bean必须实现FactoryBean接口,此接口提供getObject()方法,用于获得特定bean。

<bean id="" class="FB"></bean>

FB fb = new FB();

return fb.getObject();

三、作用域

<bean id="userService" class="scope.UserServiceImp" scope="singleton"></bean>
<bean id="userService" class="scope.UserServiceImp" scope="prototype"></bean>

四、生命周期

1.初始化和销毁

  构造目标对象前后,将进行初始化和销毁

<bean id="" class="" init-method="初始化方法名" destroy-method="销毁方法名">

2.BeanPostProcessor后处理Bean(构造Bean前后执行的方法,生成代理对象,本质是bean的装饰器)->AOP的底层

  spring提供一种机制,只要将实现BeanPostProcessor接口并且实现postProcessAfterInitialization(Object Bean,String BeanName)【返回代理对象】和postProcessBeforeInitialization()方法的类提供给spring容器,spring将自动执行这两个方法。执行初始化方法前

执行before方法,初始化后执行after方法。

  Factory hook (钩子)that allows for custom modification of new bean instances, e.g. checking for marker interfaces or wrapping them with proxies. ->工厂钩子允许用户修改bean实例,例如,检查实现接口或者用装饰者的方式生成代理。

  A a = new A();

  a = B.before(a);

  a.init();

  a = B.after(a)

  a.addUser(); //目标是在目标方法前后执行(例如事务,性能监控)

  a.destory();

装配bean,基于xml的更多相关文章

  1. 3.装配Bean 基于XML

    一.实例化方式 3种bean实例化方式:默认构造.静态工厂.实例工厂 1.默认构造 <bean id="" class=""> 必须提供默认构造 2 ...

  2. Spring装配Bean之XML装配bean

    在Spring刚出现的时候,XML是描述配置的主要方式,在Spring的名义下,我们创建了无数行XML代码.在一定程度上,Spring成为了XML的同义词. 现在随着强大的自动化配置和Java代码的配 ...

  3. 第2章—装配Bean—通过XML装配Bean

    通过XML装配Bean ​ 尽管我们在生成Bean的过程中可以用到很多方法,但我们依然需要Spring的XML配置来完善更多的需求,下面就来介绍下XML装配Bean的过程是怎样的. 3.1创建XML配 ...

  4. Spring IOC容器装配Bean_基于XML配置方式

    开发所需jar包 实例化Bean的四种方式 1.无参数构造器 (最常用) <?xml version="1.0" encoding="UTF-8"?> ...

  5. IOC装配Bean(XML方式)

    Spring框架Bean实例化的方式 提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 无参数构造方法的实例化 <!-- 默认情况下使用的就是 ...

  6. IoC容器装配Bean(xml配置方式)(Bean的生命周期)

    1.Spring管理Bean,实例化Bean对象 三种方式 第一种:使用类构造器实例化(默认无参数) package cn.itcast.spring.initbean; /** * 使用构造方法 实 ...

  7. 6.装配Bean基于注解

    1.注解:就是一个类,使用@注解名称 开发中:使用注解 取代 xml配置文件. @Component取代<bean class=""> @Component(" ...

  8. Spring基础篇——通过Java注解和XML配置装配bean(转载)

      作者:陈本布衣 出处:http://www.cnblogs.com/chenbenbuyi 本文版权归作者和博客园共有,欢迎转载分享,但必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留 ...

  9. Spring实战2:装配bean—依赖注入的本质

    主要内容 Spring的配置方法概览 自动装配bean 基于Java配置文件装配bean 控制bean的创建和销毁 任何一个成功的应用都是由多个为了实现某个业务目标而相互协作的组件构成的,这些组件必须 ...

  10. SpringInAction读书笔记--第2章装配Bean

    实现一个业务需要多个组件相互协作,创建组件之间关联关系的传统方法通常会导致结构复杂的代码,这些代码很难被复用和单元测试.在Spring中,对象不需要自己寻找或创建与其所关联的其它对象,Spring容器 ...

随机推荐

  1. (字符转化)UTF-8和GBK有什么区别?

    GBK包含全部中文字符:UTF-8则包含全世界所有国家需要用到的字符. GBK编码:是指中国的中文字符,其它它包含了简体中文与繁体中文字符,另外还有一种字符“gb2312”,这种字符仅能存储简体中文字 ...

  2. Mole and Abandoned Mine

    Mole and Abandoned Mine n点m条边的无向图,删除第i条边花费c[i],问1到n只有一条路径时所需要的最小花费? \(2\le n\le 15\) . 我又A掉了一道zzs的题啦 ...

  3. loj#6435. 「PKUSC2018」星际穿越(倍增)

    题面 传送门 题解 我们先想想,在这个很特殊的图里该怎么走最短路 先设几个量,\(a_i\)表示\([a_i,i-1]\)之间的点都和\(i\)有边(即题中的\(l_i\)),\(l\)表示当前在计算 ...

  4. 2019.2.25考试T3, 离线+线段树

    \(\color{#0066ff}{题解}\) #include<bits/stdc++.h> #define LL long long LL in() { char ch; LL x = ...

  5. 最长回文串:LeetCode:Longest Palindromic Substring

    class Solution { public: string longestPalindrome(string s) { int length=s.length(); ; ; ][]={false} ...

  6. zabbix告警

    邮件告警分为两大步: 第一步:配置(配置又分为三小步) 发送邮件的用户 创建用户(添加上告警媒介) 给用户添加权限(在所有组里添加) 最后显示有读写权限才算成功!!! 告警媒介类型 创建媒介类型!一般 ...

  7. [Groovy] Private fields and methods are not private in groovy

    如题,, 具体介绍请参看: http://refaktor.blogspot.com/2012/07/private-fields-and-methods-are-not.html

  8. C语言文件I/O和标准I/O函数

    读取/写入  相对于文件而言 输入/输出 相对于程序/内存而言 一切皆文件,键盘.显示屏也是文件,只不过是特殊的标准文件: 标准文件:标准输入.标准输出.标准错误:---->对应的文件指针:st ...

  9. python--selectors模块

    它的功能与linux的epoll,还是select模块,poll等类似:实现高效的I/O multiplexing,  常用于非阻塞的socket的编程中: 简单介绍一下这个模块,更多内容查看 pyt ...

  10. python+selenium 使用jinkens构建时,无法打开浏览器(已解决)

    inkens 我不用的是war包,就是直接丢在tomcat webapps文件夹就能生效的.因为不是安装,所以网上说把jinkens的服务改为管理员启动是不行的.下面一步步来解决这个问题吧. 1.找到 ...