zoukankan      html  css  js  c++  java
  • Spring AnnotationConfigApplicationContext

    Spring AnnotationConfigApplicationContext

    概述

    • 通常Spring XML文件用来作为ClassPathXmlApplicationContext 的初始化。@Configuration 标注的类能够用来初始化AnnotationConfigApplicationContext类,这样就可以提供Spring容器的完全的自由的无XML用法
    • AnnotationConfigApplicationContext继承GenericApplicationContext这个通用应用上下文,GenericApplicationContext内部定义了一个DefaultListableBeanFactory实例,GenericApplicationContext实现了BeanDefinitionRegistry接口,所以可以通过AnnotationConfigApplicationContext实例注册bean defintion,然后调用refresh()方法来初始化上下文。
    • AnnotationConfigApplicationContext继承AbstractApplicationContext,AbstractApplicationContext提供了ApplicationContext的抽象实现。

    示例

    package com.myapp.config;
    import com.myapp.Entitlement;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    @Configuration
    public class AppConfig {
        @Bean(name="entitlement")
        public Entitlement entitlement() {
            Entitlement ent= new Entitlement();
            ent.setName("Entitlement");
            ent.setTime(1);
            return ent;
        }
    
        @Bean(name="entitlement2")
        public Entitlement entitlement2() {
            Entitlement ent= new Entitlement();
            ent.setName("Entitlement2");
            ent.setTime(2);
            return ent;
        }
    }
    
    package com.myapp;
    public class Entitlement {
        private String name;
        private int time;
    
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getTime() {
            return time;
        }
        public void setTime(int time) {
            this.time = time;
        }
    }
    
    package com.myapp;
    
    import com.myapp.config.AppConfig;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    public class JavaConfigTest {
        public static void main(String[] arg) {
            AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
            ctx.register(AppConfig.class);
            ctx.refresh();
    
            Entitlement ent = (Entitlement)ctx.getBean("entitlement");
            System.out.println(ent.getName());
            System.out.println(ent.getTime());
    
            Entitlement ent2 = (Entitlement)ctx.getBean("entitlement2");
            System.out.println(ent2.getName());
            System.out.println(ent2.getTime());
    
            ctx.close();
        }
    }
    
  • 相关阅读:
    回文自动机(PAM) 学习笔记
    UOJ#103. 【APIO2014】Palindromes PAM模板题
    UOJ#348. 【WC2018】州区划分
    STL 抄袭笔记
    ZJOI2019Day1 游记
    UOJ#370. 【UR #17】滑稽树上滑稽果 动态规划
    UOJ#24. 【IOI2014】Rail 交互题
    UOJ#373. 【ZJOI2018】线图 搜索,树哈希,动态规划
    UOJ#75. 【UR #6】智商锁 随机化算法 矩阵树定理
    AtCoder Grand Contest 031 (AGC031) D
  • 原文地址:https://www.cnblogs.com/frankltf/p/11469280.html
Copyright © 2011-2022 走看看