zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    hdu 5366 简单递推
    hdu 5365 判断正方形
    hdu 3635 并查集
    hdu 4497 数论
    hdu5419 Victor and Toys
    hdu5426 Rikka with Game
    poj2074 Line of Sight
    hdu5425 Rikka with Tree II
    hdu5424 Rikka with Graph II
    poj1009 Edge Detection
  • 原文地址:https://www.cnblogs.com/lijianda/p/8617814.html
Copyright © 2011-2022 走看看