From fad0669e6cde16736bd7de2770f99e7b8399cb04 Mon Sep 17 00:00:00 2001 From: p4vb9jpo3 <1605103955@qq.com> Date: Wed, 18 Dec 2024 10:07:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=A8=E9=87=8A=20ytt=20(#10)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/config/InterceptorConfig.java | 44 +++++++++++++++++-- .../java/com/config/MyMetaObjectHandler.java | 23 ++++++++++ .../java/com/config/MybatisPlusConfig.java | 14 ++++++ .../java/com/minsuguanliwApplication.java | 32 +++++++++++++- 4 files changed, 109 insertions(+), 4 deletions(-) diff --git a/minsu/minsuguanliw/src/main/java/com/config/InterceptorConfig.java b/minsu/minsuguanliw/src/main/java/com/config/InterceptorConfig.java index 586ccc5a..74bf818b 100644 --- a/minsu/minsuguanliw/src/main/java/com/config/InterceptorConfig.java +++ b/minsu/minsuguanliw/src/main/java/com/config/InterceptorConfig.java @@ -8,32 +8,70 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupp import com.interceptor.AuthorizationInterceptor; + +// 该类使用了Spring的配置注解 @Configuration,表示这是一个配置类 +// 并且继承自WebMvcConfigurationSupport,用于对Spring Web MVC进行相关配置扩展 + @Configuration public class InterceptorConfig extends WebMvcConfigurationSupport{ - + + + // 使用 @Bean 注解将方法返回的对象注册为Spring容器中的一个Bean + // 这里创建并返回一个AuthorizationInterceptor实例,用于后续的拦截器相关操作 @Bean public AuthorizationInterceptor getAuthorizationInterceptor() { return new AuthorizationInterceptor(); } - + + + // 重写父类WebMvcConfigurationSupport的addInterceptors方法 + // 目的是添加自定义的拦截器到Spring MVC的拦截器链中 + // 此处添加了AuthorizationInterceptor拦截器,并设置其拦截的路径模式为"/**"(即所有路径) + // 同时排除了"/static/**"路径模式,也就是对静态资源相关的路径不进行拦截 + + @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(getAuthorizationInterceptor()).addPathPatterns("/**").excludePathPatterns("/static/**"); super.addInterceptors(registry); } - + + /** * springboot 2.0配置WebMvcConfigurationSupport之后,会导致默认配置被覆盖,要访问静态资源需要重写addResourceHandlers方法 */ + + + /** + * springboot 2.0配置WebMvcConfigurationSupport之后,会导致默认配置被覆盖, + * 要访问静态资源需要重写addResourceHandlers方法。 + * 此方法就是重写后的用于配置静态资源访问的方法,通过ResourceHandlerRegistry来注册静态资源的访问路径和对应位置。 + * 这里将多个不同的类路径下的资源位置添加进来,使得这些位置下的静态资源可以通过对应的路径被访问到。 + */ + @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { + // 为资源处理器添加路径匹配模式为"/**",表示匹配所有请求路径 registry.addResourceHandler("/**") + + // 添加类路径下的/resources/目录作为静态资源位置,意味着可以访问该目录下的静态资源 .addResourceLocations("classpath:/resources/") + + // 添加类路径下的/static/目录作为静态资源位置 .addResourceLocations("classpath:/static/") + + // 添加类路径下的/admin/目录作为静态资源位置 .addResourceLocations("classpath:/admin/") + + // 添加类路径下的/img/目录作为静态资源位置 .addResourceLocations("classpath:/img/") + + // 添加类路径下的/front/目录作为静态资源位置 .addResourceLocations("classpath:/front/") + + // 添加类路径下的/public/目录作为静态资源位置 .addResourceLocations("classpath:/public/"); + super.addResourceHandlers(registry); } } diff --git a/minsu/minsuguanliw/src/main/java/com/config/MyMetaObjectHandler.java b/minsu/minsuguanliw/src/main/java/com/config/MyMetaObjectHandler.java index 2f9e7935..48abc754 100644 --- a/minsu/minsuguanliw/src/main/java/com/config/MyMetaObjectHandler.java +++ b/minsu/minsuguanliw/src/main/java/com/config/MyMetaObjectHandler.java @@ -9,18 +9,41 @@ import com.baomidou.mybatisplus.mapper.MetaObjectHandler; /** * 自定义填充处理器 */ + + +/** + * 这是一个自定义的填充处理器类,继承自MetaObjectHandler类, + * 主要用于在MyBatis-Plus执行数据插入和更新操作时,对特定字段进行自动填充相关的处理。 + */ public class MyMetaObjectHandler extends MetaObjectHandler { + + /** + * 重写了父类的insertFill方法,当进行数据插入操作时,会触发该方法。 + * 其功能是通过MyBatis-Plus提供的机制,使用当前时间(new Date()获取)来填充名为"ctime"的字段, + * 参数metaObject用于定位到具体要操作的对象(比如实体类对象等),从而实现插入数据时该字段的自动赋值。 + */ @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("ctime", new Date(), metaObject); } + + /** + * 重写了父类的openUpdateFill方法,该方法用于决定是否开启更新填充功能。 + * 在这里返回false,表示关闭更新填充功能,也就是在数据更新操作时,不会执行更新填充相关逻辑。 + */ @Override public boolean openUpdateFill() { return false; } + + /** + * 重写了父类的updateFill方法,正常情况下用于在数据更新时进行特定字段的填充操作。 + * 但由于在openUpdateFill方法中返回了false,关闭了更新填充功能,所以此处虽然定义了该方法, + * 但实际上在更新操作时不会执行该方法内的逻辑,也就是这里的代码不会起到实质的填充作用,仅作为重写方法的一个形式存在。 + */ @Override public void updateFill(MetaObject metaObject) { // 关闭更新填充、这里不执行 diff --git a/minsu/minsuguanliw/src/main/java/com/config/MybatisPlusConfig.java b/minsu/minsuguanliw/src/main/java/com/config/MybatisPlusConfig.java index ec2e84bb..0880f7b7 100644 --- a/minsu/minsuguanliw/src/main/java/com/config/MybatisPlusConfig.java +++ b/minsu/minsuguanliw/src/main/java/com/config/MybatisPlusConfig.java @@ -10,12 +10,26 @@ import com.baomidou.mybatisplus.plugins.PaginationInterceptor; /** * mybatis-plus配置 */ + + +/** + * 该类使用了 @Configuration 注解,表明这是一个Spring框架下的配置类, + * 其主要作用是针对Mybatis-Plus进行相关配置。 + */ + + @Configuration public class MybatisPlusConfig { /** * 分页插件 */ + + /** + * 此方法使用了 @Bean 注解,作用是将方法返回的对象注册为Spring容器中的一个Bean。 + * 这里创建并返回一个PaginationInterceptor实例,用于实现Mybatis-Plus的分页功能, + * 也就是配置Mybatis-Plus的分页插件,使得在项目中可以方便地进行数据库查询结果的分页操作。 + */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); diff --git a/minsu/minsuguanliw/src/main/java/com/minsuguanliwApplication.java b/minsu/minsuguanliw/src/main/java/com/minsuguanliwApplication.java index 80e64375..da2d447c 100644 --- a/minsu/minsuguanliw/src/main/java/com/minsuguanliwApplication.java +++ b/minsu/minsuguanliw/src/main/java/com/minsuguanliwApplication.java @@ -7,15 +7,45 @@ import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +/** + * 这是一个Spring Boot应用的主启动类,使用了 @SpringBootApplication 注解, + * 该注解是一个组合注解,包含了如 @Configuration、@EnableAutoConfiguration、@ComponentScan 等注解的功能, + * 用于标识这是一个配置类并且开启Spring Boot的自动配置以及组件扫描等功能,使得项目能够基于Spring Boot快速启动和运行。 + */ @SpringBootApplication + + +/** + * 使用 @ServletComponentScan 注解来指定Servlet相关组件(比如Servlet、Filter、Listener等)的扫描路径, + * 这里指定扫描 "com.ServletContextListener" 包下的相关组件,使得这些Servlet组件能够被Spring容器正确识别和管理。 + */ @ServletComponentScan(value = "com.ServletContextListener") + + +/** + * 通过 @MapperScan 注解来指定MyBatis的Mapper接口所在的包路径, + * 此处告知Spring Boot去扫描 "com.dao" 包及其子包下的所有Mapper接口,方便后续与数据库交互操作时能正确找到对应的Mapper实现类(通常由MyBatis框架生成代理类等方式来实现)。 + */ @MapperScan(basePackages = {"com.dao"}) public class minsuguanliwApplication extends SpringBootServletInitializer{ + /** + * 这是Java应用的主入口方法,在启动应用时会被执行。 + * 通过调用SpringApplication.run方法,传入当前主启动类(minsuguanliwApplication.class)以及启动参数(args), + * 来启动整个Spring Boot应用,完成一系列的初始化、配置加载、组件创建等操作,使得应用可以正常运行起来。 + */ public static void main(String[] args) { SpringApplication.run(minsuguanliwApplication.class, args); } - + + + /** + * 重写了SpringBootServletInitializer类的configure方法, + * 当应用以WAR包的形式部署到外部的Servlet容器(如Tomcat等)时,会通过这个方法来配置Spring应用上下文, + * 返回的SpringApplicationBuilder对象用于构建Spring应用,这里将当前主启动类(minsuguanliwApplication.class)设置为要加载的源, + * 以此来确保应用在外部Servlet容器中的正确启动和运行。 + */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder applicationBuilder) { return applicationBuilder.sources(minsuguanliwApplication.class);