Javaconfig配置springmvc
时间:2020-08-26 14:26:14
收藏:0
阅读:81
Javaconfig配置springmvc
1.建立maven工程导入相关的包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>springmvc-noxml-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>springmvc-noxml-demo Maven Webapp</name>
<!-- FIXME change it to the project‘s website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<spring.version>5.1.6.RELEASE</spring.version>
</properties>
<dependencies>
<!--spring 核心包-->
<!-- spring start -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--引入json,返回前端json数据-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!--aop-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.9</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.13</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
<!-- spring end -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--日志-->
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.8.0-alpha0</version>
<scope>test</scope>
</dependency>
<!--j2ee相关包 servlet、jsp、jstl-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
<build>
<finalName>springmvc-noxml-demo</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
二、用 JavaConfig 替代 web.xml 中 servlet 配置及监听配置
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer:
WebInitializer继承关系链:
WebInitializer -->AbstractAnnotationConfigDispatcherServletInitializer -->AbstractDispatcherServletInitializer -->
AbstractContextLoaderInitializer -->WebApplicationInitializer
实现 WebApplicationInitializer 接口,就等同于 web.xml 配置
@Override public void onStartup :
web.xml 核心的相关配置,可再此方法中重写 自定义的配置 ,如:<filter> 可用 FilterRegistration.Dynamic encodingFilter 此种方式来配置。
@Override protected Class<?>[] getRootConfigClasses :
重写此方法,以替代 spring-context.xml ,在这个方法中返回的 类类型数组 可配置上下文中需要的 bean ,如数据库,缓存 等等。
@Override protected Class<?>[] getServletConfigClasses:
重写此方法,以替代 spring-mvc.xml ,在这个方法中返回的类型数组 可配置 spring 中 视图解析器,http message converter 等框架需要的 bean。
@Override protected String[] getServletMappings :
重写此方法,就相当于 <servlet-mapping> 节点等同的功能,可指定 站点根路径。
public class WebConfig implements WebMvcConfigurer :
@EnableWebMvc:注解会开启一些默认配置,如:ViewResolver MessageConverter 等,若无此注解,重写 WebMvcConfigurerAdapter 方法无效。
@ComponentScan:会扫描指定包中的类,根据注解,将特定类初始化为 上下文中需要的 bean 。
@Override public void addViewControllers :
重写 addViewControllers 简化页面快捷转向,这样就可以不用配置 Controller 了(就是那些仅返回一个页面路径的简单 controller )。
@Bean public InternalResourceViewResolver viewResolver :
配置JSP视图解析器
@Override public void addResourceHandlers :
配置静态文件处理
MyDispatcherInitializer类,代替web.xml
public class MyDispatcherInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
// root配置类初始化
// 指定 Root WebApplicationContext 类,这个类必须@Configuration来注解,从而代替XML配置文件
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{SpringCnfiguration.class};
}
// web配置类初始化
// 指定 Servlet WebApplicationContext 类,这个类必须@Configuration来注解,从而代替XML配置文件
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{WebConfiguration.class};
}
// 映射根路径初始化
// 指定 Servlet mappings
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
//配置字符过滤器
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(false);
return new Filter[]{characterEncodingFilter};
}
}
SpringCnfiguration,代替applicationContext.xml
//spring的配置文件,扫描包,除了controller注解
@Configuration
@ComponentScan(value = "com.zy",excludeFilters = {@Filter(type = FilterType.ANNOTATION,value = {Controller.class})})
public class SpringCnfiguration {
}
WebConfiguration,代替spring-mvc.xml
/**
* @EnableWebMvc 注解会开启一些默认配置,如:ViewResolver MessageConverter 等,等同于<mvc:annotation-driven></>
* 若无此注解,重写 WebMvcConfigurerAdapter 方法无效,等同
2 * */
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.zy.controller")
public class WebConfiguration implements WebMvcConfigurer {
//配置jsp view
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/view/");
resolver.setSuffix(".jsp");
resolver.setOrder(2);//设置优先级
resolver.setCache(false);
return resolver;
}
// 配置静态资源的处理
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
//配置静态资源访问
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/statics/**").addResourceLocations("/statics/");
}
//一些简单的controller处理,直接返回相应的界面
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("hello");
}
//吧自定义的拦截器加入容器
@Bean
public MyInterceptor myInterceptor(){
return new MyInterceptor();
}
//添加上面配置好的拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor());
}
}
原文:https://www.cnblogs.com/zhouyanger/p/13564604.html
评论(0)