在SpringBoot项目中,一般来说是不存在xml配置,这并不是SpringBoot不支持,而是不推荐使用xml配置;SpringBoot中大量的自动化配置都是通过java配置来实现的的;在项目中可以使用纯java配置来搭建一个SSM环境,不需要使用任何的xml配置(所有的xml配置都不需要);要求:Tomcat必须在7版本以上;
1:创建工程(Maven工程);添加SpringMVC的依赖和servlet的依赖(版本要高);
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
2:Springconfig:配置
/**
* @Configuration 这是一个配置类,这个配置类,类似:ApplicationContext.xml
* @ComponentScan 表示扫描;里面的属性和xml配置中的属性都是对应的,useDefaultFilters表示使用默认的过滤器,
* 然后又除去Controller注解,在Spring容器中扫描除了Controller之外的其他所有的Bean
*/
@Configuration
@ComponentScan(basePackages = "com.Spring_Botssm",useDefaultFilters = true,excludeFilters = {@ComponentScan.Filter(type =
FilterType.ANNOTATION,classes = Controller.class)})
public class SpringConfig {
}
3:SpringMVCConfig配置
//配置扫描时要配置对Spring的扫描否则会报错(这里已经配置了)
@Configuration
@ComponentScan(basePackages = "com.Spring_Botssm",useDefaultFilters = false,includeFilters =
{@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class),
@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Configuration.class)})
public class SpringMVCConfig {
}
这里没有配置SpringMVC的其他配置,即:视图解析器,JSON解析,文件上传……等;简单的配置了一下;
4: WebInit配置:
/**
* webInit作用类似web.xml ,这个类须实现WebApplicationInitializer接口,实现其中的方法,
* 启动时,onStartup方法会被自动执行,可以在这个方法中初始化;例如初始化SpringMVC容器,添加过滤器,添加Listener,减价Servlet
*/
public class WebInit implements WebApplicationInitializer {
public void onStartup(javax.servlet.ServletContext servletContext) throws ServletException {
//加载SpringMVC的配置文件
AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();
ctx.register(SpringMVCConfig.class);
//添加DispatcherServlet
ServletRegistration.Dynamic springmvc = servletContext.addServlet("springmvc",new DispatcherServlet(ctx));
//给DispatcherServlet添加映射路径
springmvc.addMapping("/");
//给DispatcherServlet添加启动时机
springmvc.setLoadOnStartup(1);
}
}
5: Controller类:
@RestController
public class controller {
@Autowired
HelloService helloService;
@GetMapping("/hello")
public String hello(){
return helloService.hello();
}
}
HelloServlet类:
@Service
public class HelloService {
public String hello(){
return "hello";
}
}
启动项目成功;
这里一个简单的使用纯java配置的SSM就完成了;
上面完成了一个简单的SSM配置但是如何访问静态资源呢?请接着看
/*@ComponentScan(basePackages = "com.Spring_Bootssm",useDefaultFilters = false,includeFilters =
{@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class),
@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Configuration.class)})*/
@ComponentScan(basePackages = "com.Spring_Bootssm")
public class SpringMVCConfig extends WebMvcConfigurationSupport {
protected void addResourceHandlers(ResourceHandlerRegistry registry){
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/");
}
}
6.1:继承WebMvcConfigurationSupport 类重写方法addResourceHandlers这个方法汇总配置静态资源过滤器,这里静态资源放在resources目录下,所以源资源泪痣为classpath/,也可以放在webapp目录下,此时只需要修改配置中的资源位置即可,若采用java来配置SSM环境,一般可不用放在webapp目录下,除非使用jsp做页面模板,否则可以忽略webapp目录;
这里hello.js随便写了一些东西:
hello js helloSpring boot
启动项目:
就可以访问hello的内容了;
6.2 视图解析器的配置:
java配置:
为项目添加webapp目录:按 F4
后点击yes就可以创建出webapp目录了,这里不要自己手动创建防止出错:
添加依赖:
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
创建HelloController 类:
@Controller
public class HelloController {
@GetMapping("/hello2")
public String hello(){
return "hello";
}
}
创建 hello.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>hello_jsp</h1>
</body>
</html>
启动项目:
就可以访问jsp成功;