开发者社区> 问答> 正文

spring 项目在保留使用web.xml和spring.xml的文件的情况下如何配置-java报错

如题,现有一个spring项目,以web.xml和spring-xml配置项文件为主,现在要迁移spring-xml中的部分配置到javaBean里,以后的配置尽量像spring boot一样用javabean配合自定义注解进行配置,例如spring的拦截器,用WebMvcConfigurerAdapter或是类似方案,但目前想的不是完全去除xml,因为有些xml配置并没有想到javabean的配置方式。

我直接在Spring的xml文件里,写<bean class="继承WebMvcConfigurerAdapter类的路径"></bean>。在部署到tomcat启动时,继承WebMvcConfigurerAdapter的类,没有被调用到,要怎么让它被调用到呢,有解决方式么?或是是类似

百度了一下相关WebMvcConfigurerAdapter配置教程,都是零xml配置教程,(我负责的spring项目是成型的,如果要完全去除xml,那跨度就有点大了,所以不要说什么改成零xml配置就好了)。

展开
收起
montos 2020-06-02 12:16:20 911 0
1 条回答
写回答
取消 提交回答
  • 引用来自“Kit_lee”的评论

    你应该使用配置类,而不是WebMvcConfigurerAdapter

    例如实现一个配置类,配置某些bean

    package project;
    
    @Configuration
    public class MyConfig {
        @Bean
        public MyService myService(){
           return new MyService();
        }
    }

    然后在你原有的xml中配置中声明配置类为一个bean,让spring能扫描到

    <bean class="project.MyConfig" />

     

    WebMvcConfigurerAdapter是用于追加或修改Spring Mvc默认配置的,如果你硬是要用WebMvcConfigurerAdapter来实现你想要的,也应该是同样写一个实现类继承WebMvcConfigurerAdapter,但记得加上@Configuration注解,让Spring知道这是一个配置类

    @Configuration
    public class WebConfiguration
        extends WebMvcConfigurerAdapter
    {
    
    }

     

    ######回复 @齿轮1 : 已解决,现在方法能被调用了,可能是tomcat部署不完全的问题的######回复 @Kit_lee : 把<bean class="project.WebConfiguration" /> 这个bean写到spring-context的配置xml?意思是写到最开始的Spirng配置文件的第一个么?我把这个bean的xml标签写到了加载dao组件和mvc组件之前,测试了一下,可还是没有对其内部的方法调用消息######回复 @齿轮1 : 如果你是要加拦截器,那的确是要配置类实现WebMvcConfigurerAdapter再重写addInterceptors方法。因为我当初改的老项目我是直接整个mvc让配置类去配置的,你这个bean的配置要写在spring-context的配置xml而不是写在spring-mvc的配置xml。然后你加上@EnableWebMvc试试######我是编写了一个实现类实现了WebMvcConfigurerAdapter,加上@Configuration注解,重写addInterceptors方法,里面编写一些输出语句,再加spring的xml中 <bean class="project.WebConfiguration" />,但是没有看到在addInterceptors方法输出的内容,也就是说addInterceptort方法未被调用######

    你应该使用配置类,而不是WebMvcConfigurerAdapter

    例如实现一个配置类,配置某些bean

    package project;
    
    @Configuration
    public class MyConfig {
        @Bean
        public MyService myService(){
           return new MyService();
        }
    }

    然后在你原有的xml中配置中声明配置类为一个bean,让spring能扫描到

    <bean class="project.MyConfig" />

     

    ###### @Kit_lee ,这个方式好像不能设置Spring的拦截器等web组件把######

    @Kit_lee 

    2020-06-02 12:16:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载