首页 > 其他分享 >Spring Boot 入门

Spring Boot 入门

时间:2022-12-19 20:04:16浏览次数:61  
标签:入门 spring boot jar Boot Spring 注解

​​spring​​ Boot是Spring社区较新的一个项目。该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人的人更快的对Spring进行入门体验,让​​Java​​开发也能够实现Ruby on Rails那样的生产效率
为Spring生态系统提供了一种固定的、约定优于配置风格的框架。

Spring Boot具有如下特性:

  • 为基于Spring的开发提供更快的入门体验
  • 开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求。
  • 提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。
  • Spring Boot并不是不对Spring功能上的增强,而是提供了一种快速使用Spring的方式

Spring Boot 系列

由于我博客Spring Boot 系列文章还不够多,所以暂时不打算创建专栏,如果再多几篇我就建专栏。

  1. ​​Spring Boot 入门​​
  2. ​​Spring Boot 属性配置和使用​​
  3. ​​Spring Boot 集成MyBatis​​
  4. ​​Spring Boot 静态资源处理​​

本文根据官方文档深入讲解一段代码

简单例子

Spring Boot建议使用Maven或Gradle,本文以Maven为例。

首先创建一个一般的Maven项目,有一个pom.xml和基本的​​src/main/java​​结构。

在​​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>

<groupId>com.github.abel533</groupId>
<artifactId>spring-boot</artifactId>
<version>1.0-SNAPSHOT</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.0.RELEASE</version>
</parent>

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

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>

首先是增加了​​<parent>​

增加父pom比较简单,而且​​spring-boot-starter-parent​​包含了大量配置好的依赖管理,在自己项目添加这些依赖的时候不需要写<version>版本号

使用父pom虽然简单,但是有些情况我们已经有父pom,不能直接增加​​<parent>​​时,可以通过如下方式:

<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.2.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

java.version属性

上面pom.xml虽然没有出现这个属性,这里要特别提醒。

Spring默认使用jdk1.6,如果你想使用jdk1.8,你需要在​​pom.xml​​​的属性里面添加​​java.version​​,如下:

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

添加spring-boot-starter-web依赖

Spring通过添加​​spring-boot-starter-*​这样的依赖就能支持具体的某个功能

我们这个示例最终是要实现web功能,所以添加的是这个依赖。

更完整的功能列表可以查看:​​using-boot-starter-poms​

添加spring-boot-maven-plugin插件

该插件支持多种功能,常用的有两种,第一种是打包项目为可执行的jar包

在项目根目录下执行​​mvn package​​​将会生成一个可执行的jar包,jar包中包含了所有依赖的jar包,只需要这一个jar包就可以运行程序,使用起来很方便。该命令执行后还会保留一个​​XXX.jar.original​​的jar包,包含了项目中单独的部分。

生成这个可执行的jar包后,在命令行执行​​java -jar xxxx.jar​​即可启动项目。

另外一个命令就是​mvn spring-boot:run​,可以直接使用tomcat​(默认)启动项目。

在我们开发过程中,我们需要经常修改,为了避免重复启动项目,我们可以启用热部署。

​Spring-Loaded​​项目提供了强大的热部署功能,添加/删除/修改 方法/字段/接口/枚举 等代码的时候都可以热部署,速度很快,很方便。

想在​​Spring Boot​​​中使用该功能非常简单,就是在​​spring-boot-maven-plugin插件下面添加依赖:

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
</dependencies>

添加以后,通过​​mvn spring-boot:run​​启动就支持热部署了。

注意:使用热部署的时候,需要IDE编译类后才能生效,你可以打开自动编译功能,这样在你保存修改的时候,类就自动重新加载了。

创建一个应用类

我们创建一个​​Application​​类:

@RestController
@EnableAutoConfiguration
public class Application {

@RequestMapping("/")
String home() {
return "Hello World!";
}

@RequestMapping("/now")
String hehe() {
return "现在时间:" + (new Date()).toLocaleString();
}

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

}

注意

Spring Boot建议将我们​​main​​方法所在的这个主要的配置类配置在根包名下。

类似如下结构:

com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java

在​​Application.java​​​中有​​main​​方法。

因为默认和包有关的注解,默认包名都是当前类所在的包,例如​​@ComponentScan, @EntityScan, @SpringBootApplication​​注解。

@RestController

因为我们例子是写一个web应用,因此写的这个注解,这个注解相当于同时添加​​@Controller​​​和​​@ResponseBody​​注解。

@EnableAutoConfiguration

Spring Boot建议只有一个带有该注解的类。

@EnableAutoConfiguration作用:Spring Boot会自动根据你jar包的依赖来自动配置项目。例如当你项目下面有​​HSQLDB​​​的依赖时,Spring Boot会创建默认的内存​​数据库​​的数据源​​DataSource​​​,如果你自己创建了​​DataSource​​​,Spring Boot就不会创建默认的​​DataSource​​。

如果你不想让Spring Boot自动创建,你可以配置注解的​​exclude​​属性,例如:

@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}

@SpringBootApplication

由于大量项目都会在主要的配置类上添加​​@Configuration,@EnableAutoConfiguration,@ComponentScan​​三个注解。

因此Spring Boot提供了​​@SpringBootApplication​​注解,该注解可以替代上面三个注解(使用Spring注解继承实现)。

home等方法

@RequestMapping("/")
String home() {
return "Hello World!";
}

@RequestMapping("/now")
String hehe() {
return "现在时间:" + (new Date()).toLocaleString();
}

这些方法都添加了​​@RequestMapping("xxx")​​,这个注解起到路由的作用。

启动项目SpringApplication.run

启动Spring Boot项目最简单的方法就是执行下面的方法:

SpringApplication.run(Application.class, args);

该方法返回一个​​ApplicationContext​​​对象,使用注解的时候返回的具体类型是​​AnnotationConfigApplicationContext​​​或​​AnnotationConfigEmbeddedWebApplicationContext​​,当支持web的时候是第二个。

除了上面这种方法外,还可以用下面的方法:

SpringApplication application = new SpringApplication(Application.class);
application.run(args);

​SpringApplication​​包含了一些其他可以配置的方法,如果你想做一些配置,可以用这种方式。

除了上面这种直接的方法外,还可以使用​​SpringApplicationBuilder​​:

new SpringApplicationBuilder()
.showBanner(false)
.sources(Application.class)
.run(args);

当使用SpringMVC的时候由于需要使用子容器,就需要用到​​SpringApplicationBuilder​​​,该类有一个​​child(xxx...)​​方法可以添加子容器。

运行

在IDE中直接直接执行main方法,然后访问​​http://localhost:8080​​即可。

另外还可以用上面提到的​​mvn​​​,可以打包为可执行jar包,然后执行​​java -jar xxx.jar​​。

或者执行​​mvn spring-boot:run​​运行项目。

 




标签:入门,spring,boot,jar,Boot,Spring,注解
From: https://blog.51cto.com/u_15147537/5953759

相关文章

  • Spring处理跨域请求
    [nio-8080-exec-8]o.s.web.cors.DefaultCorsProcessor    :SkipCORSprocessing:requestisfromsameorigin一次正常的请求最近别人需要调用我们系统的某一个......
  • 入门练习4-16
    这题很简单,也是余数,余数0就是偶,非0是奇数,需要注意是小于等于输入,因为题目输入15显示了15,#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intmain(){inta,i;print......
  • How to use JDBC-Authentication of Spring Boot/Spring Security with Flyway
     java.lang.IllegalStateException:FailedtoloadApplicationContextatorg.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadCon......
  • 应用笔记 | TSMaster快速入门篇(3)-Trace窗口功能分析图解
    概述Trace窗口是做总线分析时最常用的窗口,主要用于记录总线测量时的各种活动。一、设置显示刷新率为了降低软件CPU占用率,Trace窗口提供了几种显示刷新率让用户选择。如下......
  • Go语言入门第三节 Go 语言面向对象机制
    Go语言面向对象编程Go语言的面相对象和主流语言有很大的不同,如Go语言里是不支持继承,Go语言的接口实现也不太一样1.数据和行为的封装数据的封装定义一个结构体typeEmploye......
  • GO语言入门第五节 Go语言的并发编程
    写在前面因为并发相关的东西又多又长。。所以这个专题会分成多篇博客来写啦。。本篇文章包括携程机制,携程和线程的区别使用锁来控制并发使用通道(channel)来控制并发通道的多......
  • RabbitMQ入门
    1.概述1.1MQ的相关概念什么是MQMQ(messagequeue),消息队列,本质就是一个队列,遵循FIFFO先进先出原则。什么是FIFO呢?打个比方,喝啤酒的时候,酒量非常好,喝下的酒都去厕所......
  • 刷题笔记——1043.[编程入门]三个数字的排序
    题目1043.[编程入门]三个数字的排序代码whileTrue: try: li=list(map(int,input().strip().split())) li.sort() foriinli: print(i,end='') except......
  • 搭建SpringBoot+Promitheus+Grafana自动监控平台
    Springboot部分:pom.xml<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dep......
  • springboot通过Referer防止跨站点请求伪造
    原文链接:https://blog.csdn.net/qq_44154912/article/details/127439461防止跨站点请求伪造验证“Referer”头的值,并对每个提交的表单使用one-time-nonce在application.......