Maven手动构建项目

maven构建的是maven风格的纯净模板,要转变成spring boot项目需要自己添加依赖等配置。



mvn archetype:generate:  Maven插件原型是一个Maven项目模板工具包。 

-DgroupId         包名
-DartifactId        项目名
-DarchetypeArtifactId   类型maven-archetype-quickstart,创建一个Java Project,maven-archetype-webapp,创建一个Web Project
-DinteractiveMode     是否使用交互模式,如果为false,非交互式的命令后直接创建,否则会有控制台提示输入操作


先使用mvn命令构建Maven项目



mvn archetype:generate -DinteractiveMode=false -DgroupId=com.autumn -DartifactId=springbootdemo -Dversion=1.0.0


IDEA新建一个Spring Boot项目_java 

成功导入IDEA后模板如下,可以看出只是个叫springbootdemo的maven空项目,目前和springboot还一点关系没有,需要手动添加依赖。

IDEA新建一个Spring Boot项目_springboot_02

IDEA直接构建Spring Boot

前提配置

用IDEA构建的Spring Boot项目没有Maven模板框架,只有依赖Spring Boot的pom.xml,和上面用Maven创建的刚好相反,那么要如何创建Spring Boot项目既有Maven的目录结构又有springboot的pom依赖呢?

设置Setting/Other Setting -> Build,Execution,Deployment -> Build Tools -> Runner中把VM Options设置为 -DarchetypeCatalog=internal ,这样创建的项目就有maven的目录结构了。

IDEA新建一个Spring Boot项目_spring_03

创建Spring Boot项目

IDEA新建一个Spring Boot项目_spring_04

maven配置

输入Maven必须的一些配置

IDEA新建一个Spring Boot项目_spring_05

spring项目类型选择 

选择Spring Web

IDEA新建一个Spring Boot项目_java_06

创建成功

创建结果如下,带有spring boot依赖的pom.xml和带有maven目录结构的项目。mvnw(Maven Wrapper)是在没有安装maven或者maven版本不符的情况下使用的代替mvn的命令。

IDEA新建一个Spring Boot项目_springboot_07

如果不设置Setting中的Maven配置创建的项目架构如下,会缺少src那部分,只能自己配置。

IDEA新建一个Spring Boot项目_java_08

Web创建

去spring官网​​https://start.spring.io/​​,根据需求点击需要的依赖,然后点击下载,生成的demo和IDEA生成的一样,只不过POM.xml中多了一些其他配置的依赖。

IDEA新建一个Spring Boot项目_springboot_09

POM添加依赖

在pom文件里添加Spring Boot依赖,如果是通过IDEA创建,这里就已经创建好了。

对于SpingBoot测试Junit至少是4.1-4.2以上的版本,所以把版本号删除默认的就行

JAR包依赖配置



<parent>
<!-- 指定Spring Boot的版本2.2.2.BUILD-SNAPSHOT -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.BUILD-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<!--spring boot核心包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<!--可以将应用打包成一个可执行的jar包的插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>


仓库配置

也可以指定jar包和插件的仓库



<!--jar包仓库-->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

<!--插件仓库-->
<pluginRepositories>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>


编码

编写启动类

spring boot提供了一个统一的注解@SpringBootApplication。

@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan    



package com.autumn;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootApplication {

public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}

}


添加接口类

必须要写在App启动类一个包下才能够扫描到

@RestController注解相当于@ResponseBody + @Controller合在一起的作用。 



package com.autumn;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class firstController {

@GetMapping("hello")
public String index(){
return "HelloWorld~"+this.getClass();
}
}


测试接口

浏览器中输入​​http://localhost:8080/hello​

IDEA新建一个Spring Boot项目_java_10

打包jar

用package打包,打包后在target文件夹下出现springbootdemo-1.0.0.jar文件

IDEA新建一个Spring Boot项目_spring_11

测试jar

IDEA新建一个Spring Boot项目_spring_12

使用jsp

pom.xml



<dependencies>
<!--WEB支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--jsp页面使用jstl标签-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--用于编译jsp-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<!--<scope>provided</scope>-->
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.4.2.RELEASE</version>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>


application.properties



spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp


Controller

修改注解@Controller



package com.autumn;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

//@RestController,要返回jsp这里要用Controller注解
@Controller
public class firstController {

@GetMapping("hello")
@ResponseBody
public String index(){
return "HelloWorld~"+this.getClass();
}

@RequestMapping("/showjsp")
public ModelAndView showjsp(){
ModelAndView mav=new ModelAndView("index");
mav.addObject("name","aeolian");
List list=new ArrayList<>();
list.add("180");
list.add("65");
mav.addObject("list",list);
return mav;
}
}


index.jsp



<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>SpringBoot测试</title>
</head>
<body>
${name}
${list}
</body>
</html>


测试

IDEA新建一个Spring Boot项目_spring_13