• 盘点获得spring上下文的几种流行方式


    一 前言

    知识追寻者打算重温spring,以后可能每周会发一篇吧,有空就搞搞;

    知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)

    二 获取上下文的几种方式

    • AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文。
    • AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文。
    • ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义。
    • FileSystemXmlapplicationcontext:从文件系统下的一个或多个XML配置文件中加载上下文定义。
    • XmlWebApplicationContext:从Web应用下的一个或多个XML配置文件中加载上下文定义

    2.1 准备工作

    被单实体

    public class Sheet {
    
        // 颜色
        private String color;
        // 长度
        private String length;
        // 省略 set get
    }    
    

    sheet.xml 里面注入了Bean Sheet, 并且默认初始化 color值为red;

    <?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="sheet" class="com.zszxz.bean.Sheet">
            <property name="color" value="pink"></property>
        </bean>
    
    
    </beans>
    

    2.2FileSystemXmlapplicationcontext 获取上下文

    FileSystemXmlApplicationContext 构造器参数中需要指定sheet.xml具体文件系统路径;获得上下文之后再通过getBean方法获取Bean Sheet; 拿到对象后使用getColor 方法打印颜色,为pink;

        public static void main(String[] args) {
            // xml路径
            String path = "C:\java\workspaceforresource\study-spring\obtain-bean-way\src\main\resources\sheet.xml";
            // 从文件系统中获取上下文
            ApplicationContext applicationContext = new FileSystemXmlApplicationContext(path);
            // 获取bean
            Sheet sheet = (Sheet) applicationContext.getBean("sheet");
            // pink
            System.out.println(sheet.getColor());
        }
    

    2.3ClassPathXmlApplicationContext获取上下文

    ClassPathXmlApplicationContext 传入参数是类路径下sheet.xml的路径

        public static void main(String[] args) {
            // 获取上下文
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("sheet.xml");
            // 获得实例
            Sheet sheet = (Sheet) applicationContext.getBean("sheet");
            // pink
            System.out.println(sheet.getColor());
        }
    

    2.4AnnotationConfigApplicationContext获取上下文

    AnnotationConfigApplicationContext 获取上下文,是通过java配置的方式获取上下文;知识追寻者这边需要进行java配置,内容如下,等同于之前的sheet.xml

    /**
     * @Author lsc
     * <p> sheet配置类等同于sheet.xml</p>
     */
    @Configuration
    public class SeetConfig {
    
        // 往配置类中注入Bean
        @Bean
        public Sheet sheet(){
            // 创建对象
            Sheet sheet = new Sheet();
            // 设置属性
            sheet.setColor("pink");
            return sheet;
        }
    }
    

    获取方式如下,传入AnnotationConfigApplicationContext 参数是SeetConfig.class

        public static void main(String[] args) {
            // 获取上下文
            ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SeetConfig.class);
            // 获得实例
            Sheet sheet = (Sheet) applicationContext.getBean("sheet");
            // pink
            System.out.println(sheet.getColor());
        }
    
  • 相关阅读:
    github 上中国互联网公司的开源项目
    execve(".. ",[".. ",".. "],[/* ..*/])第二个 参数 数组硬传
    1506-122 (S) Expecting pointer to struct or union.
    徘徊~2013.7.31
    myeclipse2014 maven4eclipse配置
    01--maven安装与环境配置(windows)
    java宽度优先将二叉树存成数组
    java宽度搜索打印二叉树
    Jquery中bind绑定和on绑定的区别
    java设计模式singleton原理及实现(java1.4前不要使用双重锁保证线程安全)
  • 原文地址:https://www.cnblogs.com/zszxz/p/12679039.html
Copyright © 2020-2023  润新知