我正在使用一个用纯 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)
项目结构:
