一、bean配置里面使用外部属性文件:

<bean>中添加context Schema定义,Spring 提供了一个<property-placeholder>元素,可以在bean配置文件里使用形式为${var}的变量,property-placeholder从属性文件里加载属性,并使用这些属性替换变量。

Spring还允许在属性文件中使用${propName} ,以实现属性间的相互引用

    <!-- 导入属性文件 -->
<context:property-placeholder location="classpath:db.properties"/> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 使用外部化属性文件的属性 -->
<property name="user" value="${user}"></property>
<property name="password" value="${password}"></property>
<property name="driverClass" value="${driverclass}"></property>
<property name="jdbcUrl" value="${jdbcurl}"></property>
</bean>

db.properties文件:

二、SpEL(Spring表达式语言):

SpEL使用#{....}作为定界符,所有在大括号中的字符都被将被认为是SpEL,SpEL位bean的属性进行动态赋值提供了便利

    <bean id="car" class="com.atguigu.spring.beans.spel.Car">
<property name="carName" value="bieke"></property>
<property name="carPrice" value="250000"></property>
<property name="carType" value="SUV"></property>
<!-- 使用SpEL引用类的静态属性 -->
<property name="tyrePerimiter" value="#{T(java.lang.Math).PI * 80}"></property>
</bean> <bean id="address" class="com.atguigu.spring.beans.spel.Address">
<property name="city" value="puyang"></property>
</bean> <bean id="person" class="com.atguigu.spring.beans.spel.Person">
<property name="name" value="lee"></property>
<property name="info" value="#{car.carPrice > 300000?'金领':'白领'}"></property>
<!-- 使用SpEL来引用其他的 bean -->
<property name="cars" value="#{car}"></property>
<!-- 使用SpEL来引用其他的 bean 的属性-->
<property name="home" value="#{address.city}"></property>
</bean>

三、bean的生命周期:

<!-- 在bean的声明里设置 init-method和destroy-method属性,为bean指定初始化和销毁的方法-->
<bean id="car" class="com.atguigu.spring.beans.cycle.Car"
init-method="init2" destroy-method="destroy">
<property name="brand" value="Audi"></property>
</bean> <!-- 实现MyBeanPostProcessor接口,并具体提供
Object postProcessBeforeInitialization(Object bean, String beanName):init-method之前被调用
Object postProcessAfterInitialization(Object bean, String beanName) :init-method之后被调用
在两个方法中,可以修改bean-->
<!-- 配置bean的后置处理器 :不需要配置id,IOC容器自动识别是一个 MyBeanPostProcessor-->
<bean class="com.atguigu.spring.beans.cycle.MyBeanPostProcessor"></bean>

spring-IOC容器(二)的更多相关文章

  1. Spring学习笔记之 Spring IOC容器(二) 之注入参数值,自动组件扫描方式,控制Bean实例化方式,使用注解方式

     本节主要内容:    1. 给MessageBean注入参数值    2. 测试Spring自动组件扫描方式    3. 如何控制ExampleBean实例化方式    4. 使用注解方式重构Jdb ...

  2. Spring IOC(二)容器初始化

    本系列目录: Spring IOC(一)概览 Spring IOC(二)容器初始化 Spring IOC(三)依赖注入 Spring IOC(四)总结 目录 一.ApplicationContext接 ...

  3. Spring IOC容器的初始化-(二)BeanDefinition的载入和解析

    前言 1.在讲BeanDefinition的载入和解析之前,我们先来看看什么是BeanDefinition. Bean对象在Spring中是以BeanDefinition来描述的,也就是说在Sprin ...

  4. MyEclipse Spring 学习总结一 Spring IOC容器

    一.Spring IOC容器---- Spring AllicationContext容器 程序的结构如下: 1.首先在MyEclipse 创建创建Java Project 2.创建好后,添加spin ...

  5. Spring IOC容器基本原理

    2.2.1 IOC容器的概念IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中new相关的对象,应用程序由IOC容器 ...

  6. Spring IOC 容器源码分析系列文章导读

    1. 简介 Spring 是一个轻量级的企业级应用开发框架,于 2004 年由 Rod Johnson 发布了 1.0 版本.经过十几年的迭代,现在的 Spring 框架已经非常成熟了.Spring ...

  7. Spring IOC容器启动流程源码解析(四)——初始化单实例bean阶段

    目录 1. 引言 2. 初始化bean的入口 3 尝试从当前容器及其父容器的缓存中获取bean 3.1 获取真正的beanName 3.2 尝试从当前容器的缓存中获取bean 3.3 从父容器中查找b ...

  8. Spring IOC容器在Web容器中是怎样启动的

    前言 我们一般都知道怎样使用spring来开发web应用后,但对spring的内部实现机制通常不是很明白.这里从源码角度分析下Spring是怎样启动的.在讲spring启动之前,我们先来看看一个web ...

  9. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(6):Spring IOC容器学习(概念、作用、Bean生命周期)

    一.IOC控制反转概念 控制反转(IOC)是一种通过描述(在Java中可以是XML或者是注解)并通过第三方去生产或获取特定对象的方式. 主动创建模式,责任在于开发者,而在被动模式下,责任归于Ioc容器 ...

  10. 深入理解Spring IoC容器和动态代理机制

    Deployment期间验证 实现一: <bean id="theTargetBean" class="..."/> <bean id=&qu ...

随机推荐

  1. Tensorflow函数:tf.zeros

    tf.zeros函数 tf.zeros( shape, dtype=tf.float32, name=None ) 定义在:tensorflow/python/ops/array_ops.py. 创建 ...

  2. [Spring] Spirng中的AOP进行事务的传播属性和事务隔离级别

    通知注解 前置通知(@Before):在某连接点(join point)之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常) 返回后通知(@AfterReturning):在某连接点 ...

  3. mysql'密码安全

    MYSQL数据库的安全配置 MYSQL密码的修改与恢复 MYSQL数据库密码的修改 Mysql5.7以下默认root登录密码为空,安装完成之后首先需要修改root的登录密码. # mysqladm – ...

  4. 在Linux系统下mail命令的用法

    在Linux系统下mail命令的测试 1. 最简单的一个例子: mail -s test admin@aispider.com 这条命令的结果是发一封标题为test的空信给后面的邮箱,如果你有mta并 ...

  5. POWER BI报表服务器混合云初了解

    Power BI报表服务器 购买Power BI Premium时,你可以获取2个产品,一个是Power BI Service另外一个是Power BI Report Server. Power BI ...

  6. genimage.cfg.template hacking

    #********************************************************************************* #* genimage.cfg.t ...

  7. Python之路,第七篇:Python入门与基础7

    python3 元组 (tuple) 元组是不可改变的序列, 同list 一样, 元组可以存放任意的值: 表示方法: 用小括号()括起来:  单个元素括起来后加逗号(,)区分单个对象还是元组: 创建空 ...

  8. Implementing a CNN for Text Classification in TensorFlow

    参考: 1.Understanding Convolutional Neural Networks for NLP 2.Implementing a CNN for Text Classificati ...

  9. centos安装jdk1.8

    一.安装Java环境 1. 删除系统预装的opensdk或其他sdk 用命令 java -version 验证是否存在sdk 2. 下载Java JDK约定的版本 版本:Java SE Develop ...

  10. grep 的学习 正则

    grep 命令: grep  "name"   /path/file_name    从file_name文件中中查找 name 字符 grep  -c    "name ...