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>
  • 相关阅读:
    人脸识别最新开发经验demo分享
    虹软人脸识别SDK的接入方法
    基于虹软sdk,java实现人脸识别(demo)
    【C#】 基于ArcFace 2.0—视频人脸识别Demo
    基于免费人脸识别的闸机开发及源码分享
    运算符及其应用
    vim 命令
    children lastchild parentNode parentElement
    同步对象锁有效作用域
    在eclipse导入Java 的jar包的方法 JDBC【图文说明】
  • 原文地址:https://www.cnblogs.com/lijianda/p/8617814.html
Copyright © 2011-2022 走看看