Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在另一个项目中运行SpringBoot,但不使用@SpringBootApplication注释作为jar库_Java_Spring_Spring Boot - Fatal编程技术网

Java 在另一个项目中运行SpringBoot,但不使用@SpringBootApplication注释作为jar库

Java 在另一个项目中运行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

我试图在SpringBoot项目中使用@autowired注释,该项目不是由@SpringBootApplication注释的main方法启动的。相反,我确实为那个spring项目创建了一个jar,并且在一个遗留项目(非spring项目)中将该jar用作外部jar。 所以,当您从main方法运行应用程序时,我无法获取ApplicationContext,并且spring管理的所有bean都为null

在没有运行main方法的情况下,是否可以将SpringBoot项目用作.jar

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很高兴我能帮上忙:)-不,我不是天才,只是擅长阅读文档;)