簡體   English   中英

如何將 spring-boot-web-application 轉換為 spring 應用程序

[英]How to convert spring-boot-web-application to spring application

我正在關注這個 spring-data-aerospike 教程並設置示例應用程序,它工作正常。

現在我想將此 spring 引導應用程序轉換為 spring 應用程序,因此我編寫了以下代碼。

    package com.aerospike.demo.simplespringbootaerospikedemo;

    import com.aerospike.demo.simplespringbootaerospikedemo.configuration.AerospikeConfiguration;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    import org.springframework.data.aerospike.core.AerospikeTemplate;

    public class TestSpringConfig {
       public static void main(String[] args) throws IOException {
           ApplicationContext ctx = new AnnotationConfigApplicationContext(AerospikeConfiguration.class);
           AerospikeTemplate template = ctx.getBean(AerospikeTemplate.class);
       }
    }
18:33:25.430 [main] WARN org.springframework.context.annotation.AnnotationConfigApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'aerospikeTemplate' defined in com.aerospike.demo.simplespringbootaerospikedemo.configuration.AerospikeConfiguration: Unsatisfied dependency expressed through method 'aerospikeTemplate' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'aerospikeClient' defined in com.aerospike.demo.simplespringbootaerospikedemo.configuration.AerospikeConfiguration: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.aerospike.client.AerospikeClient]: Factory method 'aerospikeClient' threw exception; nested exception is com.aerospike.client.AerospikeException$Connection: Error -8: Failed to connect to host(s): 
   null 0 Error -8: java.net.ConnectException: Can't assign requested address (connect failed)
   
   org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800)
   org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:541)
   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1334)
   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177)
   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564)
   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524)
   org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
   org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
   org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
   org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
   org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944)
   org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917)
   org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:582)
   org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:93)
   com.aerospike.demo.simplespringbootaerospikedemo.TestSpringConfig.main(TestSpringConfig.java:10)

所以我確實像下面這樣調整了代碼,將屬性設置為系統 -

        import com.aerospike.demo.simplespringbootaerospikedemo.configuration.AerospikeConfiguration;
        import org.springframework.context.ApplicationContext;
        import org.springframework.context.annotation.AnnotationConfigApplicationContext;
        import org.springframework.data.aerospike.core.AerospikeTemplate;
        import java.io.IOException;
        import java.io.InputStream;
        import java.util.Properties;
        import java.util.stream.Stream;
        
        public class TestSpringConfig {
          public static void main(String[] args) throws IOException {
            System.out.println(ClassLoader.getSystemResourceAsStream("application.properties").available());
        
            Properties props = new Properties();
            InputStream resourceAsStream =  ClassLoader.getSystemResourceAsStream("application.properties");
            if (resourceAsStream != null) {
              props.load(resourceAsStream);
            }
            if(props != null) {
              System.setProperties(props);
            }
            try {
              ApplicationContext ctx = new AnnotationConfigApplicationContext(AerospikeConfiguration.class);
              AerospikeTemplate template = ctx.getBean(AerospikeTemplate.class);
            } catch (Exception e) {
              StackTraceElement[] st = e.getStackTrace();
              if(st != null) {
                System.out.println("st.length = " + st.length);
              }
              Stream.of(st).forEach(System.out::println);
            } catch (ExceptionInInitializerError e) {
              System.out.println(e.getCause());
              e.getCause().printStackTrace();
            }
        
          }
        }

當我運行具有上述更改的程序時,我得到以下堆棧跟蹤e.getCause().printStackTrace() -

java.lang.NullPointerException
    at ch.qos.logback.core.CoreConstants.<clinit>(CoreConstants.java:47)
    at ch.qos.logback.classic.layout.TTLLLayout.doLayout(TTLLLayout.java:52)
    at ch.qos.logback.classic.layout.TTLLLayout.doLayout(TTLLLayout.java:23)
    at ch.qos.logback.core.encoder.LayoutWrappingEncoder.encode(LayoutWrappingEncoder.java:115)
    at ch.qos.logback.core.OutputStreamAppender.subAppend(OutputStreamAppender.java:230)
    at ch.qos.logback.core.OutputStreamAppender.append(OutputStreamAppender.java:102)
    at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84)
    at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
    at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
    at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
    at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421)
    at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:383)
    at ch.qos.logback.classic.Logger.log(Logger.java:765)
    at org.apache.commons.logging.LogAdapter$Slf4jLocationAwareLog.debug(LogAdapter.java:468)
    at org.springframework.context.support.AbstractApplicationContext.prepareRefresh(AbstractApplicationContext.java:628)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
    at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:93)
    at com.aerospike.demo.simplespringbootaerospikedemo.TestSpringConfig.main(TestSpringConfig.java:26)

我用完了可用的選項。 如何修復此錯誤。

代碼在github

我將line.separator=\n添加到了解決問題的 application.properties

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM