Spring MVC 2.5 混合使用注释和注释XML 配置,但 xml 被忽略

发布于 2024-11-23 21:52:23 字数 865 浏览 3 评论 0原文

在我的 Spring MVC Web 应用程序中,我想将基于 xml 的配置与注释混合在一起: 我使用 @Controller@RequestMapping("bla.htm")@RequestParam 等注释来解析 HttpRequest 到 Controller 方法。因此我添加

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<context:component-scan base-package="somePackage.controller"/>

到我的 dispatcher-servlet.xml 中。

但我的控制器有属性。这些属性可以通过 @AutoWired 注释注入。但我也定义了范围。所以我每个属性都有两个注释,这使得代码可读性不好。所以我想在我的 applicationContext.xml 文件中注入依赖项。

有没有办法可以保留注释驱动的请求映射,但使用 context.xml 文件进行依赖注入?或者只能使用注释或 xml 配置?

注意:我的依赖注入 bean 位于不同的 xml 文件中。

PS:

我应该提到,我使用Spring 2.5并且无法升级它。

In my Spring MVC webapplication I want to mix xml based configuration with annotations:
I use annotations like @Controller, @RequestMapping("bla.htm"), @RequestParam etc. to resolve HttpRequests to Controller Methods. Therefore I added

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<context:component-scan base-package="somePackage.controller"/>

to my dispatcher-servlet.xml.

But my controllers have attributes. Those attributes could be injected via @AutoWired annotation. But I also have do define Scopes. So i would have two annotations per attribute, which makes the code bad readable. So I want to inject dependencies in my applicationContext.xml file.

Is there a way I can keep the annotation-driven request-mapping but use context.xml files for Dependency Injection? Or is it only possible to use EITHER annotations OR xml configuration?

note: my beans for dependency injection are in a different xml file.

PS:

I should have mentioned, I use Spring 2.5 and can't upgrade it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦幻之岛 2024-11-30 21:52:23

不, 可以很好地处理 XML。但您需要删除

更新:对于 Spring 2.5,这应该可以帮助您开始:

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

    <context:annotation-config />

    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

    <!-- now add some controllers -->

</beans>

No, <mvc:annotation-driven> works fine with XML. But you'll need to get rid of the <context:component-scan>.

Update: with Spring 2.5, this should get you started:

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

    <context:annotation-config />

    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

    <!-- now add some controllers -->

</beans>
羁〃客ぐ 2024-11-30 21:52:23

是的,这当然是可能的。

要使用控制器注释,例如 @Controller@RequestMapping,请确保放入

<mvc:annotation-driven/>

-servlet.xml

然后简单定义您的控制器使用普通的 XML bean 表示法,例如:

<bean class="com.company.controllers.AController">
    <property name="propertyName" ref="beanId" />
</bean>

这些 bean 引用也可以来自 web.xml 中定义的任何其他 applicationContext.xml

Yes this is certainly possible.

To use the controller annotations such as @Controller and @RequestMapping make sure you put

<mvc:annotation-driven/>

in your <servletname>-servlet.xml

Then simple define your controllers using the normal XML bean notation such as:

<bean class="com.company.controllers.AController">
    <property name="propertyName" ref="beanId" />
</bean>

These bean refs can come from any other applicationContext.xml defined in your web.xml too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文