`

Spring中实现加载某一个层的类方法

 
阅读更多
[/color]/**
* 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候中取出ApplicaitonContext.
* 注意:此类的Bean定义所在的applicationContext*.xml文件必须设置default-lazy-init="false"或者定义 Springs
* <bean/>的属性lazy-init="false"
* /
public class Springs implements ApplicationContextAware {
   
    private static ApplicationContext applicationContext;
   
    /**
     * 实现ApplicationContextAware接口的context注入函数, 将其存入静态变量.
     */
    public void setApplicationContext(ApplicationContext applicationContext) {

        Springs.applicationContext = applicationContext;
    }
   
    /**
     * 取得存储在静态变量中的ApplicationContext.
     */
    public static ApplicationContext getApplicationContext() {

        checkApplicationContext();
        return applicationContext;
    }
   
    /**
     * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
     */
    @SuppressWarnings("unchecked")
    public static <T> T getBean(String name) {

        checkApplicationContext();
        return (T) applicationContext.getBean(name);
    }
   
    /**
     * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型. 如果同Class类型配置了多个Bean,只返回第一个
     */
    @SuppressWarnings("unchecked")
    public static <T> T getBean(Class<T> clazz) {

        checkApplicationContext();
        Map beans = applicationContext.getBeansOfType(clazz);
        return (T) Collections.first(beans.values());
    }
   
 
   
    public static String getMessage(String code, Object... args) {

        return getMessage(code, Locale.CHINA, args);
    }
   
    // @SuppressWarnings("unchecked")
    // public static <T> T createBean(Class<T> beanClass, String beanName) {
    //
    // AutowireCapableBeanFactory af = Springs.getApplicationContext()
    // .getAutowireCapableBeanFactory();
    // return (T) af.createBean(beanClass, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, true);
    // }
   
    private static void checkApplicationContext() {

        if (applicationContext == null) {
            throw new IllegalStateException(
                    "applicaitonContext未注入,请在applicationContext.xml中定义Springs");
        }
    }
}
分享到:
评论

相关推荐

    详解spring boot容器加载完后执行特定操作

    我们可以创建一个实现 ApplicationListener 接口的类,用于监听 ContextRefreshedEvent 事件,并在事件处理方法中执行特定操作。 下面是一个简单的示例代码,演示如何使用 ApplicationListener 接口来执行容器加载...

    spring mvc实现Oracle分页

    在IT行业中,Spring MVC是一个广泛使用的Java Web框架,它提供了模型-视图-控制器(MVC)模式,帮助开发者构建可维护性和可扩展性高的Web应用程序。本项目着重讲解如何在Spring MVC环境中,结合JDBC技术,实现对...

    mybatis3_spring3整合

    一对一关系通常用于两个表中的某一条记录只能与另一个表中的唯一一条记录对应,而一对多关系则表示一个表中的记录可以与另一表中的多个记录相对应。 配置一对一关系,我们需要在MyBatis的Mapper XML文件中定义关联...

    Struts2 hibernate spring分页实例

    在服务层,我们可以定义一个接口,用于封装业务逻辑,例如获取某条件下的数据分页列表。然后,Spring的IOC容器将实现这个接口的类注入到Action中。在持久层,Spring可以帮助管理Hibernate Session,确保在事务边界内...

    Java基于SSM(Spring+SpringMVC+MyBatis)某理工学院网上打印服务平台.zip

    Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存中有用的数据以某种技术保存起来,并且可以再次取出来...

    JavaEE测试题(Spring2)

    `jdbcTemplate.queryForList()`是Spring JDBC模块中的一个常用方法,用于执行SQL查询并返回结果集,该结果集通常以List形式返回。返回类型可以是: - `List&lt;HashMap&gt;`:适合于简单查询,返回的Map中键为列名,值为...

    spring练习jar包 2.5版本

    这是一个轻量级的日志记录抽象层,允许你在运行时选择不同的日志实现,如log4j、java.util.logging等。在Spring框架中,commons-logging被用来记录框架内部的调试和错误信息,为开发者提供更详细的运行状态反馈。 ...

    1.SpringIOC.pdf

    Spring MVC是Spring框架用于构建Web应用的模块,它采用了一个分层的架构,将模型(Model)、视图(View)和控制器(Controller)分离,使得Web层的开发更符合MVC设计模式。同时,Spring JDBC模块提供了一个简单的...

    spring mvc+jquery easyui CRUD

    在本项目中,我们主要探讨的是如何利用Spring MVC框架与jQuery EasyUI库来实现一个基本的CRUD(创建、读取、更新、删除)功能。Spring MVC是Java平台上的一个强大的MVC(Model-View-Controller)框架,它提供了一个...

    某著名培训机构struts2+mybatis+springMVC整合代码

    在这个名为"某著名培训机构struts2+mybatis+springMVC整合代码"的压缩包中,你将找到一个基于这三个框架的集成示例。下面我们将详细探讨这三个框架以及它们的整合方式。 **Struts2** 是一款优秀的MVC(Model-View-...

    SpringMVC+Mybatis整合实现简单权限控制系统代码

    而Mybatis则是一个轻量级的持久层框架,它简化了数据库操作,通过XML或注解方式配置SQL,实现了ORM(对象关系映射)。 在权限控制系统的实现中,我们通常会涉及到以下几个关键概念: 1. **用户**:系统中的操作...

    SSH+dwr实现三级级联动-转自Ajava

    总结来说,SSH+dWR实现的三级联动是Java Web开发中的一个实用技术,结合了Spring、Struts、Hibernate的强大力量以及DWR的实时通信特性,为用户提供流畅的交互体验。在这个过程中,开发者需要理解每个框架的作用,并...

    基于Spring与Hibernate的数据库访问技术研究

    在实际的项目开发中,如某资助贫困学生的信息管理系统,采用Spring和Hibernate的集成方案,可以显著提升数据处理的效率和安全性。例如,通过Spring的依赖注入,可以轻松地在服务层注入DAO(Data Access Object)对象...

    技术笔记(第一部分整理)

    实现类实现了Service接口中定义的方法,并调用DAO层完成具体的数据操作。 ##### 测试类 测试类用于验证应用的功能是否正确实现。通常使用JUnit和Mockito等测试框架来编写单元测试。 #### Spring+SpringBoot+...

    Hibernate教程06_关系映射之一对一单向主键关联

    这个文件名可能代表了一个基于Struts2、Spring和Hibernate(S2SH)的项目,其中"relation03"可能表示关系映射的第三部分,而"one2one_uni_pk"直指一对一单向主键关联的具体实现。 **详细知识点:** 1. **一对一...

    java面试宝典

    42、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 12 43、说出一些常用的类,包,接口,请各举5 个。 12 44、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类?是否可以...

    设计模式.pdf

    11. **访问者模式**:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 ### 单例模式的实现方式 单例模式有多种实现方式,每种方式都有其特点和适用...

    精选_基于JSP SSM框架的城市公交查询系统的设计与实现_源码打包

    MyBatis则是一个持久层框架,简化了数据库操作,通过XML或注解的方式将SQL语句映射到Java方法上,实现了数据访问的便捷性。 在设计城市公交查询系统时,首先需要建立数据库模型,包括公交线路、站点、时刻表等实体...

    三级联动,第一次从数据库拿,第二次从redis中拿

    "三级联动"是一种常见的数据交互模式,通常用于实现下拉菜单或筛选功能,用户在选择某一层次的选项后,下一层的选项会根据前一层的选择动态加载。这种设计可以减少不必要的数据传输,提高用户体验。在描述中提到的...

    MyBatis学习(一) --------- 框架概述.pdf

    使用三层架构的优点是结构清晰、耦合度低、可维护性高、可拓展性高、有利于标准化、开发人员可以只关注整个结构中的其中某一层功能实现、有利于各层逻辑的复用。 常用框架 常用的框架有MyBatis框架、Spring框架、...

Global site tag (gtag.js) - Google Analytics