(全注解开发)学习Spring-MVC的第三天

全注解开发

第一部分 :

1.1 消除spring-mvc.xml

这些是原来spring-mvc.xml配置文件的内容

XML 复制代码
 <!--1、组件扫描, 使@Controller可以被扫描到-->
    <context:component-scan base-package="com.itheima.controller"/>

    <!--2、非自定义的Bean, 文件上传解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="maxUploadSize" value="5000000"/>
    </bean>

    <!--3、非Bean的配置-->

    <!--mvc的注解驱动 ,向容器中注入功能性的bean(映射器适配器等)-->
    <mvc:annotation-driven/>
    <!--向容器中注册静态资源处理器-->
    <mvc:default-servlet-handler/>
    <!--配置拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.itheima.interceptors.MyInterceptor1"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

我们来用配置类来代替

1 组件扫描代替

java 复制代码
@ComponentScan({"com.itheima.controller"})

2 非自定义bean代替

java 复制代码
    @Bean
    public CommonsMultipartResolver multipartResolver(){
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        multipartResolver.setDefaultEncoding("UTF-8");
        multipartResolver.setMaxUploadSize(5000000);
        return multipartResolver;
    }

3 非bean的配置

<mvc:annotation-driven/>mvc注解驱动 :

在配置类上加@EnableWebMvc即可 , 注解自带这个功能

其余两个配置 , 需要新建一个WebMvcConfigurer类 , 去实现相关功能

具体步骤如下

java 复制代码
@Component
public class MyWebMvcConfigurer implements WebMvcConfigurer {

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        //开启默认的Servlet处理器
        configurer.enable();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //添加一个拦截器,并配置拦截路径
        registry.addInterceptor(new MyInterceptor1()).addPathPatterns("/**");
    }
}

1.2 加载核心配置类

(不重要 , 当学习消除web.xml时 , 这些会被替代

两部 , 1 定义一个类注册核心配置类 ,2 在web.xml记载核心配置类 )

第二部分 :

消除web.xml

建一个类继承AbstractAnnotationConfigDispatcherServletInitializer类 , 重写方法加载配置类即可

代码如下

java 复制代码
public class MyAbstractAnnotationConfigDispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    //提供Spring容器的核心配置类
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    @Override
    //提供SpringMVC容器的核心配置类
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMVCConfig.class};
    }

    @Override
    //提供前端控制器的映射路径
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}
相关推荐
weixin_5134499615 分钟前
PCA、SVD 、 ICP 、kd-tree算法的简单整理总结
c++·人工智能·学习·算法·机器人
鱼鳞_26 分钟前
Java学习笔记_Day29(异常)
java·笔记·学习
云烟成雨TD40 分钟前
Spring AI Alibaba 1.x 系列【23】短期记忆
java·人工智能·spring
嵌入式小企鹅1 小时前
DeepSeek-V4昇腾首发、国芯抗量子MCU突破、AI编程Agent抢班夺权
人工智能·学习·ai·程序员·算力·risc-v
Amazing_Cacao2 小时前
CFCA精品可可产区认证课程风土解析(亚洲):撕开标签伪装,将微气候差异转化为可用变量
学习
我的xiaodoujiao2 小时前
API 接口自动化测试详细图文教程学习系列11--Requests模块3--测试练习
开发语言·python·学习·测试工具·pytest
河阿里2 小时前
SpringBoot :使用 @Configuration 集中管理 Bean
java·spring boot·spring
Flittly2 小时前
【SpringSecurity新手村系列】(4)验证码功能实现
java·spring boot·安全·spring
Flittly2 小时前
【SpringSecurity新手村系列】(3)自定义登录页与表单认证
java·笔记·安全·spring·springboot
墨澜逸客2 小时前
《华胥文化》百回大纲
学习·其他·百度·学习方法·新浪微博