• ApplicationContexAware的作用


    当一个类实现了这个接口(ApplicationContextAware)之后,这个类就可以方便获得ApplicationContext中的所有bean。换句话说,就是这个类可以直接获取spring配置文件中,所有引用到的bean对象。

    一.基于xml的方式

    1.工具类实现ApplicationContextAware接口

    public class BeanFactoryUtil implements ApplicationContextAware {
        protected static ApplicationContext ctx = null;
    
    
         public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
             ctx = applicationContext;
         }
    
         public static Object getBean(String beanId) {
             return ctx.getBean(beanId);
         }
    }

    2.UserDao

    public class UserDao {
    }

    3.配置文件中注册

    <?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="beanFactoryUtil" class="com.itheima.testAware.BeanFactoryUtil"/>
        <bean id="userDao" class="com.itheima.testAware.UserDao"/>
    </beans>

    4.测试类

    public class AwareTest {
        public static void main(String []args) {
            ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml");
            //ApplicationContext context=new AnnotationConfigApplicationContext(EventConfig.class);
            UserDao userDao = (UserDao)BeanFactoryUtil.getBean("userDao");
            System.out.println(userDao);
    
        }
    }


    一.基于注解的方式

    1.工具类实现ApplicationContextAware接口

    public class BeanFactoryUtil implements ApplicationContextAware {
        protected static ApplicationContext ctx = null;
    
    
         public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
             ctx = applicationContext;
         }
    
         public static Object getBean(String beanId) {
             return ctx.getBean(beanId);
         }
    }

    2.UserDao

    public class UserDao {
    }

    3.配置类

    @Configuration
    @ComponentScan("com.itheima.testAware")
    public class AwareConfig {
    
    }

    4.测试类

    public class AwareTest {
        public static void main(String []args) {
          //  ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml");
            ApplicationContext context=new AnnotationConfigApplicationContext(AwareConfig.class);
            UserDao userDao = (UserDao)BeanFactoryUtil.getBean("userDao");
            System.out.println(userDao);
    
        }
    }

  • 相关阅读:
    Python-内存管理
    Python如何操作Excel
    336. 文本压缩
    Python-锁
    MVC接收以post形式传输的各种参数
    linux批量替换指定文件夹中所有文件的指定内容
    ES6:string.raw浅析
    node学习笔记
    运行node提示:events.js:160 throw er; // Unhandled 'error' event
    socket.io入门示例参考
  • 原文地址:https://www.cnblogs.com/liuyi13535496566/p/13670394.html
Copyright © 2020-2023  润新知