Spring Boot学习(三)解析 Spring Boot 项目

本文借鉴: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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.9.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.zhbf</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot</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-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </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>

  我们可以看到一个比较陌生一些的标签 <parent> ,这个标签是在配置 Spring Boot 的父级依赖:

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

  PS:spring-boot-starter-parent 是一个特殊的 starter ,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖就可以省去 version 标签。

二、应用入口类

  Spring Boot 项目通常有一个名为 *Application 的入口类(如SpringbootApplication.java),入口类里有一个 main 方法, 这个 main 方法其实就是一个标准的 Javay(源代码编译的文件) 应用的入口方法。

@SpringBootApplication

  (1)是 Spring Boot 的核心注解,它是一个组合注解,该注解组合了:@Configuration@EnableAutoConfiguration@ComponentScan; 若不使用 @SpringBootApplication 注解也可以使用这三个注解代替。

  (2)Spring Boot 还会自动扫描 @SpringBootApplication 所在类的同级包以及下级包里的 Bean ,所以入口类建议就配置在 grounpID + arctifactID 组合的包名下(这里为 com.zhbf.springboot 包)

@EnableAutoConfiguration

  让 Spring Boot 根据类路径中的 jar 包依赖为当前项目进行自动配置,例如,添加了 spring-boot-starter-web 依赖,会自动添加 Tomcat 和 Spring MVC 的依赖,那么 Spring Boot 会对 Tomcat 和 Spring MVC 进行自动配置。

三、Spring Boot 的配置文件

  • Spring Boot 使用一个全局的配置文件 application.propertiesapplication.yml,放置在【src/main/resources】目录或者类路径的 /config 下。
  • Spring Boot 不仅支持常规的 properties 配置文件,还支持 yaml 语言的配置文件。yaml 是以数据为中心的语言,在配置数据的时候具有面向对象的特征。
  • Spring Boot 的全局配置文件的作用是对一些默认配置的配置值进行修改。

  我们同样的将 Tomcat 默认端口设置为 8080 ,并将默认的访问路径从 “/” 修改为 “/test” 时,使用 properties 文件和 yml 文件的区别如上图。

  PS:yml 需要在 “:” 后加一个空格,幸好 IDEA 很好地支持了 yml 文件的格式有良好的代码提示。

四、赋值

  在学习Spring的时候我们知道要对一个pojo类进行赋值可以使用@value标签,但是当类增多时,用@value赋值的方式就会使得项目很臃肿,这里就不详细说明@value标签的使用方式了,我们可以使用Spring boot的配置文件来进行赋值:

  我们可以把配置信息封装成一个类,首先在我们的 id,name 和 age 前加一个 user 前缀,然后新建一个 User 的类用来封装这些信息,并用上两个注解:

  • @Component:表明当前类是一个 Java Bean
  • @ConfigurationProperties(prefix = "student"):表示获取前缀为 user 的配置信息

这样我们就可以在控制器中使用,重启得到正确信息:

五、Spring Boot 热部署

  在目前的 Spring Boot 项目中,当发生了任何修改之后我们都需要重新启动才能够正确的得到效果,这样会略显麻烦,Spring Boot 提供了热部署的方式,当发现任何类发生了改变,就会通过 JVM 类加载的方式,加载最新的类到虚拟机中,这样就不需要重新启动也能看到修改后的效果了。

  解决方式:我们往 pom.xml 中添加一个依赖就可以了

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
</dependency>

  重新启动 Spring Boot ,然后修改任意代码,就能观察到控制台的自动重启现象

原文地址:https://www.cnblogs.com/riches/p/11637900.html

时间: 2024-08-02 15:00:43

Spring Boot学习(三)解析 Spring Boot 项目的相关文章

【Spring Boot学习之一】Spring Boot简介

环境 Java1.8 Spring Boot 1.3.2 一.Spring Boot特点1.使用java运行项目,内置tomcat,无需外部容器:2.减少XML配置,使用properties文件和注解:3.Spring Boot对各个Spring技术进行了封装,并不是产生新技术,方便使用了Spring: 趋势:面向服务架构(SOA)转向微服务架构,4.Spring Cloud基于Spring Boot,Spring Cloud(HTTP+rest),基于Spring Boot中WEB组件(Spr

【Spring Boot学习之四】Spring Boot事务管理

环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2 一.springboot整合事务事务分类:编程事务.声明事务(XML.注解),推荐使用注解方式,springboot默认集成事物,只主要在方法上加上@Transactional即可1.controller package com.wjy.controller; import org.springframework.beans.factory.annotation.Autowired; import org.spri

Spring Boot学习——第一个Spring Boot程序

依照下面的步骤创建项目: 点击 Next 项目介绍: Application.java中的主要代码: @SpringBootApplication public class ReaderApplication { public static void main(String[] args) { SpringApplication.run(ReaderApplication.class, args); } } @SpringBootApplication 启动器必须要有该注解注: @EnableA

Spring boot 学习 四:spring boot 配置文件 application.yml

一 关于端口: spring boot的默认端口是8080, 如果想更改的话,在配置文件中做如下配置.ServerProperties.class会去读取这个值. server: port: 8081 另外一种方法是:如果你只是想在启动的时候修改一次端口号的话,可以用命令行参数来修改端口号.配置如下:java -jar 打包之后的SpringBoot.jar  --server.port=8000 二   @RestController(spring还有另外一个注解 @Controller) 即

Spring学习三、Spring配置与DI依赖注入

五.Spring配置 5.1别名 <!-- 别名--> <alias name="user" alias="user2"/> 5.2 Bean的配置 <!-- id : bean的唯一标识符,相当于对象名 class : 全限定名 包名 + 类名 name : 也是别名,name可以同时起多个别名 --> <bean id="userT" class="cn.imut.pojo.User&quo

Spring shiro学习(三)

接上,本来想继续写,结果一输入就chrome崩溃,我只能另开一个了 sessionListeners.sessionFactory配置 <!-- 会话监听器 --> <bean id="sessionListener" class="com.zheng.upms.client.shiro.listener.UpmsSessionListener"/> <!-- session工厂 --> <bean id="ses

Spring基础学习(三)&mdash;详解Bean(下)

一.Bean的生命周期 1.概述      Spring IOC容器可以管理Bean的生命周期,Spring 允许在Bean的生命周期的特定点执行定制的任务.      Spring IOC容器对Bean的生命周期进行管理的过程:      (1)通过构造器或工厂方法创建Bean实例.      (2)为Bean的属性设置值和对其他Bean的引用.      (3)调用Bean的初始化方法.      (4)Bean可以使用了.      (5)当容器关闭时,调用Bean的销毁方法.     

spring框架学习(三)——AOP( 面向切面编程)

AOP 即 Aspect Oriented Program 面向切面编程 首先,在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能. 所谓的核心业务,比如登陆,增加数据,删除数据都叫核心业务 所谓的周边功能,比如性能统计,日志,事务管理等等 周边功能在Spring的面向切面编程AOP思想里,即被定义为切面 在面向切面编程AOP的思想里面,核心业务功能和切面功能分别独立进行开发 然后把切面功能和核心业务功能 "编织" 在一起,这就叫AOP 原理图 1. 功能分两大类,辅助功能和

Spring框架学习六:Spring对JDBC的支持

JdbcTemplate简介 为了使JDBC更加易于使用,Spring 在 JDBC API 上定义了一个抽象层,以此建立一个 JDBC 存取框架 作为 Spring JDBC 框架的核心,JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法.每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务.通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取工作量降到最低. #添加c3p0数据库连接池 jdbc.user=root jdbc.password=000 jdbc.jd

Spring框架学习之--搭建spring框架

此文介绍搭建一个最最简单的spring框架的步骤 一.创建一个maven项目 二.在pom.xml文件中添加依赖导入spring框架运行需要的相关jar包 注意:在引入jar包之后会出现org.junit里面的包无法使用,参考https://blog.csdn.net/he99774/article/details/78254262 <dependencies> <!-- 框架运行时的基本依赖 --> <dependency> <groupId>junit&