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();
        }
    }
    
  • 相关阅读:
    30-语言入门-30-分数加减法
    29-语言入门-29-两点距离
    bootstrapcss3触屏滑块轮播图
    input输入样式,动画
    HTML5夜空烟花绽放动画效果
    精美留言、评论框,带微博表情
    Sublime Text 3汉化中文版
    直播英国脱欧各国反应?谁将是最大赢家?
    品牌关键字的重要性?是什么呢
    网站收录之网络推广
  • 原文地址:https://www.cnblogs.com/frankltf/p/11469280.html
Copyright © 2011-2022 走看看