zoukankan      html  css  js  c++  java
  • 如何手动获取Spring容器中的bean(ApplicationContextAware 接口)

    转自:https://www.cnblogs.com/deng-cc/p/6373670.html

    ApplicationContextAware 接口的作用

    先来看下Spring API 中对于 ApplicationContextAware 这个接口的描述:
     
     
    即是说,当一个类实现了这个接口之后,这个类就可以方便地获得 ApplicationContext 中的所有bean。换句话说,就是这个类可以直接获取Spring配置文件中,所有有引用到的bean对象。
     
     

    如何使用 ApplicationContextAware 接口

    如何使用该接口?很简单。
     

    1、定义一个工具类,实现 ApplicationContextAware,实现 setApplicationContext方法

    如此一来,我们就可以通过该工具类,来获得 ApplicationContext,进而使用其getBean方法来获取我们需要的bean。
     
     1     public class SpringContextUtils implements ApplicationContextAware {
     2         private static ApplicationContext context;
     3         @Override
     4         public void setApplicationContext(ApplicationContext context)
     5                 throws BeansException {
     6             SpringContextUtils.context = context;
     7         }
     8         public static ApplicationContext getContext(){
     9             return context;
    10         }
    11     }

    2、在Spring配置文件中注册该工具类

    之所以我们能如此方便地使用该工具类来获取,正是因为Spring能够为我们自动地执行 setApplicationContext 方法,显然,这也是因为IOC的缘故,所以必然这个工具类也是需要在Spring的配置文件中进行配置的。
     
    1     <!--Spring中bean获取的工具类-->
    2     <bean id="springContextUtils" class="com.zker.common.util.SpringContextUtils" />

    3、编写方法进行使用

    一切就绪,我们就可以在需要使用的地方调用该方法来获取bean了。
     1         /**
     2          * 利用Ajax实现注册的用户名重复性校验
     3          * @return
     4          */
     5         public String ajaxRegister() throws IOException {
     6             UserDao userDao = (UserDao)SpringContextUtils.getContext().getBean("userDao");
     7             if (userDao.findAdminByLoginName(loginName) != null
     8                     || userDao.findUserByLoginName(loginName) != null) {
     9                 message.setMsg("用户名已存在");
    10                 message.setStatus(false);
    11             } else {
    12                 message.setMsg("用户名可以注册");
    13                 message.setStatus(true);
    14             }
    15             return "register";
    16         }
    源码参考
    Github地址 --> github.com/deng-cc/KeepLearning/commits/master
    commit id   --> 50f9bd3163aeb126fca4d2e2cf599c6637796d1a
  • 相关阅读:
    Spring MVC 核心组件详解
    Spring MVC 入门就这一篇
    Spring 事务解决方案
    【UGUI源码分析】Unity遮罩之Mask详细解读
    游戏开发中不同时区下的时间问题
    ARTS第十三周(阅读Tomcat源码)
    Win10 电脑安装.NET低版本提示“这台计算机中已经安装了 .NET Framwork 4.6.2或版本更高的更新”问题
    Dynamics 365 Setup 提示SqlServer 存在
    Dynamics CRM "Verification of prerequisites for Domain Controller promotion failed. Certificate Server is installed."
    Dynamics CRM
  • 原文地址:https://www.cnblogs.com/sharpest/p/7706854.html
Copyright © 2011-2022 走看看