zoukankan      html  css  js  c++  java
  • (007)spring容器获取ApplicationContext

      spring容器获取ApplicationContext几种方法

    1、使用@Autowired注解

      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.edu.spring</groupId>
        <artifactId>spring</artifactId>
        <version>1.0.0</version>
    
        <name>spring</name>
        <!-- FIXME change it to the project's website -->
        <url>http://www.example.com</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
        
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.3.2.RELEASE</version>
            </dependency>
        </dependencies>
    
    </project>
    View Code

      User.java

    package com.edu.spring;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.ApplicationContext;
    import org.springframework.stereotype.Component;
    
    @Component
    public class User {
    
        @Autowired
        private ApplicationContext applicationContext;
        
        public void show(){
            System.out.println("user: "+applicationContext);
        }
        
    }
    View Code

      App.java

    package com.edu.spring;
    
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    public class App {
    
        public static void main(String[] args) {
            AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext("com.edu.spring");
            context.getBean("user",User.class).show();
            context.close();
        }
    }
    View Code

      运行结果如下:

     2、实现ApplicationContextAware接口,在set方法中赋值

      Book.java

    package com.edu.spring2;
    
    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.stereotype.Component;
    
    @Component
    public class Book implements ApplicationContextAware {
    
        private ApplicationContext applicationContext;
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext)
                throws BeansException {
            // TODO Auto-generated method stub
            this.applicationContext=applicationContext;
        }
        
        public void show(){
            System.out.println("book :"+applicationContext.getClass());
        }
    }
    View Code

      App.java

    package com.edu.spring;
    
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    public class App {
    
        public static void main(String[] args) {
            AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext("com.edu.spring");
            context.getBean("book",Book.class).show();
            context.close();
        }
    }
    View Code

      运行结果如下:

      3、在构造函数中赋值(spring4.3中新特性),有局限性,只能有一个构造函数,如果有多个构造函数,会选择默认的无参的构造函数

      Bank.java

    package com.edu.spring;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.stereotype.Component;
    
    @Component
    public class Bank {
    
        private ApplicationContext applicationContext;
        
        public Bank(ApplicationContext applicationContext){
            this.applicationContext=applicationContext;
        }
        
        public  void show(){
            System.out.println("bank: "+applicationContext.getClass());
        }
    }
    View Code

      App.java

    package com.edu.spring;
    
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    public class App {
    
        public static void main(String[] args) {
            AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext("com.edu.spring");
            context.getBean("bank",Bank.class).show();
            context.close();
        }
    }
    View Code

      运行结果如下:

  • 相关阅读:
    vue视图刷新失效
    vue移动端框架搭建
    猜单词--莫妮卡的新游戏
    快速上手python的坑
    江西育华学校初三下月考英语试卷 2020.3
    Title
    什么是vuex? 什么场景下适用vuex?
    左右模块滑动
    vue-router的几种实例方法以及参数传递
    完整的 vue-router 导航解析流程
  • 原文地址:https://www.cnblogs.com/javasl/p/11783487.html
Copyright © 2011-2022 走看看