Spring框架学习05 引用外部属性文件和基于XML的自动装配

使用Spring创建数据库连接池,加载外部属性文件dbconfig.properties 

<!--加载外部属性文件,classpath类路径下面-->
    <context:property-placeholder location="classpath:dbconfig.properties"></context:property-placeholder>
    <!--数据库连接池用单实例是最好的,一个项目就一个连接池,一个连接池里面有许多连接,数据库连接直接从池子里面拿-->
    <!--可以让Spring帮我们创建数据库连接池对象(管理连接池)-->
    <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <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>

dbconfig.properties 文件配置如下:

jdbc.username=root
jdbc.password=12345678
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/test
jdbc.driverClass=com.mysql.jdbc.Driver

 加载外部属性文件,引入了classpath类路径下面的dbconfig文件

<context:property-placeholder location="classpath:dbconfig.properties"></context:property-placeholder>

 基于XML的自动装配

Person类

package com.sf.jin;

import java.util.List;
import java.util.Map;
import java.util.Properties;

/**
 * @author JinJian
 * @version 1.0
 * @date 2021/12/12 10:09
 */
public class Person {
    private String name;
    private Integer age;
    private String email;
    private String gender;
    private Car car;
    private List<Book> bookList;
    private Map<Object,Object> mpas;
    private Properties properties;

    public Person() {
        System.out.println("无参构造器");
    }

    public Person(String name, Integer age, String email, String gender) {
        System.out.println("有参构造器");
        this.name = name;
        this.age = age;
        this.email = email;
        this.gender = gender;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Car getCar() {
        return car;
    }

    public void setCar(Car car) {
        this.car = car;
    }

    public List<Book> getBookList() {
        return bookList;
    }

    public void setBookList(List<Book> bookList) {
        this.bookList = bookList;
    }

    public Map<Object, Object> getMpas() {
        return mpas;
    }

    public void setMpas(Map<Object, Object> mpas) {
        this.mpas = mpas;
    }

    public Properties getProperties() {
        return properties;
    }

    public void setProperties(Properties properties) {
        this.properties = properties;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", email='" + email + '\'' +
                ", gender='" + gender + '\'' +
                ", car=" + car +
                ", bookList=" + bookList +
                ", mpas=" + mpas +
                ", properties=" + properties +
                '}';
    }
}

Car类

package com.sf.jin;

/**
 * @author JinJian
 * @version 1.0
 * @date 2021/12/12 15:28
 */
public class Car {
    private String carName;
    private Integer price;
    private String color;

    public String getCarName() {
        return carName;
    }

    public void setCarName(String carName) {
        this.carName = carName;
    }

    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    @Override
    public String toString() {
        return "Car{" +
                "carName='" + carName + '\'' +
                ", price=" + price +
                ", color='" + color + '\'' +
                '}';
    }
}

 给Person赋值Car的值,使用 property:ref 这是手动赋值,使用autowire进行自动装配更方便,

主要有 autowire="byName"根据名字进行装配和  autowire="byType"根据类型进行装配

<?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="car" class="com.sf.jin.Car">
    <property name="carName" value="bmw"></property>
    <property name="color" value="red"></property>
</bean>
    <!--为Person里面自定义的属性赋值
     property:这是手动赋值
    自动赋值(自动装配),仅限对于自定义类型的属性
    autowire="default/no"   不自动装配

    按照某种规则自动装配
    autowire="byName" 按照名字
    private Car car;
    (1)以属性名作为id在容器中找这个组件给它赋值,如果找不到就装配null
    car = ioc.getBean("car")

    autowire="byType" 按照类型
    (1)以属性的类型作为查找依据去容器中去找这个组件,如果有多个则报错
    (2)没找到就装配null
    car = ioc.getBean("car.class")

    autowire="constructor" 按照构造函数进行赋值
    -->
    <bean id="person01" class="com.sf.jin.Person" autowire="byName">

        <!--<property name="car" ref="car"></property>-->
    </bean>
</beans>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值