Java 在另一个项目中运行SpringBoot,但不使用@SpringBootApplication注释作为jar库
我试图在SpringBoot项目中使用@autowired注释,该项目不是由@SpringBootApplication注释的main方法启动的。相反,我确实为那个spring项目创建了一个jar,并且在一个遗留项目(非spring项目)中将该jar用作外部jar。 所以,当您从main方法运行应用程序时,我无法获取ApplicationContext,并且spring管理的所有bean都为null 在没有运行main方法的情况下,是否可以将SpringBoot项目用作.jarJava 在另一个项目中运行SpringBoot,但不使用@SpringBootApplication注释作为jar库,java,spring,spring-boot,Java,Spring,Spring Boot,我试图在SpringBoot项目中使用@autowired注释,该项目不是由@SpringBootApplication注释的main方法启动的。相反,我确实为那个spring项目创建了一个jar,并且在一个遗留项目(非spring项目)中将该jar用作外部jar。 所以,当您从main方法运行应用程序时,我无法获取ApplicationContext,并且spring管理的所有bean都为null 在没有运行main方法的情况下,是否可以将SpringBoot项目用作.jar public c
public class RetrieveSubscriberType {
public RetrieveSubscriberType() {
ApplicationContext appCtx = ApplicationContextUtils
.getApplicationContext();
this.subscriber = (SubscriberDAOImpl)appCtx.getBean("subscriber");
}
appCtx始终为空
@Configuration
public class ApplicationContextUtils implements ApplicationContextAware {
private static ApplicationContext ctx;
@Override
public void setApplicationContext(ApplicationContext appContext)
throws BeansException {
ctx = appContext;
}
public static ApplicationContext getApplicationContext() {
return ctx;
}
}
applicationContext方法集合applicationContext不从提供的
您可能需要通过注释ConfigApplicationContext
@Configuration
类通常使用注释ConfigApplicationContext
或其支持web的变体注释ConfigWebApplicationContext
进行引导
前者的一个简单示例如下:
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(AppConfig.class);
ctx.refresh();
MyBean myBean = ctx.getBean(MyBean.class);
// use myBean ...
@Autowired
注释是spring框架的一部分,而不是SpringBoot(如您所知,SpringBoot使用它)——在旧版应用程序中使用它不应该有问题。请参阅ok,但我没有Beans.xml文件,并且我的@Configuration注释类没有被调用,因为我没有从main方法运行它。只是一个jar,我试图用自动连接属性实例化一个类,但没有具体说明,我猜你必须做什么。你的问题是:可能吗?答案(和链接)表明是的。@Configuration
注释需要注册到上下文中,请参见添加一个示例,说明如何尝试在旧版应用程序中获取ApplicationContext
。@Aivaras我没有尝试在旧版应用程序中获取ApplicationContext。但实际上在春季项目中。你真是个天才@user353089很高兴我能帮上忙:)-不,我不是天才,只是擅长阅读文档;)