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

查看初始化的 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的自动配置。

application.yml跟其功能一致,主要是yml文件其配置格式更加清楚.

server:
  port: 8090
  session-timeout: 30
  tomcat.max-threads: 0
  tomcat.uri-encoding: UTF-8

spring:
  datasource:
    url : jdbc:mysql://localhost:3306/my
    username : root
    password : root
    driverClassName : com.mysql.jdbc.Driver
  jpa:
    database : MYSQL
    show-sql : true
    hibernate:
      ddl-auto : update
      naming-strategy : org.hibernate.cfg.ImprovedNamingStrategy
    properties:
      hibernate:
        dialect : org.hibernate.dialect.MySQL5Dialect

注意:yml  配置文件的语法

  1.  在 properties  文件中是以 “.” ” 进行分割 ,在 在 yml  中使用 “ : ”进行分割
  2. yml  的数据格式和 json  的格式很像,都是 K-V  结构的。并且是通过 “ : ” 赋值
  3. 在 yml  中缩进一定不能使用 TAB  件,否则会报错。
  4. 每个 K 后面一定要加空格

四  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-devtools</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总是会用最近的依赖,也就是说,你在项目的构建说明文件里增加的这个依赖,会覆盖传递依赖引入的另一个依赖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值