`

如何静态调用Spring容器的bean

 
阅读更多

 

    背景:

      最近工作中发现有个用法很有意思,如下代码:静态方法中引用Spring bean disconf的对象,这样就不用在B bean的用到disconf的地方声明然后注入这个bean了。相当于引入了第三个bean来实现解耦,这样用起来就很方便,直接调用静态方法即可。

      

    代码:

    

class A {
    private static DisconfService disconf;

    public static String getXProperty() {
        return disconf.xMethod();
    }
}

Class B {
    public void method() {
        A.getXProperty();
    }
}

    如何保证disconf 这个bean不为空呢?

 

    技术实现:

      1.  xml配置

    

class A {
    private static DisconfService disconf;

    public static String getXProperty() {
        return disconf.xMethod();
    }

    // 增加set方法
    public void setDisconf(DisconfService disconf) {
        A.disconf = disconf;
    }
}

 

<bean id="xx" class="A" >
   <p:disconf ref=disconf />
</bean>

 

     2. A实现InitianBean

     

class A implements InitialBean{

    @AutoWired
    private DisconfService disconfBean;

    private static DisconfService disconf;

    public void afterPropertiesSet() {
        A.disconf=disconfBean;
    }

    public static String getXProperty() {
        return disconf.xMethod();
    }
}

 

 

 

0
0
分享到:
评论

相关推荐

    实例化Spring bean的两种工厂方法

    这里,`MyStaticFactory`类需要有一个静态的`createBean`方法,Spring容器会调用这个静态方法来实例化`exampleBean`。 3. **工厂方法的优点与注意事项** - **优点:**工厂方法提供了更大的灵活性,可以返回任何...

    Spring Bean重复执行两次(实例被构造两次)问题分析

    在Spring容器初始化时,它会根据配置加载Bean的定义,并根据需要创建Bean实例。Bean的生命周期大致分为以下几个阶段:构造、初始化、正常使用、销毁。如果一个Bean被创建了两次,那么可能是在构造或初始化阶段出现了...

    Spring bean 管理

    Spring容器中最为常见的组件是Bean,它是Spring容器管理的对象实例。 在Spring中,Bean的管理包含多个方面:创建Bean实例、配置Bean属性、控制Bean的生命周期以及Bean作用域的定义。接下来将详细解释这些知识点。 ...

    spring运行过程中动态注册bean

    然后,通过调用`getBeanFactory()`方法,我们可以得到`DefaultListableBeanFactory`类型的`BeanFactory`实例,这个实例是Spring容器内部管理Bean的真正场所。 ```java ConfigurableApplicationContext ...

    17. Spring Boot普通类调用bean【从零开始学Spring Boot】

    Spring Boot普通类调用bean【从零开始学Spring Boot】”旨在指导初学者如何在非Spring管理的类中访问和使用Spring容器中的bean。下面将详细讲解这个主题。 首先,了解Spring Boot的基础概念是必要的。Spring Boot...

    Spring项目bean实例化代码

    这里,`exampleFactory`是工厂Bean,`createInstance`是静态工厂方法,Spring会调用这个方法来创建Bean。 **实例工厂方法实例化**与静态工厂类似,但工厂方法是实例方法,需要先创建工厂Bean,然后在其上调用工厂...

    Spring Bean生命周期.pdf

    接着,Spring容器会调用实现了BeanPostProcessor接口的Bean的postProcessBeforeInitialization和postProcessAfterInitialization方法,以在初始化前后进行扩展。之后,如果Bean实现了InitializingBean接口,则调用...

    获取Spring容器

    一旦`ApplicationContextUtil`被配置并初始化,就可以通过调用其静态方法`getBean`来获取任何注册在Spring容器中的Bean。例如,可以通过以下代码获取`VerifyBankTransRecvService`服务: ```java ...

    Java中Spring获取bean方法小结

    - **BeanFactory** 是Spring中最基础的IoC容器,负责管理和实例化Bean。它允许开发者定义Bean的生命周期和依赖关系,提供了低级别的配置选项。 - **ApplicationContext** 是BeanFactory的扩展,增加了更多面向应用...

    spring static静态方法里面注入bean空指针解决

    然而,静态方法和静态变量不参与Spring的生命周期管理,因此,尝试在静态字段或静态方法中直接使用`@Autowired`注入Bean会导致空指针异常,因为Spring容器不会初始化静态成员。 **解决方法1:使用@Component和非...

    静态方法中调用Spring注入过程解析

    静态方法中调用Spring注入过程解析 静态方法中调用Spring注入过程解析是 Spring 框架中一个重要的知识点。本文将详细介绍静态方法中调用Spring注入过程解析的实现机制和关键技术要点。 Spring_IOC_容器 在Spring...

    Spring bean生命周期demo

    当Spring容器关闭时,或者如果Bean声明了`destroy-method`,则会调用销毁回调方法。这是清理资源和执行关闭操作的最佳时机。同样,`DisposableBean`接口的`destroy()`方法也可以用于此目的。 9. **Bean的销毁** ...

    4 后台使用Spring中的Bean质量评估193210111党涛1

    Spring将调用这个静态方法来获取Bean实例,然后进行后续的初始化和依赖注入。 第四种方式是使用实例工厂方法。与静态工厂方法类似,但需要一个工厂实例。`factory-bean`属性用于指定工厂Bean的ID,`factory-method`...

    几种spring获取bean的方法.txt

    Spring容器会自动调用该接口的`setBeanFactory(BeanFactory beanFactory)`方法,将整个`BeanFactory`实例注入到实现了该接口的类中。这样就可以通过`BeanFactory`获取任意的Bean实例。 **示例代码:** ```java ...

    Spring管理的Bean的生命周期

    3. **@PostConstruct注解**:在Java配置中,可以使用这个注解标记初始化方法,Spring容器会在Bean实例化后调用。 4. **InitializingBean接口**:如果Bean实现了此接口,那么`afterPropertiesSet()`方法会被自动调用...

    Web项目中获取SpringBean与在非Spring组件中获取SpringBean.pdf

    总的来说,获取非Spring管理组件中的SpringBean主要有两种方式:一是通过实现`ApplicationContextAware`接口并存储ApplicationContext,二是使用注解和静态内部类来注入BeanFactory。这两种方法都是Spring框架提供的...

    SSH笔记-静态/实例工厂方法配置bean

    这些方法为Spring容器提供了更灵活的Bean实例化策略,让我们深入了解一下这两种方法。 首先,静态工厂方法配置Bean是通过调用类中静态工厂方法来创建对象的方式。这种方式下,Spring并不直接实例化目标类,而是调用...

    spring 中特殊bean用法

    在Spring框架中,Bean是核心概念,它代表了应用程序中的对象,这些对象由Spring容器管理其生命周期和依赖关系。特殊Bean用法主要涉及Spring提供的多种高级特性,包括但不限于工厂方法、 prototype scope、AOP代理、...

    详解Spring中bean实例化的三种方式

    Spring会调用指定的静态方法生成Bean实例。尽管这种方式可行,但由于涉及静态方法,可能导致测试和依赖注入复杂,所以使用较少。 3. 实例工厂创建: 相比静态工厂,实例工厂创建更为灵活,但同时也更复杂。在这种...

    详解Spring中Bean的加载的方法

    6. **生命周期回调**:最后,Spring会调用Bean的初始化方法(如果有的话),执行后处理器(BeanPostProcessor)的回调,完成Bean的初始化过程。 在这个过程中,Spring使用了`BeanDefinition`对象来存储关于Bean的...

Global site tag (gtag.js) - Google Analytics