为了账号安全,请及时绑定邮箱和手机立即绑定

spring mvc,我的bean如何在控制器中自动装配?

spring mvc,我的bean如何在控制器中自动装配?

眼眸繁星 2021-09-26 17:45:48
我是 spring 和 spring mvc 的新手。我已经按照视频教程配置了数据源和 mvc。我添加了一个上下文文件offers-servlet.xml在WEB-INF那里我扫描我的controllers包在我的controller.java所在。我创建了另一个上下文service-context.xml,其中我是组件扫描service.java类。我service.java在我的controller.javawithsetService方法中创建了一个实例,我用@Autowired. 我的疑问是如何service.java在我的controller.java每个文件中自动装配,其中每个都在不同的包和具有不同 component-scan 的不同 context.xml 文件中。
查看完整描述

5 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

这个链接在这里解释了在注释的情况下的组件扫描。在您的情况下,您已通过 XML 配置了组件扫描。spring 中的每个 XML 定义都有其对应的注解定义。尽管此链接解释了通过注释配置组件扫描的情况,但它在您的情况下也完全有效:



查看完整回答
反对 回复 2021-09-26
?
函数式编程

TA贡献1807条经验 获得超9个赞

如果 spring 容器知道 bean 位于不同的包中,则这些 bean 位于不同的包中这一事实并不重要。通过在两个包中启用组件扫描,您可以在应用程序的当前执行上下文中全局使用这两个包中的所有 bean。

您可以将 spring IoC 视为全局映射,给定一个(先前注册的)键,它可以为您提供与该键相关的实例。


查看完整回答
反对 回复 2021-09-26
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

当您提到组件扫描包时,它表示spring-container 在这些包中找到带注释的类,然后bean(具有@Component 或相关注释的类的对象,如@Service、@Controller、@Repository)将是由 Spring 管理(从创建到销毁的整个生命周期)。因此,在您的应用程序中,无论何时您需要一个这样的 bean,而不是创建,它将由容器提供。另一方面,如果您没有指定“组件扫描”,您将必须确定您希望 Spring-container 管理其 bean 的类(使用 xml 或 javaConfig)。现在这部分是确定哪些 bean 将由 Spring-container 管理。

接下来是在需要的地方连接这些 bean。为此,您在 setter 方法中提到了 @Autowired。当 Spring-container 遇到这个注解时,它会在容器中寻找那个 bean(在你的例子中是服务 bean)。由于该 bean 由容器管理(来自上一步)并且在需要时可用(在您的情况下在控制器类中),容器将提供(自动连接)服务 bean 到 setter 方法中。


查看完整回答
反对 回复 2021-09-26
  • 5 回答
  • 0 关注
  • 154 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信