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>
  • 相关阅读:
    jQuery length 和 size()区别
    HTML5中Web Sql学后总结
    HTML5中的history API的理解和使用
    js中同步与异步的理解
    字符编码理解
    excel之VBA总结
    android29之UI控件的抽屉式实现方法之一(DrawerLayout和NavigationView)
    Linux环境下django初入
    Springboot整合MybatisPlus(超详细)完整教程~
    自定义持久层框架设计实现思路
  • 原文地址:https://www.cnblogs.com/lijianda/p/8617814.html
Copyright © 2011-2022 走看看