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";
    }
}

啓動項目,訪問接口,結果如下:
在這裏插入圖片描述

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