Spring配置檔案加載
1、通過相對路徑加載配置檔案:
new ClassPathXmlApplicationContext("配置檔案名")
例如:
BeanFactory factory = new ClassPathXmlApplicationContext("spring.xml");
2、通過絕對路徑加載配置檔案:
new FileSystemXmlApplicationContext("配置檔案的絕對路徑")
右擊其配置檔案,單擊Copy Path即可出現其所在的絕對路徑。
例如:
BeanFactory factory = new FileSystemXmlApplicationContext("C:\\Users\\mtx\\IdeaProjects\\spring03\\src\\main\\resources\\spring.xml");
(1)單個配置檔案的加載:
new ClassPathXmlApplicationContext("配置檔案名")
(2)多個配置檔案加載:
1、通過可變參數,設定多個配置檔案:
new ClassPathXmlApplicationContext("配置檔案名1","配置檔案名2"...)
2、設定一個總配置檔案,在總配置檔案中導入需要加載的配置檔案:
<import resource="配置檔案名"/>(單雙标簽都可)
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>spring03</artifactId>
<version>1.0-SNAPSHOT</version>
<name>spring03</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- 添加Spring架構的核心依賴 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
</dependencies>
<build>
</build>
</project>
spring.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" xmlns:context="http://www.springframework.org/schema/tool"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool.xsd">
<!-- 執行個體化bean對象 -->
<bean id="userService" class="org.example.UserService"></bean>
</beans>
UserService:
package org.example;
public class UserService {
public void test(){
System.out.println("UserService...");
}
}
Start:
package org.example;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
/**
* spring配置檔案加載
* 1、通過相對路徑加載配置檔案
* new ClassPathXmlApplicationContext("配置檔案名")
* 2、通過絕對路徑加載配置檔案
* new FileSystemXmlApplicationContext("配置檔案的絕對路徑)
*
* 1、單個配置檔案加載
* new ClassPathXmlApplicationContext("配置檔案名")
* 2、多個配置檔案加載
* (1)通過可變參數,設定多個配置檔案
* new ClassPathXmlApplicationContext("配置檔案名1","配置檔案2"...)
* (2)設定一個總配置檔案,在總配置檔案中導入需要加載的配置檔案:
* <import resource="配置檔案名"></import>(單雙标簽都可)
*/
public class Start {
public static void main(String[] args) {
//通過相對路徑加載配置檔案
// BeanFactory factory = new ClassPathXmlApplicationContext("spring.xml");
//通過絕對路徑加載配置檔案
// BeanFactory factory = new FileSystemXmlApplicationContext("C:\\Users\\mtx\\IdeaProjects\\spring03\\src\\main\\resources\\spring.xml");
//加載多個配置檔案
BeanFactory factory = new ClassPathXmlApplicationContext("spring.xml","beans.xml");
UserService userService = (UserService) factory.getBean("userService");
userService.test();
userDao userDao = (userDao) factory.getBean("userDao");
userDao.test();
}
}
beans.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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userDao" class="org.example.userDao">
<!-- collaborators and configuration for this bean go here -->
</bean>
</beans>
userDao:
package org.example;
public class userDao {
public void test(){
System.out.println("userDao...");
}
}
加載總配置檔案
隻加載一個service.xml,其中的多個配置檔案即可使用。
service.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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 導入配置檔案 -->
<import resource="beans.xml"></import>
<import resource="spring.xml"></import>
</beans>
到時候就用這一段代碼就可以調用多個配置檔案:
BeanFactory factory = new ClassPathXmlApplicationContext("service.xml");
package org.example;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Start {
public static void main(String[] args) {
//加載總配置檔案
BeanFactory factory = new ClassPathXmlApplicationContext("service.xml");
UserService userService = (UserService) factory.getBean("userService");
userService.test();
userDao userDao = (userDao) factory.getBean("userDao");
userDao.test();
}
}
總結:
假如存在多個配置檔案就可以用加載總配置檔案方法,如果用加載多個配置檔案方法的話,檔案名容易出錯,假如檔案名有誤,代碼當時也不會報錯,隻會在運作後報錯,是以用加載總配置檔案方法會避免這樣的情況出現。