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();
        }
    }
    
  • 相关阅读:
    为MySQL的root用户设定密码
    Sublime Text 3安装Package Control失败
    从系统关机后主机仍在运行
    如何判断一个数是否是质数?
    python之lambda函数
    yum的一些命令使用方法
    NopCommerce架构分析-数据持久层
    NopCommerce架构分析-Cache的应用
    NopCommerce架构分析-源码结构和架构
    下载图片
  • 原文地址:https://www.cnblogs.com/frankltf/p/11469280.html
Copyright © 2011-2022 走看看