0%

spring+springmvc(javaConfig,无xml的方式)

起一个maven项目,配置pom文件

1
2
3
4
5
6
7
8
9
10
11
12
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
  • servlet必须要3.0以上

    配置ApplicationConfig.class,相当于spring-context.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.wyl.security.springmvc.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.stereotype.Controller;

/**
* @Description SpringAppliction 相当于spring-context.xml
* @Author YiLong Wu
* @Date 2020/2/3 20:28
* @Version 1.0.0
*/

(basePackages = "com.wyl.security"
,excludeFilters = {.Filter(type = FilterType.ANNOTATION,value = Controller.class)})
public class ApplictionConfig {

// 配置除了controller以外的bean,例如:数据库连接池,业务bean,事务管理器

}

配置WebMvcConfig,相当于spring-mvc.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.wyl.security.springmvc.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

/**
* @Description WebMvc 相当于spring-mvc.xml
* @Author YiLong Wu
* @Date 2020/2/3 20:35
* @Version 1.0.0
*/

(basePackages = "com.wyl.security"
,includeFilters = {.Filter(type = FilterType.ANNOTATION,value = Controller.class)})
public class WebMvcConfig extends WebMvcConfigurationSupport {

// 配置视图解析器

public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
internalResourceViewResolver.setPrefix("/WEB-INF/views/");
internalResourceViewResolver.setSuffix(".jsp");
return internalResourceViewResolver;
}

// 配置视图控制器,初始化web时直接访问,无需@controller

public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
}
}

配置SpringApplicationInit,相当于web.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.wyl.security.init;

import com.wyl.security.springmvc.config.ApplictionConfig;
import com.wyl.security.springmvc.config.WebMvcConfig;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

/**
* @Description SpringApplicationInit 相当于web.xml
* @Author YiLong Wu
* @Date 2020/2/3 20:44
* @Version 1.0.0
*/
public class SpringApplicationInit extends AbstractAnnotationConfigDispatcherServletInitializer {
// 加载spring容器 相当于加载spring-context.xml

protected Class<?>[] getRootConfigClasses() {
return new Class[]{ApplictionConfig.class};
}

// 相当于加载spring-mvc.xml

protected Class<?>[] getServletConfigClasses() {
return new Class[]{WebMvcConfig.class};
}

// 相当于加载 url-mapping

protected String[] getServletMappings() {
return new String[]{"/"};
}
}
  • web的启动
    SpringApplicationInit 继承 AbstractAnnotationConfigDispatcherServletInitializer,实质上,实现了WebApplicationInitializer,从而扫描了它的子类,并加载到容器中

    配置maven的tomcat7插件

    1
    2
    3
    4
    5
    <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    </plugin>

-------------本文结束感谢你的阅读---------