繁体   English   中英

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

[英]How are injected these classes into my Spring controller class?

我在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 messageSourceEnvironment env类有关。

如您所见,这些类是通过@Autowired注释注入的。

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

TNX

Spring映射可以使用XML注释来完成。

在您的情况下,如果未定义XML,则应使用Spring批注(@Component @Service@Resource映射您的MessageSourceEnvironment类:

@Component

指示带注释的类是 “组件”。 当使用基于注释的配置和类路径扫描时,此类会被视为自动检测的候选

@Autowired

@Autowired注解将尝试在春季上下文中找到Foo类型的bean,然后将其注入。

@Resource

与此类似的是@Resource批注,它将尝试查找名称为“ foo”的bean。 总而言之,@ Autowired导线按类型,@ Resource导线按名称。

Bean的自动发现基于以下规则:

1)在spring-config.xml中使用context:annotation-config标签让Spring使用Annotations
2)在spring-config.xml中使用context:component-scan标记,并告诉Spring在其中寻找自动发现bean的包
3)使用@Component批注将类标记为Spring自动发现的bean

如果使用@Component annotation ,则不需要在spring-config.xml中声明Bean声明。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM