Spring中ApplicationContext的三个实现类

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>com.qublog</groupId>
    <artifactId>spring03</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>
    </dependencies>

</project>

AccountDao接口:

package com.qublog.dao;

//账户的持久层接口
public interface AccountDao {

    //模拟保存账户
    void saveAccount();
}

AccountDaoImpl类:

package com.qublog.dao.impl;

import com.qublog.dao.AccountDao;

//账户的持久层实现类
public class AccountDaoImpl implements AccountDao {

    public void saveAccount() {
        System.out.println("保存了账户");
    }
}

AccountService接口:

package com.qublog.service;

//账户业务层接口
public interface AccountService {
    //模拟保存账户
    void saveAccount();
}

AccountServiceImpl类:

package com.qublog.service.impl;

import com.qublog.dao.AccountDao;
import com.qublog.dao.impl.AccountDaoImpl;
import com.qublog.service.AccountService;

//账户的业务层实现类
public class AccountServiceImpl implements AccountService {

    private AccountDao accountDao = new AccountDaoImpl();

    public AccountServiceImpl() {
        System.out.println("对象创建了");
    }

    public void saveAccount() {
        accountDao.saveAccount();
    }
}

bean.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">
    <!-- 把对象的创建交给spring来管理 -->
    <bean id="accountService" class="com.qublog.service.impl.AccountServiceImpl"></bean>

    <bean id="accountDao" class="com.qublog.dao.impl.AccountDaoImpl"></bean>
</beans>

Client类:

package com.qublog.ui;

import com.qublog.dao.AccountDao;
import com.qublog.service.AccountService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

//模拟一个表现层,用于调用业务层
public class Client {
    //获取spring的IoC核心容器,并根据id获取对象
    /*
    * ApplicationContext的三个常用实现类:
    * ClassPathXmlApplicationContext:它可以加载类路径下的配置文件,要求配置文件必须在类路径下。
    * FileSystemXmlApplicationContext:它可以加载磁盘任意路径下的配置文件(必须有访问权限)。
    * AnnotationConfigApplicationContext:它是用于读取注解创建容器的。
    *
    * 核心容器的两个接口引发出的问题
    * ApplicationContext:它构建核心容器时,创建对象采取的策略是采用立即加载的方式,
    * 也就是说,只要一读取完配置文件马上就创建配置文件中的配置对象。
    *
    * BeanFactory:它在构建核心容器时,创建对象采取的策略是采用延迟加载的方式,
    * 也就是说,什么时候根据id获取对象了,什么时候才真正创建对象。
    * */
    public static void main(String[] args) {
        //获取核心容器对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
        //根据id获取bean对象,下面两种方式都可以
        AccountService as = (AccountService)ac.getBean("accountService");
        AccountDao adao = ac.getBean("accountDao",AccountDao.class);

        System.out.println(as);
        System.out.println(adao);
        //accountService.saveAccount();
    }
}

ApplicationContext的三个常用实现类:

  • ClassPathXmlApplicationContext:它可以加载类路径下的配置文件,要求配置文件必须在类路径下。
  • FileSystemXmlApplicationContext:它可以加载磁盘任意路径下的配置文件(必须有访问权限)。
  • AnnotationConfigApplicationContext:它是用于读取注解创建容器的。
发布了56 篇原创文章 · 获赞 0 · 访问量 533

猜你喜欢

转载自blog.csdn.net/qq_41242680/article/details/105598976