springmvc纯注解配置
gitee仓库:https://gitee.com/rainteas/springmvcannotation
本项目无 spinrg.xml,springmvc.xml和web.xml
继承AbstractAnnotationConfigDispatcherServletInitializer来代替web.xml
/**
* @author raintea
* @Classname MyWebAppInitializer
* @Description web容器启动的时候创建对象
* @Date 2019/7/10 15:04
*/
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
//根容器 父容器
@Override
protected Class<?>[] getRootConfigClasses() {
logger.info("===========spring根容器加载成功============");
return new Class[]{RootConfig.class};
}
//web容器 子容器
@Override
protected Class<?>[] getServletConfigClasses() {
logger.info("===========springweb子容器加载成功============");
return new Class[]{WebConfig.class};
}
//获取前端控制器映射信息 dispatcherServlet
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
RootConfig代替spring.xml配置
/**
* @author raintea
* @Classname RootConfig
* @Description TODO
* @Date 2019/7/10 15:07
*/
@ComponentScan(value = "com.raintea.crud",excludeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {Controller.class})
})
public class RootConfig {
}
WebConfig代替springmvc.xml配置
/**
* @author raintea
* @Classname WebConfig
* @Description TODO
* @Date 2019/7/9 17:39
*/
@EnableWebMvc
@ComponentScan(value={"com.raintea.crud"},includeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {Controller.class})
},useDefaultFilters = false)
@EnableAspectJAutoProxy
public class WebConfig implements WebMvcConfigurer {
private static Logger logger= LoggerFactory.getLogger(WebConfig.class);
/**
* 配置springmvc视图
* @return
*/
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
logger.info("============jsp解析器开始加载===============");
// registry.jsp();
registry.jsp("/WEB-INF/views/", ".jsp");
logger.info("============jsp解析器开始成功,开始渲染把===============");
}
@Bean
public LogAopConfig logAopConfig(){
return new LogAopConfig();
}
}
内嵌tomcat 点击Main函数即可启动,不需要配置
/**
* @author raintea
* @Classname Main
* @Description TODO
* @Date 2019/7/9 13:47
*/
public class Main {
private int port = 8080;
private String contextPath = "";
private static Logger logger= LoggerFactory.getLogger(Main.class);
public void start() throws Exception {
logger.info("=================开始加载内嵌tomcat=====================");
Tomcat tomcat = new Tomcat();
URL url = getClass().getClassLoader().getResource("mybatis-config.xml");
String pwd = StringUtils.substringBefore(url.getPath(), "/target/classes");
tomcat.setBaseDir(pwd);
tomcat.setPort(port);
StringBuilder webAppBuilder = new StringBuilder();
webAppBuilder.append(pwd).append(File.separator).append("/src/main/webapp");
String webapp = webAppBuilder.toString();
tomcat.addWebapp(contextPath, webapp);
tomcat.enableNaming();
tomcat.start();
logger.info("==================tomcat加载成功==========================");
logger.info("测试地址:http://localhost:8080/hello");
tomcat.getServer().await();
}
public static void main(String[] args) throws Exception {
Main starter = new Main();
starter.start();
}
}
POM.xml文件
<?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>com.raintea</groupId>
<artifactId>springmvc1979</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>springmvc1979 Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<tomcat.embed.version>8.0.28</tomcat.embed.version>
</properties>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.8.RELEASE</version>
</dependency>
<!--c3p0-->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- mybatis/spring包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.8.RELEASE</version>
</dependency>
<!--java servlet 高版本是由于2.5版本 sprign3不支持测试-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--junit测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 嵌入式tomcat依赖 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat.embed.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>${tomcat.embed.version}</version>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-logging-juli</artifactId>
<version>${tomcat.embed.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8</version>
</dependency>
<!--Hutool Java工具包-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.5.7</version>
</dependency>
<!-- 日志文件管理包 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>0.1.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.12</version>
</dependency>
</dependencies>
</project>