在spring控制器中调用服务方法的最佳实践是什么?

时间:2014-08-28 13:42:32

标签: java spring spring-mvc

我创建了一个spring-config.xml文件。在该文件中,我已经为服务类和DAO类创建了所有bean。现在我想在我的Spring控制器中调用bean。我已经知道的方法是

ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
SeviceClassName objService = (SeviceClassName) context.getBean("BeanName");

但问题是我把文件放在WEB-INF文件夹中。 解决我用过的问题

 ApplicationContext context = new FileSystemXmlApplicationContext("C:/Users/xyz/Desktop/HelloWeb/WebContent/WEB-INF/spring-config.xml"); 

它工作正常。 但它似乎不是一个好习惯。 然后我尝试通过spring-config.xml初始化DispatcherServlet。

<servlet>
    <servlet-name>HelloWeb</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <init-param>
                <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-config.xml</param-value>
      </init-param>
<load-on-startup>1</load-on-startup>

 但我不知道如何在控制器中调用bean。 我试着在我的弹簧控制器中使用@Autowired。但它不起作用。
每当我尝试这个(@Autowired)并尝试在eclipse中执行相同应用程序的jsp文件时,它会显示所请求的资源不可用&#34;。
任何人都可以建议我如何解决问题 或
任何人都可以建议我一个更好的方法,我可以调用我在spring-config.xml中创建的服务类bean 要么 在spring controller中调用服务类方法的任何其他方法。

我正在使用spring 3.0。 我在Eclipse中创建了一个Dynamic Web Project。在我的WEB-INF文件夹中,我放了4个xml文件 --web.xml,spring-config.xml,HelloWeb-servlet.xml。 我的HelloWeb-servlet包含

 <mvc:annotation-driven />
  <context:annotation-config />
   <context:component-scan base-package="com.tutorialspoint" />

 <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
 <property name="mediaTypes">
      <map>
       <entry key="html" value="text/html"/>
     <entry key="json" value="application/json"/>
   </map>
 </property>
 </bean>

  <bean id="jacksonMessageConverter"      class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
  <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
  <property name="messageConverters">
      <list>
         <ref bean="jacksonMessageConverter"/>
      </list>
   </property>
  </bean>

我的spring-config包含所有bean配置。在spring控制器中,我只是调用服务类,该服务方法是在我已经在spring-config.xml中创建bean的服务类中编写的。

1 个答案:

答案 0 :(得分:0)

检查Stackoverflow answer。它可能是一个比你想要的更详细的答案,但它肯定会帮助你完成基础知识。

本质上,是通过Spring上下文加载器侦听器建立的根上下文,以及通过相应的servlet参数建立的servlet上下文。两者的param名称都是contextConfigLocation(前者是监听器上下文参数,后者是servlet init-param)。

@Autowired@Inject可用于在控制器中注入服务bean。确保使用@Service@Resource注释服务bean,以便在组件扫描期间拾取bean。