SpringDay03

 
     <!-- 引用外部属性文件 -->
     <!-- 连接池作为单实例是最好的,一个项目就是一个连接池,
     连接池里面管理很多连接,连接是直接从连接池中获取  -->
     <!--可以让Spring帮我们创建连接池对象,(管理连接池)  -->
     <context:property-placeholder  location="classpath:dbconfig.properties"/>
     <!--${key}动态取出配置文件中某个key对应的值  -->
     <bean id="DataSource"  class="com.mchange.v2.c3p0.ComboPooledDataSource">
     <!-- username是spring中的一个关键字 ,为防止冲突 可在变量名前加前缀-->
     <property name="user"  value="${jdbc.username}"></property>
     <property name="password"  value="${jdbc.password}"></property>
     <property name="jdbcUrl"  value="${jdbc.jdbcUrl}"></property>
     <property name="driverClass"  value="${jdbc.driverClass}"></property>
     </bean>
 
 
测试类        
 
        //从容器中拿到连接池
        //DataSource bean = (DataSource)  ioc.getBean("DataSource");
        
        //按照类型获取组件,可以获取这个类型下的所有实现类子类等等
        DataSource bean=   ioc.getBean(DataSource.class);
        System.out.println(bean.getConnection());
 
 
 
<bean id="car" class="com.lmh.bean.Car">
        <property name="carName" value="宝马"></property>
        <property name="color"  value="green"></property>
        </bean>
    <!-- 为person里面的自定义类型的属性赋值
        property: 手动为属性赋值
        自动赋值:(自动装配) 仅限于对自定义类型的属性有效
        autowire="default"/no:不进行自动装配
        byName: 按照名字
            private Car car;以属性名作为id去容器中找到这个组件,并进行赋值;如果找不到就装配null
                car  = ioc.getBean("car");
        byType:
        1)、以属性的类型作为查找的依据去容器中找到组件,如果容器中有同类型的bean有两个则报错
        2)、没有找到响应的组件    装备null
        car  = ioc.getBean("Car.class");
        constructor:按照构造器进行赋值;
        1)、先按照有参构造器参数的类型进行装配,没有就直接为组件装配null
        2)、如果按照类型找到多个,参数的名作为id继续匹配,找到就装配,否则装配null
        3)、不会报错
     -->
    <bean id="person"  class="com.lmh.bean.Person" autowire="byType">
    
    </bean>
    <!-- List<Book> books:容器可以把容器中的所有book封装list赋值给这个属性 -->
    <bean id="book01" class="com.lmh.bean.Book">
    <property name="name"  value="book01"></property>
    </bean>
    <bean id="book02" class="com.lmh.bean.Book">
    <property name="name"  value="book02"></property>
    </bean>
    <bean id="book03" class="com.lmh.bean.Book">
    <property name="name"  value="book03"></property>
    </bean>
 
    <bean id="car" class="com.lmh.bean.Car">
            <property name="carName" value="宝马"></property>
            <property name="color"  value="green"></property>
        </bean>
    <!-- SpEL测试(Spring Expression Language)   Spring 表达式语言
        在SpEL中使用字面量、
        引用其他bean、
        引用其他bean的某个属性值
        调用非静态方法
        调用静态方法
        使用运算符; 所有的运算符都支持     
    -->
    <bean id="person01"  class="com.lmh.bean.Person">
        <!-- 字面量: ${}; #{} -->
        <property name="age"  value="#{22*3}"></property>
        <!-- 引用其他bean的某个属性值 -->
        <property name="name"  value="#{car.color}"></property>
        <!-- 引用其他bean -->
        <!-- <property name="car"  value="#{car}"></property> -->
        <!-- 调用静态方法:  UUID.randomUUID().toString()
            #{T(全类名).静态方法名(1,2)}
        -->
        <property name="email"  value="#{T(java.util.UUID).randomUUID().toString()}"></property>    
        <!-- 调用非静态方法: 对象.方法名 -->
        <property name="gender"  value="#{car.getColor()}"></property>
    
 
 
 
   
posted @ 2019-11-06 16:45  大冰块  阅读(103)  评论(0)    收藏  举报