我有一个外部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类。这两个类都在不同的包下
暂无答案!
目前还没有任何答案,快来回答吧!