首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何自动决定使用哪个上下文/配置文件

如何自动决定使用哪个上下文/配置文件
EN

Stack Overflow用户
提问于 2020-06-05 13:32:09
回答 2查看 285关注 0票数 1

场景:Spring应用程序与xml配置文件(自动扫描和设置调度器-标准配置)。还有Java配置文件(在自动存储包中)和一个bean,让我们称它为A。然后我们有了RestController,它使用@注释注入bean、、A、,然后以某种方式在控制器旁边使用这个对象。

问题:自动注释如何知道在java带注释的配置文件中查找bean的位置?如果我的理解是正确的,那么控制器中用于自动配置的上下文应该从xml文件和所有自动封装类(与组件关联)中创建--那么这是如何工作的,以及它如何从java配置文件访问bean呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-05 20:14:39

来自@Configuration的javadoc

@Target(value=TYPE)“保留(value=RUNTIME)”记录在案的“组件公共”接口配置 指示类声明一个或多个@Bean方法,并且可以由Spring容器进行处理,以便在运行时为这些bean生成bean定义和服务请求。

因此,当@Configuration类在您的XML配置中用<context:component-scan/>定义的一个base-packages中时,它将被扫描为一个<context:component-scan/>

如果希望@Configuration类在没有XML配置的情况下工作,则需要使用AnnotationConfigApplicationContext初始化上下文。

示例web.xml

代码语言:javascript
运行
复制
<web-app>
    <context-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </context-param>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>com.acme.AppConfig</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- Declare a Spring MVC DispatcherServlet as usual -->
    <servlet>
        <!-- Configuration goes here -->
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

注:

来自弹簧框架参考

注释注入是在XML注入之前执行的。因此,XML配置重写了通过这两种方法连接的属性的注释。

继续阅读:

票数 1
EN

Stack Overflow用户

发布于 2020-06-05 14:04:20

这是按需豆子注射..

Spring查找所有配置类,从这些类开始扫描包和XML文件以创建bean。

当扫描是否发现必须创建特定的bean时,它将尝试创建该bean,而创建时可能会遇到此bean依赖于其他bean的情况,现在它将尝试创建其他依赖bean。一旦创建了依赖bean,现在就可以使用字段注入或构造注入自动处理它们了。在创建时,还需要考虑lazyoptional bean。Spring按照他们的要求遵循bean创建路径,如果您在扫描仪中给出包名,那么这也可以创建一个循环。

例如,由于XML变得更加复杂,XML可能依赖于基于包扫描程序,反之亦然,因此spring必须遍历每个XML文件来查看如何创建该bean。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62216530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档