2015-10-20 46 views
1

这是一个后续行动this问题,并使用this作为参考。我在注射这些春豆时做错了什么?使用自动装配

这是我的改性spring-context.xml

<bean id="sampleApacheConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory" lazy-init="true"> 
    <property name="brokerURL" value="tcp://localhost:61616"/> 
    <property name="userName" value=“kodeseeker"/> 
    <property name="password" value=“mypassword"/> 

</bean> 

<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> 
     <constructor-arg ref="sampleApacheConnectionFactory" /> 
    </bean> 

    <!-- Default Destination Queue Definition--> 
    <bean id="defaultDestination" class="org.apache.activemq.command.ActiveMQQueue"> 
     <constructor-arg index="0" value="test.Foo"/> 
    </bean> 

    <!-- JmsTemplate Definition --> 
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 
     <property name="connectionFactory" ref="connectionFactory" /> 
     <property name="defaultDestination" ref="defaultDestination" /> 
    </bean> 

    <!-- Message Sender Definition --> 
    <bean id="messageSender" class="com.mypackage.Publisher2"> 
    </bean> 

<!-- Message Receiver Definition --> 
    <bean id="messageReceiver" class="com.mypackage.Listener"> 

    </bean> 
     <bean class="org.springframework.jms.listener.SimpleMessageListenerContainer"> 
     <property name="connectionFactory" ref="connectionFactory" /> 
     <property name="destinationName" value="test.Foo" /> 
     <property name="messageListener" ref="messageReceiver" /> 
    </bean> 
<context:component-scan base-package="com.mypackage" /> 
    <bean name=“publisher" class=“com.mypackage.Publisher2"/> 
     <bean name="updateHandler" class="com.mypackage.UpdateHandlerImpl”/>  

</beans> 

这首先接收请求传入类。

package com.mypackage 

@ComponentScan 
@Controller 
@Path("/") 
public class BaseApiImpl { 

….. 
    @Context 
    HttpHeaders headers; 
    @Autowired 
    UpdateHandlerImpl updateHandler; 


    @PUT 
    @Path("v1/“) 
    @Consumes("application/json") 
    @Produces({ "application/json" }) 
    public PutTransactionsResponse updateTransactions(
      UpdateTransactionsRequest entity) 
      throws Exception { 
    // @formatter:on 
     LOGGER.entry(); 
     try { 
     //updateHandler is always Null! 
       return updateHandler.handle(new UpdateTransactionsMessage(headers.getRequestHeaders(), entity)); 

     } catch (Exception e) { 
      LOGGER.catching(e); 
        } finally { 
      LOGGER.exit(); 
     } 

    } 

然而,尽管与@Controller注释类和声明的背景下,文件中的豆类。我发现updateHandler始终为空。我在这里做错了什么?

+0

你的更新处理豆里面这是其他标签里面......也许这就是问题 – Nadir

+0

是您的上下文是搞砸了。你应该格式化它。 – Stefan

+0

你的bean是一个JAX-RS bean,不是一个spring bean。你将有两个实例一个spring管理和一个jax-rs bean。对正在使用的框架使用正确的集成,或使用Spring MVC来公开您的休息端点。另外'@ ComponentScan'不会在这个只对'@ Configuration'类有用的类上工作。 –

回答

0

创建一个Jersey Config类,并将其注册为bean,并删除@Component@ComponentScan上的BaseApiImpl类,希望它能工作,在我的情况下我使用的是Spring引导。

import org.glassfish.jersey.server.ResourceConfig; 
import javax.ws.rs.ApplicationPath; 

@ApplicationPath(value = "/<contextpath>") 
public class JerseyConfig extends ResourceConfig{ 

    public JerseyConfig() { 
    packages(true, "<your @Path classes package>"); 
    } 
}