java - 我在注入(inject)这些 Spring Bean 时做错了什么?使用 Autowiring

标签 java spring spring-mvc mule spring-annotations

这是 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 注释该类并在上下文文件中声明 beans。我发现 updateHandler 始终为空。我到底做错了什么?

最佳答案

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

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>");
  }
}

关于java - 我在注入(inject)这些 Spring Bean 时做错了什么?使用 Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33229540/

相关文章:

java - 如何使对数组的写入对其他线程可见

java - 输入多个数据集(输入)然后打印

java - 如何使用 Tomcat 打开 Java Spring 项目中的文件

java - Spring 3 MVC - 没有 Controller 的 JSP 页面的 View 解析器

java - Spring MVC Controller 无法解析 URI

java - 两个骰子 throw 游戏问题

java - 解密时得到 "EVP_DecryptFinal_ex:wrong final block length"

spring - Junit测试启动spring上下文

java - 带有 Java 8 Streams 分离对象的 Spring Data JPA 存储库?

java - Maven - 无法执行目标 org.apache.maven.plugins :maven-clean-plugin:2. 4.1:clean