天天看點

Spring IOC配置檔案加載

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();
    }
}
           

總結:

      假如存在多個配置檔案就可以用加載總配置檔案方法,如果用加載多個配置檔案方法的話,檔案名容易出錯,假如檔案名有誤,代碼當時也不會報錯,隻會在運作後報錯,是以用加載總配置檔案方法會避免這樣的情況出現。