spring启动初始值设定项未调用applicationcontextaware类

suzh9iv8  于 2021-09-29  发布在  Java
关注(0)|答案(0)|浏览(242)

我有一个外部jar,需要访问父spring boot应用程序的一个bean,因此我在外部jar中编写了一个实现ApplicationContextAware接口的类,添加到父应用程序的依赖项中,并在spring boot主应用程序组件扫描中提供包名,例如:@componentscan(“hello”),但是当spring启动应用程序启动时,外部jar内部的applicationcontextaware类没有被调用,有人能告诉我问题出在哪里吗

package hello;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

@Component
public class ApplicationContextProvider implements ApplicationContextAware {

    private ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        System.out.println("Application context aware is inoked");
        this.applicationContext = applicationContext;
    } 

 public ApplicationContext getContext() {
        return applicationContext;
    }

}

上面的代码驻留在我的外部jar文件中,我从我的spring boot应用程序将其作为依赖项添加到spring boot应用程序中。我的主要方法如下所示

@SpringBootApplication()
@ComponentScan({"hello"})
public class MainApplication implements CommandLineRunner{

    @Autowired
    private ApplicationContext applicationContext;

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {

        String[] beans = applicationContext.getBeanDefinitionNames();
        for (String bean : beans) {
           System.out.println(bean);
        }
    }
}

在上面的spring boot应用程序中,我可以查看应用程序启动时打印的所有加载bean,但不会调用dependency jar中的applicationcontextaware类。这两个类都在不同的包下

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题