简体   繁体   English

春季自动连接依赖项注入失败

[英]spring Injection of autowired dependencies failed

I have been running my project on Java 7 (exact version: jdk1.7.0_60) but since there is a company wide policy changed to upgrade to Java 8 (version: jdk1.8.0_73) I have upgraded my local machine's JVM to jdk1.8.0_73 and configured my project on this version. 我已经在Java 7(精确版本:jdk1.7.0_60)上运行我的项目,但是由于更改了公司范围的政策以升级到Java 8(版本:jdk1.8.0_73),因此我将本地计算机的JVM升级到了jdk1。 8.0_73,并在此版本上配置了我的项目。

Following are the facts for my project: 以下是我的项目的事实:
Spring Framework Version: 4.0.3.RELEASE Spring Framework版本:4.0.3.3
Java: jdk1.8.0_73 Java:jdk1.8.0_73

Since then my application is throwing following exceptions: 从那时起,我的应用程序引发了以下异常:

Feb 16, 2016 12:15:14 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.handler.MappedInterceptor#1': Cannot create inner bean 'com.asi.core.spring.interceptor.ThrottleRequestInterceptor#0' of type [com.asi.core.spring.interceptor.ThrottleRequestInterceptor] while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.asi.core.spring.interceptor.ThrottleRequestInterceptor#0': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.asi.v1.ext.api.service.impl.ThrottleService com.asi.core.spring.interceptor.ThrottleRequestInterceptor.throttlerV1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'throttlerV1': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.springframework.web.client.RestTemplate com.asi.v1.ext.api.service.impl.ThrottleService.restTemplate; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'restTemplate' defined in class path resource [spring/application-config.xml]: Cannot create inner bean 'org.springframework.http.converter.json.MappingJackson2HttpMessageConverter#4dd016c7' of type [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter] while setting bean property 'messageConverters' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.http.converter.json.MappingJackson2HttpMessageConverter#4dd016c7' defined in class path resource [spring/application-config.xml]: Cannot create inner bean 'org.springframework.http.MediaType#3ffc5996' of type [org.springframework.http.MediaType] while setting bean property 'supportedMediaTypes' with key [0]; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.ExpressionInvocationTargetException: A problem occurred when trying to execute method 'forName' on object of type [java.lang.Class]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.handler.MappedInterceptor#1': Cannot create inner bean 'com.asi.core.spring.interceptor.ThrottleRequestInterceptor#0' of type [com.asi.core.spring.interceptor.ThrottleRequestInterceptor] while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.asi.core.spring.interceptor.ThrottleRequestInterceptor#0': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.asi.v1.ext.api.service.impl.ThrottleService com.asi.core.spring.interceptor.ThrottleRequestInterceptor.throttlerV1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'throttlerV1': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.springframework.web.client.RestTemplate com.asi.v1.ext.api.service.impl.ThrottleService.restTemplate; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'restTemplate' defined in class path resource [spring/application-config.xml]: Cannot create inner bean 'org.springframework.http.converter.json.MappingJackson2HttpMessageConverter#4dd016c7' of type [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter] while setting bean property 'messageConverters' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.http.converter.json.MappingJackson2HttpMessageConverter#4dd016c7' defined in class path resource [spring/application-config.xml]: Cannot create inner bean 'org.springframework.http.MediaType#3ffc5996' of type [org.springframework.http.MediaType] while setting bean property 'supportedMediaTypes' with key [0]; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.ExpressionInvocationTargetException: A problem occurred when trying to execute method 'forName' on object of type [java.lang.Class]
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:290)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:632)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:140)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1114)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1017)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:470)
    at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1071)
    at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:277)
    at org.springframework.web.servlet.handler.AbstractHandlerMapping.detectMappedInterceptors(AbstractHandlerMapping.java:221)
    at org.springframework.web.servlet.handler.AbstractHandlerMapping.initApplicationContext(AbstractHandlerMapping.java:196)
    at org.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:120)
    at org.springframework.web.context.support.WebApplicationObjectSupport.initApplicationContext(WebApplicationObjectSupport.java:73)
    at org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:74)
    at org.springframework.context.support.ApplicationContextAwareProcessor.invokeAwareInterfaces(ApplicationContextAwareProcessor.java:119)
    at org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:94)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:407)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1545)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
    ... 20 more

Here is my spring configurations: 这是我的弹簧配置:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:cache="http://www.springframework.org/schema/cache"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:web-services="http://www.springframework.org/schema/web-services"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
        http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.2.xsd
        http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

        <mvc:annotation-driven/>
        <web-services:annotation-driven/>
        <web-services:dynamic-wsdl id="productSearch" portTypeName="ProductSearch" 
        targetNamespace="http://www.asicentral.com/schema/product" locationUri="/productSearchService">
            <web-services:xsd location="/WEB-INF/product.xsd"/>
        </web-services:dynamic-wsdl>

        <web-services:dynamic-wsdl id="loginAPI" portTypeName="LoginAPI" 
        targetNamespace="http://www.asicentral.com/schema/login" locationUri="/loginAPI">
            <web-services:xsd location="/WEB-INF/login.xsd"/>
        </web-services:dynamic-wsdl>

        <web-services:dynamic-wsdl id="batchAPI" portTypeName="BatchAPI" 
        targetNamespace="http://www.asicentral.com/schema/batch" locationUri="/batchAPI">
            <web-services:xsd location="/WEB-INF/batch.xsd"/>
        </web-services:dynamic-wsdl>

        <context:component-scan base-package="com.asi"></context:component-scan>

        <mvc:interceptors>
            <bean class="com.asi.core.spring.interceptor.ThrottleRequestInterceptor" />
        </mvc:interceptors>

        <cache:annotation-driven />

        <import resource="v1.xml"/>
        <!-- When more versions are listed load version specific xml config -->
        <import resource="v2.xml"/>
        <import resource="v3.xml"/>

        <bean id="headerHandler" class="com.asi.v1.service.resource.util.ExternalApiHeaderHandler" />
        <bean id="ExternalApiApplicationContextProvider" class="com.asi.core.spring.config.provider.ExternalApiApplicationContextProvider"></bean>
        <bean id="environmentConfigurator" class="com.asi.ext.api.config.EnvironmentConfigurator">
            <property name="env" value="${Ext.env}"></property>
            <property name="lookupRestTemplate" ref="restTemplate"></property>
        </bean>


        <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:config-location="classpath:ehcache.xml"/> 
        <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cache-manager-ref="ehcache"/>   

        <context:property-placeholder  location="classpath:${Ext.env}-environment.properties, classpath:velocity-import*.properties, classpath:radar-version.properties" order="1"/>

             <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
                <property name="mediaTypes">
                    <map>
                        <entry key="xml" value="application/xml"/>
                        <entry key="html" value="text/html"/>
                        <entry key="json" value="application/json"/>
                    </map>
                </property>
                <property name="viewResolvers">
                    <list>
                        <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
                        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                            <property name="prefix" value="/WEB-INF/jsp/"/>
                            <property name="suffix" value=".jsp"/>
                        </bean>
                    </list>
                </property>
                <property name="defaultViews">
                    <list>
                        <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
                    </list>
                </property>
            </bean>     

            <bean id="dataSource" class = "com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
                <property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
                <property name="jdbcUrl" value="jdbc:sqlserver://${db.velocity.host}:${db.velocity.port};databaseName=${db.velocity.database}" />
                <property name="user" value="${db.velocity.username}" />
                <property name="password" value="${db.velocity.password}" /> 

                <!-- these are C3P0 properties -->
                <property name="acquireIncrement" value="1" />
                <property name="minPoolSize" value="5" />
                <property name="maxPoolSize" value="20" />
                <property name="maxIdleTime" value="300" />
            </bean>

            <bean id="hibernate3AnnotatedSessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
                <property name="dataSource" ref="dataSource" />
                <property name="annotatedClasses">
                    <list>
                        <value>com.asi.ext.api.dao.ExternalAPILogger</value>
                    </list>
                </property>
                <property name="hibernateProperties">
                    <props>
                        <prop key="hibernate.show_sql">false</prop>
                        <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
                        <prop key="hibernate.current_session_context_class">thread</prop>
                    </props>
                </property>
            </bean>

            <bean id="logDAO" class="com.asi.ext.api.dao.ExternalApiLoggerImpl">
                <property name="sessionFactory" ref="hibernate3AnnotatedSessionFactory" />
            </bean>

            <bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
                <property name="messageConverters">
                    <list>
                        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                            <property name="supportedMediaTypes">
                                <list>
                                    <bean class="org.springframework.http.MediaType">
                                        <constructor-arg value="application" />
                                        <constructor-arg value="json" />
                                        <constructor-arg value="#{T(java.nio.charset.Charset).forName('UTF-8')}"/>
                                    </bean>
                                </list>
                            </property>
                        </bean>
                        <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/> 
                        <bean class="org.springframework.http.converter.StringHttpMessageConverter ">
                            <constructor-arg value="#{T(java.nio.charset.Charset).forName('UTF-8')}"/>
                        </bean> 
                    </list>
                </property>
            </bean>
            <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
                <property name="basename">
                    <value>error</value>
                </property>
            </bean>
</beans>

whereas, the v1, v2 & v3.xml imports are for different versions of beans. 而v1,v2和v3.xml导入是针对不同版本的bean的。 For example, below is just v1.xml: 例如,下面只是v1.xml:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:cache="http://www.springframework.org/schema/cache"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:web-services="http://www.springframework.org/schema/web-services"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
        http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.2.xsd
        http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">



        <bean id="loginServiceV1" class="com.asi.v1.ext.api.service.impl.LoginServiceImpl">
            <property name="restTemplate" ref="restTemplate" />
            <property name="loginAPIUrl" value="${ws.api.login}" />
            <property name="authorizationKey" value="${ws.api.login.doorman.key}" />
            <property name="authorizationScheme" value="${ws.api.login.doorman.auth.scheme}" />
            <property name="grantTypeKey" value="${ws.api.login.doorman.auth.grant_type.key}" />
            <property name="grantTypeValue" value="${ws.api.login.doorman.auth.grant_type.value}" />
            <property name="appCodeKey" value="${ws.api.login.doorman.auth.app_code.key}" />
            <property name="appCodeValue" value="${ws.api.login.doorman.auth.app_code.value}" />
            <property name="appVersionKey" value="${ws.api.login.doorman.auth.app_version.key}" />
            <property name="appVersionValue" value="${ws.api.login.doorman.auth.app_version.value}" />
        </bean>

        <bean id="batchServiceV1" class="com.asi.v1.ext.api.service.impl.BatchServiceImpl">
            <property name="restTemplate" ref="restTemplate" />
            <property name="createBatchURL" value="${ws.api.batch.create}" />
            <property name="finalizeBatchURL" value="${ws.api.batch.finalize}" />
        </bean>

        <bean id="productServiceClientV1" class="com.asi.v1.service.product.client.ProductClient">
            <property name="productSearchUrl" value="${ws.api.product.import}" />
            <property name="scheme" value="${ws.api.authorization.scheme}" /> 
        </bean>

        <bean id="throttlerV1" class="com.asi.v1.ext.api.service.impl.ThrottleService">
            <property name="radarLoginService" value="${ws.api.throttle.radar.validate.token.url}" />
            <property name="throttleRequest" value="${ws.api.throttle.required}" />
            <property name="maximumRequests" value="${ws.api.throttle.maximum.requests}" />
            <property name="maximumWaitCalendarField" value="${ws.api.throttle.wait.time.field}" />
            <property name="maximumWaitHours" value="${ws.api.throttle.wait.time}" />
            <property name="restTemplate" ref="restTemplate"/>
        </bean>


       <!--  <bean id="loginService" class="com.asi.v1.service.resource.LoginService">
            <property name="loginAPIUrl" value="${ws.api.login}"></property>
        </bean> -->
        <!-- <bean id="lookupDataStore" class="com.asi.v1.ext.api.product.transformers.ProductDataStore">
            <property name="lookupRestTemplate" ref="restTemplate"/>
             <property name="lookupConverter" ref="jsonlookupConvertor" />      
        </bean>
        <bean id="jsonlookupConvertor" class="com.asi.v1.ext.api.util.JsonToLookupTableConverter">
            <property name="lookupRestTemplate" ref="restTemplate"/>        
        </bean> -->
        <bean id="lookupValuesClientV1" class="com.asi.v1.service.product.client.LookupValuesClient">
            <property name="lookupRestTemplate" ref="restTemplate"/>
             <property name="lookupColorURL" value="${lookup.color.url}"></property> 
             <property name="lookupSizeURL" value="${lookup.sizes.url}"></property> 
             <property name="lookupMaterialURL" value="${lookup.material.url}"></property> 
             <property name="lookupcriteriaAttributeURL" value="${lookup.sizes.criteria.url}"></property>
             <property name="originLookupURL" value="${lookup.orgin.url}"></property> 
             <property name="lookupCategoryURL" value="${lookup.product.categories.url}"></property>
             <property name="lookupArtworkURL" value="${lookup.imprint.artwork.url}"></property>
             <property name="lookupImprintURL" value="${lookup.imprint.url}"></property>        
             <property name="lookupTradeNameURL" value="${lookup.product.trade.names.url}"></property>    
             <property name="lookupShapeURL" value="${lookup.product.shapes.url}"></property>  
              <property name="lookupPackageURL" value="${lookup.packaging.url}"></property>  

        </bean>

         <bean id="lookupParserV1" class="com.asi.v1.ext.api.integration.lookup.parser.LookupParser">
           <!-- <property name="lookupClient" ref="lookupValuesClient"/>  -->
           <!-- <property name="imprintParser" ref="imprintMethodParser"/>      -->   
        </bean> 
         <bean id="criteriasParser" class="com.asi.v1.ext.api.integration.lookup.parser.CriteriaSetParser">
            <!--  <property name="productLookupParser" ref="lookupParser"/> -->   
        </bean>
        <bean id="productConfigurationParser" class="com.asi.v1.ext.api.integration.lookup.parser.ProductConfigurationsParser">
             <property name="productLookupParser" ref="lookupParser"/>   
        </bean>

        <bean id="configurationParserV1" class="com.asi.v1.ext.api.integration.lookup.parser.ConfigurationsParser">
             <!-- <property name="productLookupParser" ref="lookupParser"/>   --> 
        </bean>
        <bean id="imprintMethodParserV1" class="com.asi.v1.ext.api.integration.lookup.parser.ImprintParser">
      <!--   <property name="criteriaLookupParser" ref="criteriasParser"/> 
         <property name="lookupsParser" ref="lookupParser"/> -->  
        </bean>
        <bean id="productServiceV1" class="com.asi.v1.ext.api.service.impl.ProductServiceImpl">
        </bean>
        <bean id="productRepoV1" class="com.asi.v1.core.repo.product.ProductRepo">
            <!--  <property name="productClient" ref="productServiceClient"/> --> 
        <!--    <property name="productConfiguration" ref="productConfigurationParser"/> -->
        <!--    <property name="configurationParser" ref="configurationParser"/> -->
            <!-- <property name="imprintParser" ref="imprintMethodParser"/> -->
            <!--  <property name="productRestTemplate" ref="restTemplate"/> -->
             <property name="productImportURL" value="${ws.api.product.import}"></property> 
             <property name="batchProcessingURL" value="${lookup.batch.processing}"></property> 
            <!--  <property name="lookupDataStore" ref="lookupDataStore" /> -->
        <!--     <property name="lookupsParser" ref="lookupParser"/>     -->
        </bean>
        <!-- To enable @RequestMapping process on type level and method level -->
        <bean id="productDetailV1" class="com.asi.v1.service.product.client.vo.ProductDetail"/>    

</beans>

This issue was never there until i was using Java 7 version when I switched it to Java 8 then I am seeing this exception. 直到我将Java 7版本切换到Java 8时,才出现此问题,然后看到此异常。 Due to limitation of this editor I cannot paste the entire exception log. 由于此编辑器的限制,我无法粘贴整个异常日志。 Will paste in comments if you need. 如果需要,将粘贴评论。

Can anyone help me with this issue? 谁能帮我解决这个问题?

Try value="java.nio.charset.StandardCharsets.UTF_8" instead of value="#{T(java.nio.charset.Charset).forName('UTF-8')}" . 尝试使用value="java.nio.charset.StandardCharsets.UTF_8"代替value="#{T(java.nio.charset.Charset).forName('UTF-8')}" You would also need to name your parameters otherwise Spring won't be able to instantiate the MediaType since multiple constructors with 3 parameters exist. 您还需要命名参数,否则Spring将无法实例化MediaType,因为存在带有3个参数的多个构造函数。

You can try the following code : 您可以尝试以下代码:

<bean class="org.springframework.http.MediaType" >
        <constructor-arg name="type" value="application" />
        <constructor-arg  name="subtype" value="json" />
        <constructor-arg name="charset" value="#{T(java.nio.charset.StandardCharsets).UTF_8}"/>
    </bean>

Thank you @louis-f for pointing out the issue and providing the solution. 感谢@ louis-f指出问题并提供解决方案。 I tried to resolve this issue with the above suggestions but it was still giving the same exceptions. 我尝试通过上述建议解决此问题,但仍然给出了相同的例外。 Then I tried following and it resolves my issue: 然后,我尝试了以下操作,它解决了我的问题:

        <bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
            <property name="messageConverters">
                <list>
                    <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                        <property name="supportedMediaTypes">
                            <list>
                                <bean class="org.springframework.http.MediaType">
                                    <constructor-arg name="type" value="application"/>
                                    <constructor-arg name="subtype" value="json"/>
                                    <constructor-arg name="charset" value="UTF-8" />
                                </bean>
                            </list>
                        </property>
                    </bean>
                    <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/> 
                    <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                        <constructor-arg name="defaultCharset" value="UTF-8" />
                    </bean> 
                </list>
            </property>
        </bean>

So, what I actually did is just changed the charset constructor argument to string value ie "UTF-8" and it did worked for me. 因此,我实际上所做的只是将charset构造函数参数更改为字符串值,即“ UTF-8”,它确实为我工作。 On the application debugging - I checked the object restTemplate in inspect element and now I have everything coming properly for the messageConverters list. 在应用程序调试中-我检查了inspect元素中的对象restTemplate,现在对于messageConverters列表,一切正常。

Thanks again. 再次感谢。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM