当前位置: 首页 > 知识库问答 >
问题:

Spring bean实例化排序

梁马鲁
2023-03-14
@Service ("bean3")   
 public class Bean3 implements ApplicationListener  { 
    public void onApplicationEvent() {  
      //load data from DB and populate cache                    
    }
     public void getCache(){
     //get data from cache
    }
@Service ("bean2")
public class Bean2 { 
@Autowired 
private Bean3 bean3;
   private void methodA(){
     bean3.getCache();
   }
}

JAR2(非Spring项目)

public class Bean1{  
Bean2 bean2 = SpringServiceLocator.getBean("bean2")
  public void methodB(){
    bean2.methodA();
   } 
}

共有1个答案

焦正德
2023-03-14

如果我没有理解错的话,您正在尝试对应用程序启动(上下文初始化)执行一些逻辑。

如果是这种情况,我建议您使用BeanPostProcessor在应用程序启动时执行任何特殊操作。

public class MyBeanPostProcessor implements BeanPostProcessor {

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName)
            throws BeansException {

        .. **perform special things**
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName)
            throws BeansException {
        ..**perform special things**
        return bean;
    }
}

不要忘记告诉Spring关于您的后处理器

<context:component-scan base-package="some.package" />
<bean class="some.package.MyBeanPostProcessor"
 类似资料:
  • 假设你有一个绘制了很多模型的场景,而大部分的模型包含的是同一组顶点数据,只不过进行的是不同的世界空间变换。想象一个充满草的场景:每根草都是一个包含几个三角形的小模型。你可能会需要绘制很多根草,最终在每帧中你可能会需要渲染上千或者上万根草。因为每一根草仅仅是由几个三角形构成,渲染几乎是瞬间完成的,但上千个渲染函数调用却会极大地影响性能。 如果我们需要渲染大量物体时,代码看起来会像这样: for(un

  • 我想制作一个AngularJS Spring MVC Hibernate MySQL应用程序。我不知道如何配置SpringBean,这样我就可以对我的存储库和实体类使用自动连接的注释。 pom.xml依赖: 实体类: 的存储库: 的控制器: 配置类:

  • 主要内容:所需步骤,示例代码在本教程将演示如何在JDBC应用程序中,从数据库表中查询数据记录,在查询语句中将使用和关键字按升序或降序对记录进行排序。在执行以下示例之前,请确保您已经准备好以下操作: 具有数据库管理员权限,以在给定模式的数据库表中查询数据记录。 要执行以下示例,需要用实际用户名和密码替换这里用户名()和密码()。 MySQL或数据库已启动并运行。 所需步骤 使用JDBC应用程序查询表中数据记录需要以下步骤: 导

  • 使用鼠标调整列表中或者网格中元素的排序。 如需了解更多有关 sortable 交互的细节,请查看 API 文档 可排序小部件(Sortable Widget)。 默认功能 在任意的 DOM 元素上启用 sortable 功能。通过鼠标点击并拖拽元素到列表中的一个新的位置,其它条目会自动调整。默认情况下,sortable 各个条目共享 draggable 属性。 <!doctype html> <

  • 本文向大家介绍C++实现位图排序实例,包括了C++实现位图排序实例的使用技巧和注意事项,需要的朋友参考一下 在《编程珠玑》一书里提到了一种算法导论里没有提到过的位图排序方法,这种排序方法是通过牺牲空间效率来追求时间效率(线性时间)以达到时间-空间折中与双赢的目的。本文以实例形式简单讲一下位图排序思想。 一、问题描述      1.输入:一个至多包含1千万个非负整数的文件      2.特征:①每个

  • 问题内容: 当用Java实例化一个对象时,真正进入内存的是什么? 是否包含父级构造函数的副本? 投射时,为什么隐藏数据成员的行为与重写方法不同? 我理解为使您正确使用这些东西而通常给出的抽象解释,但是JVM如何真正做到这一点。 问题答案: 实例化对象时,实际上仅“静态”数据以及创建该对象的对象类型的引用被“创建”。 没有方法被复制过。 创建它的类的“引用”实际上是一个指针调度表。该类可用的每个方法