zoukankan      html  css  js  c++  java
  • JavaEE——Spring4--(4)Bean之间的关系 继承与依赖 及作用域 外部属性文件(利用C3P0与数据库建立连接)

    继承

    Spring 允许继承 bean 的配置, 被继承的 bean 称为父 bean. 继承这个父 Bean 的 Bean 称为子 Bean


    子 Bean 从父 Bean 中继承配置, 包括 Bean 的属性配置
    子 Bean 也可以覆盖从父 Bean 继承过来的配置

    父 Bean 可以作为配置模板, 也可以作为 Bean 实例. 若只想把父 Bean 作为模板, 可以设置 <bean> 的abstract 属性为 true, 这样 Spring 将不会实例化这个 Bean
    并不是 <bean> 元素里的所有属性都会被继承. 比如: autowire, abstract 等.

    也可以忽略父 Bean 的 class 属性, 让子 Bean 指定自己的类, 而共享相同的属性配置. 但此时 abstract 必须设为 true

    依赖

    Spring 允许用户通过 depends-on 属性设定 Bean 前置依赖的Bean,前置依赖的 Bean 会在本 Bean 实例化之前创建好
    如果前置依赖于多个 Bean,则可以通过逗号,空格或的方式配置 Bean 的名称

     作用域

    <!-- 默认情况下 bean 是单例的! -->
    <!-- 但有的时候, bean 就不能使单例的. 例如: Struts2 的 Action 就不是单例的! 可以通过 scope 属性来指定 bean 的作用域 -->
    prototype: 原型的. 每次调用 getBean 方法都会返回一个新的 bean. 且在第一次调用 getBean 方法时才创建实例
    singleton: 单例的. 每次调用 getBean 方法都会返回同一个 bean. 且在 IOC 容器初始化时即创建 bean 的实例. 默认值

    外部属性文件

     连接数据库 首先导入jar包

    然后创建properties.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="user" value="root"></property>
            <property name="password" value="1234"></property>
            <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_person"></property>
        </bean>
    </beans>
    

      这样就可以使用了

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

      但是一般不这样做,因为后续维护起来再找比较麻烦,所以将properties属性放入一个专有的db.properties文件中,再引用

    user=root
    password=1234
    driverClass=com.mysql.jdbc.Driver
    jdbcUrl=jdbc:mysql://localhost:3306/db_person
    

      

    可通过 <context:property-placeholder> 元素简化:
      <beans> 中添加 context Schema 定义
      在配置文件中加入如下配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
           xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
    <!--导入属性文件-->
        <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>
    </beans>
    

      

  • 相关阅读:
    SVG.js 文本绘制整理
    SVG.js 基础图形绘制整理(二)
    SVG.js 基础图形绘制整理(一)
    C# 异步编程Task整理(一)
    Svg.Js 父类的基础操作
    Svg.Js A标签,链接操作
    Svg.Js 简介(转)
    SVG 相关整理
    Kendo UI
    Kendo UI
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/8286845.html
Copyright © 2011-2022 走看看