使用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>