springboot-纯java搭建ssm环境

创建工程

创建一个普通的Maven工程(注意,这里可以不必创建Web工程),并添加SpringMVC的依赖,同时,这里环境的搭建需要用到Servlet,所以我们还需要引入Servlet的依赖(一定不能使用低版本的Servlet),最终的pom.xml文件如下:

<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>
	<scope> provided</scope>
</dependency>

添加spring配置

工程创建成功之后,首先添加 Spring 的配置文件,如下:

@Configuration
@ComponentScan(basePackages = "org.javaboy", useDefaultFilters = true, excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Controller.class)})
public class SpringConfig {
}

关于这个配置,如下几点:

@Configuration 注解表示这是一个配置类,在我们这里,这个配置的作用类似于 applicationContext.xml
@ComponentScan 注解表示配置包扫描,里边的属性和 xml 配置中的属性都是一一对应的,
	useDefaultFilters 表示使用默认的过滤器,然后又除去 Controller 注解,
	即在 Spring 容器中扫描除了 Controller 之外的其他所有 Bean 。

添加 SpringMVC 配置

接下来再来创建 springmvc 的配置文件:

@Configuration
@ComponentScan(basePackages = "org.javaboy",useDefaultFilters = false,includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class)})
public class SpringMVCConfig {
}
注意:如果不需要在 SpringMVC 中添加其他的额外配置,这样就可以了。即 视图解析器、
JSON 解析、文件上传......等等,如果都不需要配置的话,这样就可以了。

配置 web.xml

此时,我们并没有 web.xml 文件,这时,我们可以使用 Java 代码去代替 web.xml 文件,这里会用到 WebApplicationInitializer ,具体定义如下:

public class WebInit implements WebApplicationInitializer {
    public void onStartup(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);
    }
}
WebInit 的作用类似于 web.xml,这个类需要实现 WebApplicationInitializer 接口,
并实现接口中的方法,当项目启动时,onStartup 方法会被自动执行,我们可以在这个方法
中做一些项目初始化操作,例如加载 SpringMVC 容器,添加过滤器,
添加 Listener、添加 Servlet 等。

注意:

由于我们在 WebInit 中只是添加了 SpringMVC 的配置,这样项目在启动时只会去加载 
SpringMVC 容器,而不会去加载 Spring 容器。

如果一定要加载 Spring 容器,需要我们修改 SpringMVC 的配置。

在 SpringMVC 配置的包扫描中也去扫描 @Configuration 注解,进而加载Spring容器。

还有一种方案可以解决这个问题,就是直接在项目中舍弃 Spring 配置,直接将所有配置
放到 SpringMVC 的配置中来完成,这个在 SSM 整合时是没有问题的。

在实际开发中,较多采用第二种方案,第二种方案,SpringMVC 的配置如下:


@Configuration
@ComponentScan(basePackages = "org.javaboy")
public class SpringMVCConfig {
}

这种方案中,所有的注解都在 SpringMVC 中扫描,采用这种方案的话,则 Spring 的配置文件就可以删除了。

测试

最后,添加一个 HelloController ,然后启动项目进行测试:

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }
}

启动项目,访问接口,结果如下:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章