• spring-IOC容器(二)


    一、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>
  • 相关阅读:
    python模块学习第 0000 题
    报错The VMware Authorization Service is not running
    图像指纹的重复识别
    CSS预编译器配置-------LESS Sass Stylus webstorm
    CSS布局中的水平垂直居中
    进度与日程
    HTML5 application cache
    进度
    CC2530芯片介绍
    Linux命令工具 top详解
  • 原文地址:https://www.cnblogs.com/lijianda/p/8617814.html
Copyright © 2020-2023  润新知