• spring学习


    <!--使用外部属性文件链接数据库--!>
    <
    context:property-placeholder location="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>

    在部署系统时需要一些细节信息,这些信息放在spring中后期不方便,需要外部属性文件,spring提供了一个PropertyPlaceholderConfigurer的后置处理器,它允许用户将bean配置的内容外移到属性文件中,写好配置文件后,在访问属性时用"${var}"访问(注意要先导入context命名空间)

    public static void main(String[] args) throws SQLException {
    		ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-properties.xml");
    		DataSource dataSource = (DataSource) ctx.getBean("dataSource");
                    System.out.println(dataSource.getConnection());		
    	}
    

      

    user=root
    password=123456
    driverclass=com.mysql.jdbc.Driver
    jdbcurl=jdbc:mysql:///hibernate
    

     SpEL(Spring表达式语言)

    #{}为bean属性的动态赋值提供了便利,用SpEL你当然可以引用字面量,但这没什么卵用,也可以引用对象,其他对象的属性,类的静态变量等等

    <bean id="car" class="com.autowire.Car" scope="prototype">
            <property name="car" value=#{audi}></property>
            <property name="tyrePremeter" value="#{T(java.lang.Math).PI*80}"></property>
    <property name="brand" value=#{brand.name}</property>
    <property name="price" value=#{300000}></property>
    <property name="info" value="#{price>400000?'高富帅':'屌丝'}"></property>
    <!--甚至于可以动态赋值--!>
    </bean>

    IOC中Bean的生命周期:

    容器可以管理对象的生命周期,下面这个例子可以看出IOC管理对象的过程:

    public class Car{
     2    public Car(){
     3         System.out.println("car's constructor");         
     4    }
     5    public void setBrand(String brand){
     6         System.out.println("setBrand")
     7   }
     8    public void init(){
     9         System.out.println("car's init");
    10    }    
    11    public void destory(){
    12          System.out.println("car's destory");
    13   }

    <!--创建对象以测试--!>
    <
    bean id="car" class="com.process.Car" init-method="init" destroy-method="destory"> <property name="brand" value="Audi"></property> </bean>
    public static void main(String[] args) {
            // TODO Auto-generated method stub
            ClassPathXmlApplicationContext ctx = new   ClassPathXmlApplicationContext("bean-process.xml");
            Car car = (Car) ctx.getBean("car");
            System.out.println(car);
            ctx.close();                             //测试方法

    结果:

    car's constructor
    setBrand
    car's init
    com.process.Car@3a8624

    car's destory           //这就是整个生命周期的流程

  • 相关阅读:
    ASP.NET 4.0 与 Entity Framework 4第三篇使用Entity Framework调用存储过程
    雕虫无小技 JavaScript初学者的10个迷你技巧
    IE6下button随着文字的增多两边的内容边框也会增加的bug
    bigint ,int ,smallint ,tinyint 数据类型
    分享7个不错的jQuery游戏( 转)
    IE CSS Bug及解决方案参考手册
    利用CSS样式打印
    SQL 2005 弹出不允许对系统目录进行即席更新解决方法
    VS2010快捷键
    SQL2K,DTC错误:"该伙伴事务管理器已经禁止了它对远程/网络事务的支持"的解决办法
  • 原文地址:https://www.cnblogs.com/showing/p/4907653.html
Copyright © 2020-2023  润新知