如何将这些类注入我的Spring控制器类?

时间:2015-08-20 11:48:01

标签: java spring spring-mvc annotations spring-annotations

我在Spring中很新,我对如何将一些类注入控制器类有一些疑问。

在我的项目中,我有 HomeController 类:

@Controller
public class HomeController {

    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
    @Autowired
    private MessageSource  messageSource;
    @Autowired
    private Environment env;

    .....................................................
    .....................................................
    .....................................................
}

我的疑问与2个 MessageSource messageSource 环境环境类有关。

正如您所看到的,这些类是由 @Autowired 注释注入的。

问题是我没有将bean定义到我的这些类的XML配置中。为什么要正确注射?这些bean的定义在哪里?

TNX

3 个答案:

答案 0 :(得分:1)

Spring映射可以使用XMLannotations完成。

在您的情况下,如果未定义XML,则MessageSourceEnvironment类应由Spring annotations @Service@Resource @Component映射}:

@Component

  

表示带注释的类 a"组件"。使用基于注释的配置和类路径扫描时,此类被视为自动检测候选

<强> @Autowired

  

@Autowired注释将尝试在弹簧上下文中找到类型为Foo的bean ,然后注入相同的内容。

@Resource

  

与此类似的是@Resource注释,它将尝试查找名为&#34; foo&#34;的bean。总而言之,按类型@Autowired导线和@Resource导线按名称。

答案 1 :(得分:1)

自动发现bean基于以下规则:

  

1)在spring-config.xml中使用context:annotation-config标签   春天使用注释
  2)使用上下文:组件扫描标签   spring-config.xml并告诉Spring要查找的包   自动发现豆类   3)使用@Component注释来标记类   作为一个Spring自动发现的bean

如果使用@Component annotation,则无需在spring-config.xml中声明bean声明

答案 2 :(得分:0)

EnvironmentMessageSource都与Spring Framework的内部工作密切相关。

环境是应用程序上下文的一部分,可用于自动装配。

ApplicationContext接口扩展了MessageSource接口,即使您尚未定义自己的消息源bean,也可以作为消息源进行自动装配。 (如果您定义自己的消息源,则应用程序上下文将为delegate to that