管理系统搭建(8)—知识点学习

一.Spring Boot

Spring Boot是一个基于Java的开源框架,用于创建微服务。

微服务(Micro Service)是一种允许开发人员独立开发和部署服务的体系结构。每个运行的服务都有自己的流程,这实现了轻量级模型以支持业务应用程序。

1.Spring Boot基本介绍

(1)什么是Spring Boot?

Spring Boot为Java开发人员提供了一个很好的平台,可以开发一个可以运行的独立和生产级Spring应用程序。可以开始使用最少的配置,而无需进行整个Spring配置设置。

(2)使用Spring Boot的原因

1)独立运行的 Spring 项目

Spring Boot 可以以 jar 包的形式独立运行,Spring Boot 项目只需通过命令“ java–jar xx.jar” 即可运行。

2)内嵌 Servlet 容器

Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包 。

3)提供 starter 简化 Maven 配置

Spring Boot 提供了一系列的“starter”项目对象模型(POMS)来简化 Maven 配置。

4)提供了大量的自动配置

Spring Boot 提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。

5)自带应用监控

Spring Boot 可以对正在运行的项目提供监控。

6)无代码生成和 xml 配置

Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置。

2.环境配置

(1)版本配置

Spring Boot版本:2.x.x 3.x.x

JDK版本:8+

Maven版本:3.x

集成开发环境:IDE、Eclipse

(2)Spring Boot 3.x使用注意

1)java支持版本:17+

2)Maven支持版本:3.5+

3)Tomcat支持版本:10.0

4)servlet支持版本:5.0

4)Java EE变更为Jakarta EE: javax—jakarta

3.pom.xml依赖项

(1)语法规则
<project>
  <modelVersion>4.0.0</modelVersion>  <!--指定了当前pom版本-->

  <!-- 基础设置 -->
  <groupId>...</groupId> <!--整个系统的名称,-一般用反写的公司网址+项目名,比如com.moxie.hi->
  <artifactId>...</artifactId> <!--子模块名称,项目名+模块名-->
  <version>0.0.1-SNAPSHOT</version> <!--第一个数0表示大版本号;第二个数0表示分支版本号;第三个数1表示小版本号;SNAPSHOT 表示快照,另外还有alpha 内部测试、beta 公测、release 稳定、GA 正式发布-->
  <packaging>...</packaging>  <!--打包类型,可取的值有war zip pom-->
  <name>...</name> <!--项目描述名-->
  <url>...</url> <!--项目地址-->
  <description>...</description> <!--项目描述-->
  
  <dependencies>...</dependencies> <!--依赖列表-->
  <parent>...</parent>
  <dependencyManagement>...</dependencyManagement> <!--依赖的管理-->
  <modules>...</modules> <!--聚合多个模块进行编译-->
  <properties>...</properties>

  <!--构建设置 -->
  <build>...</build>
  <reporting>...</reporting>
  
 <!-- 更多项目信息 -->
  <name>...</name>
  <description>...</description>
  <url>...</url>
  <inceptionYear>...</inceptionYear>
  <licenses>...</licenses>
  <organization>...</organization>
  <developers>...</developers>
  <contributors>...</contributors>

  <!-- 环境设置-->
  <issueManagement>...</issueManagement>
  <ciManagement>...</ciManagement>
  <mailingLists>...</mailingLists> 
  <scm>...</scm>
  <prerequisites>...</prerequisites>
  <repositories>...</repositories>
  <pluginRepositories>...</pluginRepositories>
  <distributionManagement>...</distributionManagement>
  <profiles>...</profiles>
</project>
(2)依赖冲突

现有项目依赖项A和B,同时依赖C,但是A依赖1.0版本,B依赖2.0,此时依赖项冲突,删除一个版本即可

(3)POM中的继承

maven提供继承关系,子pom可以继承父pom的配置信息,因此可以在父pom中声明一些可供子pom继承的配置,实现“一次声明,多次使用”。例如

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

父pom是org.springframework.boot中spring-boot-starter-parent的3.0.1版本

4.Application.java主程序

package com.wang.library;

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

@SpringBootApplication
public class LibraryApplication {

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

}

5.Application配置文件

SpringBoot 默认使用以下 2 种全局的配置文件,其文件名是固定的。

​ application.properties

​ application.yml

(1)端口配置
server:
  port: 8080
(2)YAML 规则语法

YAML 的语法如下:

  • 使用缩进表示层级关系。
  • 缩进时不允许使用 Tab 键,只允许使用空格。
  • 缩进的空格数不重要,但同级元素必须左侧对齐。
  • 大小写敏感。
spring:
  profiles: dev
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/library
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
(3)Yaml写法

YAML 支持以下三种数据结构:

  • 对象:键值对的集合
  • 数组:一组按次序排列的值
  • 字面量:单个的、不可拆分的值

①字面量写法

字面量是指单个的,不可拆分的值,例如:数字、字符串、布尔值、以及日期等。

在 YAML 中,使用“key:[空格]value**”**的形式表示一对键值对(空格不能省略),例如:

  port: 8080

②对象写法

在 YAML 中,对象可能包含多个属性,每一个属性都是一对键值对。

使用缩进表示对象与属性的层级关系。

server:
  address: 127.0.0.1
  port: 8080

③数组写法

YAML 使用“-”表示数组中的元素,写法如下:

  tenant:
    enable: true
    ignoreTables:
    - sys_user
    - sys_user_role
    - sys_role_auth
    - sys_role
    - sys_auth

6.Spring Boot启动依赖

(1)Spring Boot Starter Actuator依赖关系用于监视和管理应用程序。

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

(2)Spring Boot Starter Security依赖项用于Spring Security。

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

(3)Spring Boot Starter Web依赖项用于编写Rest端点。

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

(4)Spring Boot Starter Thyme Leaf依赖项用于创建Web应用程序。

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

(5)Spring Boot Starter Test依赖项用于编写测试用例。

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

7.Spring Boot注释

Spring bean是Spring框架在运行时管理的对象

1.核心Spring框架注释

**Required:**它适用于bean setter方法。 它指示必须在配置时使用必需的属性填充带注释的Bean,否则它将引发异常BeanInitilizationException

示例代码:

public class Machine   
{  
    private Integer cost;  

    @Required  
    public void setCost(Integer cost)   
    {  
        this.cost = cost;  
    }  
    public Integer getCost()   
    {  
        return cost;  
    }     
}
Java

**Autowired:**Spring通过提供@Autowired注释来提供基于注释的自动装配。它用于自动连接setter方法,实例变量和构造函数上的spring bean。当使用@Autowired批注时,spring容器通过匹配data-type自动连接bean。

@Component  
public class Customer  
{  
    private Person person;  
    @Autowired  
    public Customer(Person person)
    {   
        this.person=person;  
    }  
}
Java

**Configuration:**这是一个类级别的注释。Spring容器使用@Configuration注释的类用作bean定义的源。

@Configuration  
public class Vehicle  
{  
    @BeanVehicle engine()  
    {  
        return new Vehicle();  
    }  
}
Java

**ComponentScan:**当需要扫描软件包中的bean时使用。 它与注释@Configuration一起使用。还可以指定基本软件包来扫描Spring组件。

@ComponentScan(basePackages = "com.xntutor")  
@Configuration  
public class ScanComponent  
{  
// ...  
}
Java

**Bean:**这是方法级别的注释。 它是XML <bean>标记的替代方法。 它告诉方法产生一个由Spring Container管理的bean。

@Bean  
public BeanExample beanExample()   
{  
    return new BeanExample ();  
}
Java
2.Spring Framework构造型注释

**Component:**这是一个类级别的注释,它用于将Java类标记为Bean。 在类路径中找到了一个用@Component注释的Java类。Spring框架将其拾取并将其在应用程序上下文中配置为Spring Bean。

@Component  
public class Student  
{  
    // .......  
}
Java

Controller:@Controller是类级别的注释,它是@Component的特化。 它将一个类标记为Web请求处理程序,通常用于服务网页。 默认情况下,它返回一个字符串,该字符串指示要重定向的路由。它主要与@RequestMapping注释一起使用。

@Controller  
@RequestMapping("books")  
public class BooksController   
{  
    @RequestMapping(value = "/{name}", method = RequestMethod.GET)  
    public Employee getBooksByName()   
    {  
        return booksTemplate;  
    }  
}
Java

**Service:**它也用于类级别,它告诉Spring该类包含业务逻辑。

package com.xntutor;  
@Service  
public class TestService  
{  
    public void service1()  
    {  
        //business code  
    }  
}
Java

**Repository:**这是一个类级别的注释。存储库是直接访问数据库的DAO(数据访问对象)。 存储库执行与数据库有关的所有操作。

package com.xntutor;  
@Repository   
public class TestRepository  
{  
    public void delete()  
    {     
        //persistence code  
    }  
}
Java
3.Spring Boot注释
  • @EnableAutoConfiguration:它自动配置类路径中存在的bean,并将其配置为运行方法。 在Spring Boot 1.2.0发行版中减少了使用此注释的方法,因为开发人员提供了注释的替代方法,即@SpringBootApplication
  • @SpringBootApplication:它是三个注释@EnableAutoConfiguration@ComponentScan@Configuration的组合。
4.Spring MVC和REST批注
  • @RequestMapping:用于映射Web请求。它具有许多可选元素,例如消耗,标头,方法,名称,参数,路径和值。 我们将这些元素与类以及方法一起使用。
@Controller  
public class BooksController   
{  
@RequestMapping("/computer-science/books")  
public String getAllBooks(Model model)  
{  
    //application code  
    return "bookList";  
}
Java
  • **GetMapping:**它将HTTP GET请求映射到特定的处理程序方法。它用于创建获取的Web服务端点,而不使用:@RequestMapping(method = RequestMethod.GET)
  • **PostMapping:**它将HTTP POST请求映射到特定的处理程序方法。它用于创建创建的Web服务端点,而不使用:@RequestMapping(method = RequestMethod.POST)
  • **PutMapping:**它将HTTP PUT请求映射到特定的处理程序方法。它用于创建可创建或更新的Web服务终结点,不使用以下方法:@RequestMapping(method = RequestMethod.PUT)
  • **DeleteMapping:**它将HTTP DELETE请求映射到特定的处理程序方法。它用于创建删除资源的Web服务端点。使用它而不是使用:@RequestMapping(method = RequestMethod.DELETE)
  • **PatchMapping:**它将HTTP PATCH请求映射到特定的处理程序方法。使用它而不是使用:@RequestMapping(method = RequestMethod.PATCH)
  • **RequestBody:**用于将HTTP请求与方法参数中的对象绑定。在内部,它使用HTTP MessageConverters转换请求的主体。当使用@RequestBody注释方法参数时,Spring框架会将传入的HTTP请求主体绑定到该参数。
  • **ResponseBody:**它将方法返回值绑定到响应主体。它告诉Spring Boot Framework将一个返回的对象序列化为JSON和XML格式。
  • **PathVariable:**用于从URI中提取值。它最适合RESTful Web服务,其中URL包含路径变量。可以在一个方法中定义多个@PathVariable
  • **RequestParam:**用于从URL中提取查询参数。也称为查询参数。它最适合Web应用程序。如果URL中不存在查询参数,则可以指定默认值。
  • **RequestHeader:**用于获取有关HTTP请求标头的详细信息。将此注释用作方法参数。注释的可选元素是:name, required, value, defaultValue。对于标题中的每个细节,应该指定单独的注释。可以在一个方法中多次使用它
  • **RestController:**可以将其视为@Controller@ResponseBody批注的组合。 @RestController注释本身使用@ResponseBody注释进行注释。它消除了使用@ResponseBody注释每个方法的需要。
  • **RequestAttribute:**它将方法参数绑定到请求属性。它提供了从控制器方法方便地访问请求属性的方法。借助@RequestAttribute批注,我们可以访问服务器端填充的对象。

二.Maven

1.Maven是什么

Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。通俗点就是通过pom.xml文件的配置获取jar包不用手动的去添加jar包

2.Maven的作用

(1)构建工程

(2)管理jar

(3)编译代码

(4)自动运行单元测试

(5)打包

(6)生成报表

(7)部署项目,生成web站点。

3.Maven的仓库

仓库就是存放jar包的地方,通过pom.xml中通过设置索引来到仓库中寻找jar包

(1)本地仓库

用来存储从远程仓库或者中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找,默认本地仓库的位置在user.dir/.m2/repository,{user.dir}表示 windows 用户目录

(2)第三方仓库

又称为内部中心仓库,又称为私服。

私服:一般由公司自己设立,只为本公司内部共享使用,它既可以作为公司内部构建协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率使用私服为了减少对中央仓库的访问私服可以使用的是局域网,中央仓库必须使用外网。也就是一般公司都会创建这种第三方仓库,保证项目开发时,项目所需用的jar都从该仓库中拿,每个人的版本就都一样。

(3)中央仓库

在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它含了世界上大部分流行的开源项目构件。

4.java项目结构

.settings —— 工具生成的文件

src —— 源码

​ main

​ java —— 项目源码

​ resources —— 配置文件

​ test —— 测试文件

​ java —— 测试源码

​ resources —— 测试配置文件

target —— 编译文件

pom.xml —— 依赖配置文件

5.Maven的常用命令

mvn compile //编译源代码

mvn test //运行应用程序中的单元测试

mvn site //生成项目相关信息的网站

mvn package //依据项目生成 jar 文件

mvn install //在本地 Repository 中安装 jar

mvn clean //清除目标目录中的生成结果

mvn jar //只打jar包

6.Maven的生命周期

(1)maven对项目构建过程分为三套相互独立的生命周期,这里说的三套而且是相互独立:

Clean Lifecycle :在进行真正的构建之前进行一些清理工作。

Default Lifecycle :构建的核心部分,编译,测试,打包,部署等等。

Site Lifecycle :生成项目报告,站点,发布站点。

(2)一个项目的生命周期

使用maven完成项目的构建,项目构建包括:清理,编译,测试,报告,打包,部署等过程,maven将这些过程规范为一个生命周期

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GGAPTX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值