资讯专栏INFORMATION COLUMN

基于注解的spring 在静态方法中使用注入的类

since1986 / 2434人阅读

摘要:比如在处理数据源时返回,处理数据源时返回一开始的写法可是会报错因为静态方法中不能使用非静态的变量,而注解不支持静态属性上添加。同事给出了解决方案在初始化之后将包涵已经注入好各个的付给一个静态的变量在方法中通过来获得注入的对象。

博客搬移到这里:http://yemengying.com/
有个自己的博客还蛮好玩的,bazinga!
在开发时遇到需要将多个来源的数据转换为统一的格式,不同来源的数据转换逻辑不同。所以想利用工厂模式 让所有的转换类继承一个公有的类 然后在工厂类中根据不同的来源 返回不同的实例。比如在处理A数据源时 返回AConverter,处理B数据源时 返回BConverter
一开始的写法:

@Component
public class ConverterFactory {

    @Resource
    private AConverter aConverter;
    @Resource
    private BConverter bConverter;
    @Resource
    private CConverter cConverter;

    public static POIConverter getConverter(String type) {
        switch (type) {
            case "a" : return aConverter;
            case "b" : return bConverter;
            case "c" : return cConverter;
        }
        return null;
    }
}

可是会报错 因为静态方法中不能使用非静态的变量,而Resource注解不支持静态属性上添加。同事给出了解决方案 在初始化之后将包涵已经注入好各个converter的this付给一个静态的变量factory 在getConverter方法中 通过factory来获得注入的对象。

@Component
public class ConverterFactory {

    @Resource
    private AConverter aConverter;
    @Resource
    private BConverter bConverter;
    @Resource
    private CConverter cConverter;
    
    private static ConverterFactory factory;

    @PostConstruct
    public void init() {
        factory = this;
    }

    public static POIConverter getConverter(String type) {
        switch (type) {
            case "a" : return factory.aConverter;
            case "b" : return factory.bConverter;
            case "c" : return factory.cConverter;
        }
        return null;
    }

}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64670.html

相关文章

  • Spring详解3.Bean装配

    摘要:的依赖关系,根据依赖关系配置完成之间的装配。的行为信息,如生命周期范围及生命周期各过程的回调函数。使用该种装配模式时,优先匹配参数最多的构造函数。如果提供了默认的构造函数,则采用否则采用进行自动装配。 点击进入我的博客 1 Spring容器与Bean配置信息 Bean配置信息 Bean配置信息是Bean的元数据信息,它由一下4个方面组成: Bean的实现类 Bean的属性信息,如数...

    endiat 评论0 收藏0
  • Spring入门IOC和AOP学习笔记

    摘要:入门和学习笔记概述框架的核心有两个容器作为超级大工厂,负责管理创建所有的对象,这些对象被称为。中的一些术语切面切面组织多个,放在切面中定义。 Spring入门IOC和AOP学习笔记 概述 Spring框架的核心有两个: Spring容器作为超级大工厂,负责管理、创建所有的Java对象,这些Java对象被称为Bean。 Spring容器管理容器中Bean之间的依赖关系,使用一种叫做依赖...

    wenyiweb 评论0 收藏0
  • Spring核心 面向切面 AOP

    摘要:下图展示了这些概念的关联方式通知切面的工作被称为通知。切面在指定的连接点被织入到目标对象中。该注解表明不仅仅是一个,还是一个切面。 在软件开发中,散布于应用中多处的功能被称为横切关注点(crosscutting concern)。通常来讲,这些横切关注点从概念上是与应用的业务逻辑相分离的(但是往往会直接嵌入到应用的业务逻辑之中)。把这些横切关注点与业务逻辑相分离正是面向切面编程(AOP...

    Winer 评论0 收藏0
  • Java设计模式综合运用(动态代理+Spring AOP)

    摘要:动态代理的核心是接口和类。以上结果说明它生成的代理类为,说明是代理。测试前提实现接口测试类使用接口方式注入代理方式必须以接口方式注入测试配置为,运行结果如下实际校验逻辑。。。。 本文也同步发布至简书,地址:https://www.jianshu.com/p/f70... AOP设计模式通常运用在日志,校验等业务场景,本文将简单介绍基于Spring的AOP代理模式的运用。 1. 代理模...

    王晗 评论0 收藏0
  • Spring入门看这一篇就够了

    摘要:甲乙交易活动不需要双方见面,避免了双方的互不信任造成交易失败的问题。这就是的核心思想。统一配置,便于修改。带参数的构造函数创建对象首先,就要提供带参数的构造函数接下来,关键是怎么配置文件了。 前言 前面已经学习了Struts2和Hibernate框架了。接下来学习的是Spring框架...本博文主要是引入Spring框架... Spring介绍 Spring诞生: 创建Spring的...

    superw 评论0 收藏0

发表评论

0条评论

since1986

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<