## 字面值
可用字符串表示的值,可以通过元素标签或value属性进行注入。
如果字面值包含特殊字符,可以使用

使用utility schema定义集合

使用基本的集合标签定义集合时,不能将集合作为独立的Bean定义,导致其他Bean无法引用该集合,所以无法在不同Bean之间共享集合。

可以使用util schema 里的集合标签定义独立的集合Bean需要注意的是,必须在根元素里添加util schema定义。

p命名空间

简化property的应用

<bean id="**" class="**">p:name="**"p:car-ref="**"
</bean>

autowire

可以使用autowire属性指定自动装配的方式。

byName根据bean的名字和当前bean的setter风格属性名进行自动装配,若有匹配,进行自动装配,没有则不装配。

byType根据bean的属性的类型进行自动装配。若IOC容器中有1个以上的类型匹配的bean,则抛异常。

bean作用域

singeton: 默认值,(容器初始化时创建bean实例),在整个容器的生命周期内只创建以一个bean。
property: 原型值,(容器初始化时不创建bean实例),而且在每次请求时都创建一个新的bean实例,并返回。

使用外部属性文件

配置bean时,在bean配置中混入系统部署的细节信息(文件路径,数据源配置信息),部署细节要和bean配置相分离。
spring提供PropertyPlaceholderConfigurer的BeanFactory后置处理器,将用户bean配置到外移的属性文件。 var的变量。Spring使用 {var}的变量。Spring使用(propName),实现属性相互吸引。

SpEL

Spring表达式语言,支持运行时查询和操作对象图的强大表达式语言
类似于EL:SpEL使用#{…}作为定界符

  • 通过bean的id对bean进行引用
  • 调用方法以及引用对象的属性
  • 计算表达式的值
  • 正则表达式的匹配

bean生命周期方法

Spring IOC容器对bean的生命周期进行管理的过程:

  • 通过构造器或工厂方法创建bean的实例
  • 为bean的属性设置值和对其他bean的引用
  • bean可以使用了
  • 当容器关闭时,调用bean的销毁方法

在bean的申明中,设置init-method和destroy-method属性,为bean指定从初始化和销毁方法。

实现BeanPostProcessor接口,并具体提供

Object postProcessBeforeInitialization(Object bean, String beanName): init-method之前被调用
Object postProcessAfterInitialization(Object bean, String beanName): destroy-method之前被调用

bean:bean实例本身
beanName:IOC容器配置的bean的名字
返回值:实际上返回给用户的那个bean,可以在以上两方法修改返回bean,或返回一个新bean

不需要配置id,IOC容器自动识别是一个BeanPostProcessor

静态工厂方法配置

直接调用某一个类的静态方法可以返回bean的实例

class属性:指向工厂方法的全类名
factory-method:指向工厂方法的名字
constructor-arg:工厂方法需要配置参数,则使用constructor-arg
单例factory,需要指定factory-bean

factorybean 需要实现

通过factoryBean配置bean实例,class指向factorybean的全类名,peoperty可以配置factorybean的属性,但是返回的是factorybean中getObject()方法返回的实例

注解

Spring可以从classpath下自动扫描,侦测和实例化具有特定注解的组件

  • @component:基本注解,标识了一个受Spring管理的组件
  • @Repository:标识持久层组件
  • @Service:标识服务层组件
  • @Controller:标识表现层组件

Spring默认命名策略:使用非限定类名,第一个字母小写,也可以在注解中通过value属性标识组件名称。

在classpath中扫描组件

组件类使用特定的注解,需要在Spring的配置文件声明

  • base-package: 属性指定需要扫描的基类包,Spring容器将会扫描这个基类包及其子包中的所有类
  • 当需要扫描多个包时,可以使用逗号分隔
    -如果仅需要扫描特定的类而非基包下所有的包,可以使用resource-pattern属性过滤特定的类,示例:

组件装配

元素会自动注册AutowiredAnnotationBeanPostProcessor实例,该实例可以自动装配具有@Autowired和@Resource、@Inject注解的属性。

@Autowired自动装配bean

@Autowired注解自动装配具有兼容类型的单个bean属性

  • 构造器,普通字段(即使非public),一切具有参数的方法都可以应用@Autowired注解
  • 默认情况下,所有使用@Autowired注解的属性都需要被设置,当Spring找不到匹配的Bean装配属性时,会抛出异常。若某一属性允许不被设置(没有被bean注入IOC),可以设置@Autowired注解的required属性为false
  • 默认情况下,当IOC容器里存在多个类型兼容的Bean,通过类型的自动装配将无法工作,此时可以在@Qualifier注解提供Bean的名称,Spring允许对方法的入参标注@Qualifier已指定注入Bean的名称
  • @Autowired注解也可以应用在数组类型的属性上,此时Spring将会把所有匹配的Bean进行自动装配
  • Autowired注解可以应用在集合属性上,此时Spring读取该集合的类型信息,自动装配所有与之兼容的Bean
  • Aurowired注解用在java.util.Map上,Map的键值为String,那么Spring将自动匹配与之兼容的Bean

@Resource和@Inject和@Autowired功能相类似建议使用@Autowired

Spring Bean配置细节author: 惠惠相关推荐

  1. Spring bean配置的六种方式

    本文将详细介绍Spring Bean配置的六种不同方式的特点与使用条件. 一,Spring 的配置文件概述 其实,Spring的配置文件是Spring容器对Bean进行生产以及关系注入的图纸,他是Sp ...

  2. Spring bean配置继承

    在 Spring,继承是用为支持bean设置一个 bean 来分享共同的值,属性或配置. 一个子 bean 或继承的bean可以继承其父 bean 的配置,属性和一些属性.另外,子 Bean 允许覆盖 ...

  3. spring bean配置_在运行时交换出Spring Bean配置

    spring bean配置 如今,大多数Java开发人员都定期与Spring打交道,而我们当中的许多人都已经熟悉了它的功能和局限性. 最近,我遇到了一个我从未遇到过的问题:引入了基于运行时引入的配置来 ...

  4. 在运行时交换出Spring Bean配置

    如今,大多数Java开发人员都定期与Spring打交道,而我们当中的许多人已经熟悉了Spring的功能和局限性. 最近,我遇到了一个我从未遇到过的问题:引入了基于运行时引入的配置来重新连接Bean内部 ...

  5. Spring Bean 配置相关的注意事项

    数据访问注意事项 本部分介绍与访问事务中的数据的 Spring Bean 配置相关的注意事项. Spring Framework 实际上使用一个容器管理层(在 J2EE 环境中委托给基础 J2EE 运 ...

  6. Spring Bean配置方式之一:Java配置

    简介: Spring bean 是使用传统的 XML 方法配置的.在这篇文章中,您将学习使用基于纯 Java 的配置而非 XML 来编写 Spring bean 并配置它们.本文将介绍可用来配置 be ...

  7. Spring Bean配置默认为单实例 pring Bean生命周期

    Bean默认的是单例的. 如果不想单例需要如下配置: <bean id="user" class="..." scope="singleton& ...

  8. Spring Bean配置依赖注入

    Bean配置 属性 值 注释 id 自自定义,一般为类名 Bean ID name 自自定义,一般为类名,与id作用相同 Bean别名,多个别名逗号分隔 class 指定的类路径,com.xx.xx. ...

  9. spring bean创建细节

    1) 对象创建: 单例/多例     scope="singleton", 默认值,即默认是单例[service/dao/工具类]    scope="prototype ...

最新文章

  1. Shell脚本头定义
  2. Git操作之配置别名
  3. 新西兰激光事故5年增加130% 官员警告危害航空安全
  4. 关于大数据与机器学习,小白和牛人之间15个典型问答精华整理上篇
  5. win7+ubuntu19.10使用easybcd安装
  6. 在程序设计中使用Interface
  7. 【STM32】关闭JTAG接口,引脚设置推挽输出
  8. Python练习-装饰器版-为什么我的用户总被锁定
  9. 如何填满word页面_Word应用分隔符的使用
  10. C++中result_of用法
  11. 在windows下安装Linux双系统共存不需要改引导(U盘安装版本)
  12. 订购国际机票的常用指令
  13. 适合新手——MySQL中基于SQL语言增删改查等基础的练习大汇总
  14. matlab怎么画lnx图像,inx图像(lnx的图像函数)
  15. Alibaba珍藏版mybatis手写文档,值得一读!
  16. word文档通配符换行_Word指定位置批量插入表格,别人花一天搞不出来,我只用了10秒...
  17. Android手机游戏浅析
  18. 推荐一款优秀的硬盘空间管理工具软件-TreeSize Free
  19. 软件智能:aaas系统对AI的诠释-AI的可能的三个取向和必然的一个成果(演绎逻辑-必然的推理-的两个独立性:推论和定论)
  20. Android齐步走-2(2016-7-1)

热门文章

  1. IE设置浏览器不缓存页面
  2. oracle池式连接超时,oracle连接由于防火墙设置导致超时的问题
  3. mysql execute 存储过程_mysql之存储过程
  4. 汉字转拼音,可识别多音字,可返回首字母,大小写等
  5. 一个华为离职者的离职感言,干货满满
  6. 基于TensorFlow的CNN模型——猫狗分类识别器(五)之训练和评估CNN模型
  7. 中国邮政邮科院 X StarRocks:统一OLAP平台,大幅降低运维成本
  8. 蜜罐技术怎样区分正常用户和黑客
  9. gps经纬度坐标 c语言,初学者: gps:GPRMC 经纬度问题
  10. SpringBoot整合FFmpeg进行视频分片上传(Linux)