搭建SpringBoot工程步骤

建构工程步骤

  • 打开Idea-> new Project ->Spring Initializr ->填写group、artifact ->钩上web(开启web功能)->点下一步就行了。

工程目录

创建完工程,工程的目录结构如下:

yaml 复制代码
- src
	-main
		-java
			-package
				-SpringbootApplication
		-resouces
			- statics
			- templates
			- application.yml
	-test
- pom
  • pom文件为基本的依赖管理文件
  • resouces 资源文件
    • statics 静态资源
    • templates 模板资源
    • application.yml 配置文件
  • SpringbootApplication程序的入口。

pom.xml的依赖:

java 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.forezp</groupId>
	<artifactId>springboot-first-application</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springboot-first-application</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>

其中spring-boot-starter-web不仅包含spring-boot-starter,还自动开启了web功能。

功能演示

说了这么多,你可能还体会不到,举个栗子,比如你引入了Thymeleaf的依赖,spring boot 就会自动帮你引入SpringTemplateEngine,当你引入了自己的SpringTemplateEngine,spring boot就不会帮你引入。它让你专注于你的自己的业务开发,而不是各种配置。

再举个栗子,建个controller:

java 复制代码
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;

@RestController
public class HelloController {

    @RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }

}

启动SpringbootFirstApplication的main方法,打开浏览器localhost:8080,浏览器显示:

Greetings from Spring Boot!

神奇之处:

  • 你没有做任何的web.xml配置。
  • 你没有做任何的sping mvc的配置; springboot为你做了。
  • 你没有配置tomcat ;springboot内嵌tomcat.

启动springboot 方式

cd到项目主目录:

复制代码
mvn clean  
mvn package  编译项目的jar
  • mvn spring-boot: run 启动
  • cd 到target目录,java -jar 项目.jar

来看看springboot在启动的时候为我们注入了哪些bean

在程序入口加入:

java 复制代码
@SpringBootApplication
public class SpringbootFirstApplication {

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

	@Bean
	public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
		return args -> {

			System.out.println("Let's inspect the beans provided by Spring Boot:");

			String[] beanNames = ctx.getBeanDefinitionNames();
			Arrays.sort(beanNames);
			for (String beanName : beanNames) {
				System.out.println(beanName);
			}

		};
	}

}

程序输出:

Let's inspect the beans provided by Spring Boot: basicErrorController beanNameHandlerMapping beanNameViewResolver characterEncodingFilter commandLineRunner conventionErrorViewResolver defaultServletHandlerMapping defaultViewResolver dispatcherServlet dispatcherServletRegistration duplicateServerPropertiesDetector embeddedServletContainerCustomizerBeanPostProcessor error errorAttributes errorPageCustomizer errorPageRegistrarBeanPostProcessor
.... ....

在程序启动的时候,springboot自动诸如注入了40-50个bean.

单元测试

通过@RunWith() @SpringBootTest开启注解:

java 复制代码
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class HelloControllerIT {

    @LocalServerPort
    private int port;

    private URL base;

    @Autowired
    private TestRestTemplate template;

    @Before
    public void setUp() throws Exception {
        this.base = new URL("http://localhost:" + port + "/");
    }

    @Test
    public void getHello() throws Exception {
        ResponseEntity<String> response = template.getForEntity(base.toString(),
                String.class);
        assertThat(response.getBody(), equalTo("Greetings from Spring Boot!"));
    }
}
相关推荐
qq_1249870753几秒前
基于springboot的驾校预约管理小程序(源码+论文+部署+安装)
spring boot·微信小程序·小程序·毕业设计·计算机毕业设计·毕业设计源码
不光头强6 分钟前
Java中的异常
java·开发语言
毕设源码-赖学姐6 分钟前
【开题答辩全过程】以 高校资源共享平台的设计与实现 为例,包含答辩的问题和答案
java
shamalee9 分钟前
MS SQL Server partition by 函数实战二 编排考场人员
java·服务器·开发语言
aisifang009 分钟前
MS SQL Server partition by 函数实战三 成绩排名
java
理想小青年13 分钟前
保姆级 OpenClaw 浏览器配置教程
后端
常利兵14 分钟前
Spring Boot接口版本控制:解锁API优雅升级姿势
spring boot·后端·状态模式
C++chaofan19 分钟前
JUC 并发编程:对可见性、有序性与 volatile的理解
java·开发语言·spring·java-ee·juc·synchronized·
无名-CODING21 分钟前
Tomcat 底层核心知识点字典(面试必备)
java·面试·tomcat
XiYang-DING23 分钟前
【Java SE】双亲委派模型
java·开发语言