使用純注解與配置類開發springMVC項目,去掉xml配置


最近拜讀了楊開振老師的書,深入淺出springBoot2.x,挖掘了很多以前被忽略的知識,

開發一年多,工作中一直用傳統springmvc的開發,基本都還是用的傳統的xml配置開發,

看到書里有提到,完全可以使用注解與配置類開發springmvc項目,去掉配置,這里就學習一下!

先新建一個mvc項目:

配置好目錄結構之后,就可以配置環境了,不過不用xml,這次用注解和java類進行配置,如果是springboot 就可以直接開發了,哈哈:

繼承springmvc提供的AbstractAnnotationConfigDispatcherServletInitializer抽象類可以配置DispatcherServlet:

//配置DispatcherServlet
public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer {

    //配置AOP容器,返回AOP配置文件
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];   這里可以配置需要加入容器的Bean,同樣可以聲明配置類,然后加Bean
    }
    //url映射配置,返回spring的配置文件,
    //這里WebConfig主要是配置DispatcherSerlvet,視頻解析器,JSON等
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};
    }
    //攔截請求匹配,只攔截.do
    @Override
    protected String[] getServletMappings() {
        return new String[]{"*.do"};
    }
}

  WebConfig.class配置: 這里主要配置試圖解析器和請求映射器,其實和xml里面配置Bean是一樣的,只不過這里用了@Bean注解

 

@Configurable  //聲明配置類
@ComponentScan(value ="com.*",   //配置只掃描指定包下的controller注解的類
        includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,
                value = Controller.class)})
@EnableWebMvc  //啟動springmvc配置
public class WebConfig {

    /**
     * 視圖解析器
     */
    @Bean(name="tnternalResourceViewResolver")
    public ViewResolver initViewResolver(){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/jsp/");//設置跳轉頁面路徑
        viewResolver.setSuffix(".jsp"); //頁面后綴
        return viewResolver;
    }

    /**
     * 請求映射處理適配器
     */
    @Bean(name="requestMappingHandlerAdapter")
    public HandlerAdapter initRequestHandlerAdapter(){
        RequestMappingHandlerAdapter handlerAdapter = new RequestMappingHandlerAdapter();
        //配置JSON轉換器
        MappingJackson2XmlHttpMessageConverter messageConverter = new MappingJackson2XmlHttpMessageConverter();
        ArrayList<MediaType> mediaTypes = new ArrayList<>();
        mediaTypes.add(MediaType.APPLICATION_JSON_UTF8);//設置接受JOSN轉換
        messageConverter.setSupportedMediaTypes(mediaTypes);
        handlerAdapter.getMessageConverters().add(messageConverter);//適配器添加JSON轉換
        return handlerAdapter;
    }
}

  最后就可以直接開發Controller了!

然后有幾個坑注意一下:

1 把springmvc的xml和web.xml刪除,因為使用注解已經注冊了,否則會報異常,,無法注冊DispatcherServlet

2 添加依賴的時候需要高版本的spring和jackson等,否則也會出現問題,尤其是這個fasterxml依賴,特別坑,最好都用2.8.10版本以上的,四個都缺一不可,否則會報servlet.init()異常

這些都搞完基本就可以正常開發了:

下面是項目結構:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM