java - 如何将 bean 注入(inject) @Controller 类

标签 java spring spring-mvc

我对 Spring 有点陌生(使用 3.0),所以我希望有一个简单的答案。如果我有一个使用 @Controller@RequestMapping 注释的 Controller ,并且我想通过依赖注入(inject)设置属性,我该怎么做呢? Controller 类不必出现在 Spring 配置文件中,因为它会因为 @Controller 注释而自动获取。

示例 Controller 类:

package gov.wi.dnr.wh.web.spring;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class RehabHomeController {
  private String xxx;

  @RequestMapping(value="/rehab/home", method = RequestMethod.GET)
  public String get() {
    return "whdb.rehabhome";
  }

  public String getXxx() {
    return xxx;
  }

  public void setXxx(String xxx) {
    this.xxx = xxx;
  }
}

Spring 配置:

<?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:mvc="http://www.springframework.org/schema/mvc"
        xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
                            http://www.springframework.org/schema/context 
                      http://www.springframework.org/schema/context/spring-context-3.0.xsd">

  <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
  </bean>

  <context:component-scan base-package="gov.wi.dnr.wh.web.spring"/>
  <mvc:annotation-driven />

</beans>

这按原样工作,但我想注入(inject)“xxx”属性。我该怎么做呢?

最佳答案

@Autowired
private YourService yourServiceBean;

(你也可以使用@Inject)

当然,YourService 必须声明为 bean - 在 applicationContext.xml 中或通过注释(例如 @Service )

如果要注入(inject)字符串属性,可以使用@Value注解:

@Value("${propName}")
private String str;

(为此,您需要一个 PropertyPlaceholderConfigurer)

关于java - 如何将 bean 注入(inject) @Controller 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3735762/

相关文章:

java - 如何使用这样的自定义选项卡制作 Viewpager?

java - 带有 NBAandroid 的 NetBeans - 找不到符号 setContentView(R.layout.main);

java - Spring 中的 ServerSocket 范围?

java - Spring:如何使用 CrudRepository 默认返回具有实体连接引用的所有对象

java - @RequestBody 没有按预期工作

spring - 启用 HiddenHttpMethodFilter 后使用 Spring MVC 3.0.2 上传多个文件

java - 搬运装置旋转

java - 从jar文件中获取资源

java - (关于 'final'的问题和)如何从JSTL中的Spring ModelMap访问 'myModels'的列表对象内容?

java - 对于没有 "id"属性的 bean,Spring bean 创建失败