package space.anyi.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.thymeleaf.spring5.SpringTemplateEngine; import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver; import org.thymeleaf.spring5.view.ThymeleafViewResolver; import org.thymeleaf.templatemode.TemplateMode; /** * @fileName: SpringMvcConfig * @projectName: SSM_template * @package: space.anyi.config * @author: 杨逸 * @date:2026/4/24 14:02 * @description: SpringMvc配置类替代spring-mvc.xml */ @Configuration @ComponentScan(basePackages = {"space.anyi.controller"}) // 扫描Controller @EnableWebMvc // 启用Spring MVC注解 public class SpringMvcConfig implements WebMvcConfigurer { // 配置视图解析器 @Bean public ThymeleafViewResolver thymeleafViewResolver(SpringTemplateEngine templateEngine){ ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); viewResolver.setTemplateEngine(templateEngine); viewResolver.setCharacterEncoding("UTF-8"); viewResolver.setCache(false); return viewResolver; } //模板引擎 @Bean public SpringTemplateEngine templateEngine(SpringResourceTemplateResolver templateResolver) { SpringTemplateEngine templateEngine = new SpringTemplateEngine(); templateEngine.setTemplateResolver(templateResolver); templateEngine.setEnableSpringELCompiler(true); return templateEngine; } //模板解析器 @Bean public SpringResourceTemplateResolver templateResolver() { SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver(); templateResolver.setPrefix("classpath:/templates/"); templateResolver.setSuffix(".html"); templateResolver.setTemplateMode(TemplateMode.HTML5); templateResolver.setCharacterEncoding("UTF-8"); templateResolver.setCacheable(false); return templateResolver; } // 配置静态资源处理 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**") .addResourceLocations("/static/"); } // 配置拦截器(可选) @Override public void addInterceptors(InterceptorRegistry registry) { //registry.addInterceptor(new LoginInterceptor()) // .addPathPatterns("/**") // .excludePathPatterns("/login", "/register"); } }