spring boot 实战笔记(二)----springboot项目结构详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33223299/article/details/86132108

查看初始化的 Spring Boot 新项目

前面一篇已经大致讲解了如何生成spring boot项目,是里面的配置在这章做个大致的总结。

spring boot 项目文件说明:

 1. build.gradle:Gradle构建说明文件。//用maven构建的话就是pom.xml文件
  2.DemoApplication.java :应用程序的启动引导类(bootstrap class),也是主要的Spring配置类。
  3.application.properties :用于配置应用程序和Spring Boot的属性。
  4.DemoApplicationTests.java :一个基本的集成测试类。
 

一 .DemoApplication: 在Spring Boot应用程序里有两个作用:配置和启动引导。首先,这是主要的Spring配置类。虽然Spring Boot的自动配置免除了很多Spring配置,但你还需要进行少量配置来启用自动配置

@SpringBootApplication 开启了Spring的组件扫描和Spring Boot的自动配置功能。实际
上, @SpringBootApplication 将三个有用的注解组合在了一起。
  Spring的 @Configuration :标明该类使用Spring基于Java的配置。
  Spring的 @ComponentScan :启用组件扫描,这样你写的Web控制器类和其他组件才能被
自动发现并注册为Spring应用程序上下文里的Bean。这里使用 @RestController 进行注解,这样组件扫描并找到它。
  Spring Boot 的 @EnableAutoConfiguration : 这 个 不 起 眼 的 小 注 解 也 可 以 称 为@Abracadabra就是这一行配置开启了Spring Boot自动配置的魔力,让你不用再写成篇的配置了

注:在Spring Boot 1.2.0以后就整合三个注解合并为一个了

二 DemoApplicationTests.java

@RunWith(SpringRunner.class)
@SpringBootTest(classes={DemoApplication.class})// 指定启动类
//@SpringApplicationConfiguration(classes = DemoApplication.class)// 1.4.0 前版本
public class DemoApplicationTests {
    @Test
    public void contextLoads() {
        System.out.println("test");
    }

    @Before
    public void beforeTest() {
        System.out.println("before");
    }

    @After
    public void afterTest() {
        System.out.println("after");

    }

}


输出结果 before,test,after

后续的篇章会详细讲解如何单元测试

三 application.properties

如果我们想更改服务器的端口号,那么最直接省力的方法就是在这个配置文件里添加server.port=8000

加上这一行,嵌入式Tomcat的监听端口就变成了8000,而不是默认的8080。这说明application.properties文件可以很方便地帮你细粒度地调整Spring Boot的自动配置。

四  pom.xml

<?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>
	<parent>
		<!-- 从 spring-boot-starter-parent继承版本号 -->
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.1.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>myproject</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<!-- 起步依赖 -->
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc6</artifactId>
			<version>11.2.0.1.0</version>
		</dependency>
	</dependencies>
	<!-- spring boot的maven插件 -->
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

Spring Boot通过提供众多起步依赖降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。很多起步依赖的命名都暗示了它们提供的某种或某类功能。比如我们想以Thymeleaf为Web视图,用JPA来实现数据持久化,因此在构建文件里还需要Thymeleaf和Spring Data JPA的起步依赖。

(1)排除传递依赖

如果我们不需要使用jackson的传递依赖,(虽然放着也没啥影响),我们可以这么使用:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
</exclusion>
</exclusions>
</dependency>

(2) 覆盖传递依赖

另一方面,也许项目需要Jackson,但你需要用另一个版本的Jackson来进行构建,而不是Web起步依赖里的那个。假设Web起步依赖引用了Jackson 2.3.4,但你需要使用2.4.3 。在Maven里,你可以直接在pom.xml中表达诉求,就像这样

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>

Maven总是会用最近的依赖,也就是说,你在项目的构建说明文件里增加的这个依赖,会覆盖传递依赖引入的另一个依赖。

猜你喜欢

转载自blog.csdn.net/qq_33223299/article/details/86132108
今日推荐