-1

我正在使用一个用纯 java 编写的代码的 jar。所以这个 jar 中没有创建任何 bean。现在我创建了一个 Spring Boot 应用程序,我在我的应用程序中使用了这个 jar。我正在尝试创建 bean 并自动装配外部 jar 的类。以下是我正在创建 bean 的类:

@Configuration
public class AppConfig {

@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}

@Bean
public ICommonDataService iCommonDataService() {
    ICommonDataService iCommonDataService = new CommonDataService();
    ((CommonDataService) iCommonDataService).setCommonDAO(ICommonDAO());
    return iCommonDataService;
}

@Bean
public ICommonDAO ICommonDAO() {
    return new CommonDAO();
}

}

我也在尝试为 Spring Boot 的 RestTemplate 类创建 bean。

但是当我尝试使用这些 bean 时,我得到了空指针异常。

以下是我使用这些 bean 的应用程序:

@Service
public class AuditServiceClientImpl implements AuditServiceClient {

@Autowired
private ICommonDataService iCommonDataService;

@Autowired
private RestTemplate restTemplate;


public AuditServiceResponse postAsyncRequestData(AuditServiceLog auditServiceLog) throws Exception {
    return post(AuditServiceConstants.ASYNC_REQUEST_DATA, auditServiceLog, false);
}

public AuditServiceResponse postSyncRequestData(AuditServiceLog auditServiceLog) throws Exception {
    return post(AuditServiceConstants.SYNC_REQUEST_DATA, auditServiceLog, true);
}

public AuditServiceResponse postAsyncResponseData(AuditServiceLog auditServiceLog) throws Exception {
    return post(AuditServiceConstants.ASYNC_RESPONSE_DATA, auditServiceLog, false);
}

public AuditServiceResponse postSyncResponseData(AuditServiceLog auditServiceLog) throws Exception {
    return post(AuditServiceConstants.SYNC_RESPONSE_DATA, auditServiceLog, true);
}

private AuditServiceResponse post(String endpoint, AuditServiceLog auditServiceLog, boolean synchronous) throws Exception {
    String methodName = "AuditServiceLogWriter";
    AuditServiceResponse auditServiceResponse = null;
    String baseUrl = iCommonDataService.getEnvValue(0, 0, AuditServiceConstants.AUDIT_SERVICE_BASE_URL);
    String sslKeystore = iCommonDataService.getEnvValue(0, 0, AuditServiceConstants.SSL_KEYSTORE);
    String sslKeystorePassword = iCommonDataService.getEnvValue(0, 0, AuditServiceConstants.SSL_KEYSTORE_PASSWORD);
    String sslKeystoreType = iCommonDataService.getEnvValue(0, 0, AuditServiceConstants.SSL_KEYSTORE_TYPE);

    MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
    headers.add("X-AGS-Client-Name", "test");
    headers.add("X-AGS-Group-Name", "test");
    headers.add("Content-Type", "application/json");

    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
    HttpEntity<AuditServiceLog> request = new HttpEntity<AuditServiceLog>(auditServiceLog, headers);

    try {
        auditServiceResponse = restTemplate.postForObject(baseUrl + endpoint, request, AuditServiceResponse.class);
    } catch (Exception e) {
        CDISIServiceLogging.log(CDISIServiceLogging.INFO, getClass().getName(), methodName, e.getMessage(),
                "Seems there is some error while posting the log to audit servivce");
        if (synchronous)
            throw new Exception(e);

    }
    return auditServiceResponse;
}

public ICommonDataService getICommonDataService() {
    return iCommonDataService;
}

public void setICommonDataService(ICommonDataService iCommonDataService) {
    this.iCommonDataService = iCommonDataService;
}

public RestTemplate getRestTemplate() {
    return restTemplate;
}

public void setRestTemplate(RestTemplate restTemplate) {
    this.restTemplate = restTemplate;
}
}

有人可以帮忙吗,我在这里找不到问题。任何帮助表示赞赏。

主类:

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

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

}

堆栈跟踪:

java.lang.NullPointerException
    at com.visa.audit.client.services.impl.AuditServiceClientImpl.post(AuditServiceClientImpl.java:46)
    at com.visa.audit.client.services.impl.AuditServiceClientImpl.postAsyncRequestData(AuditServiceClientImpl.java:28)
    at com.visa.audit.client.controller.Test.index(Test.java:32)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

项目结构:

在此处输入图像描述

4

1 回答 1

0

尝试在 Application 类中添加以下代码

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(AppConfig.class);
}
于 2019-08-04T09:51:16.630 回答