遇见狂神说SpringBoot笔记
准备⼯作
我们将学习如何快速的创建⼀个Spring Boot应⽤,并且实现⼀个简单的Http请求处理。通过这个例⼦对Spring Boot有⼀个初步的了解,并体验其结构简单、开发快速的特性。
我的环境准备:
java version “1.8.0_181”
Maven-3.6.1
SpringBoot 2.x 最新版
开发⼯具:
IDEA
Ctrl+N按名字搜索类
Ctrl+Shift+N按⽂件名搜索⽂件
Ctrl+F/Ctrl+Shift+F按照⽂本的内容查
Shift+Shift搜索任何东西
没有改动代码(只改变thymeleaf) build ctrl + f9 即可
创建基础项⽬说明
Spring官⽅提供了⾮常⽅便的⼯具让我们快速构建应⽤
**项⽬创建⽅式⼀:**使⽤Spring Initializr 的 Web页⾯创建项⽬
2、填写项⽬信息
3、点击”Generate Project“按钮⽣成项⽬;下载此项⽬
4、解压项⽬包,并⽤IDEA以Maven项⽬导⼊,⼀路下⼀步即可,直到项⽬导⼊完毕。
5、如果是第⼀次使⽤,可能速度会⽐较慢,包⽐较多、需要耐⼼等待⼀切就绪。
**项⽬创建⽅式⼆:**使⽤ IDEA 直接创建项⽬
@Configuration
加上@Configuration注解主要是给我们的类加上了cglib代理。在执⾏我们的配置类的⽅法时,会执⾏cglib代理类中的⽅法
创建⾃定义的类 加上@bean 返回值类型写对 这样就把⾃定义的⼀个类放⼊了
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-MXGCTtTB-1642911527556)
(SpringBoot.assets/image-20220121120417121.png)]
package;
import Bean;
import Configuration;
@Configuration
public class ShiroConfig {
@Bean
public UserRealm userRealm(){
return new UserRealm();
}
}
package;
import AuthenticationException;
import AuthenticationInfo;
import AuthenticationToken;
import AuthorizationInfo;
import AuthorizingRealm;
import PrincipalCollection;
//⾃定义的UserRealm extends AuthorizingRealm
public class UserRealm extends AuthorizingRealm {
//授权
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection){
System.out.println("执⾏了授权=》doGetAuthorizationInfo");
return null;
}
//认证
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken)throws AuthenticationException { System.out.println("执⾏了认证=》doGetAuthenticationInfo");
return null;
}
}
1、创建⼀个新项⽬
2、选择spring initalizr , 可以看到默认就是去官⽹的快速构建⼯具那⾥实现
3、填写项⽬信息
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-CyQqofEp-1642911527558) (SpringBoot.assets/image-20210529191651720.png)]
4、选择初始化的组件(初学勾选 Web 即可)
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-T2ZjLs31-1642911527560) (SpringBoot.assets/image-20210529191724864.png)]
5、填写项⽬路径
6、等待项⽬构建成功
项⽬结构分析:
通过上⾯步骤完成了基础项⽬的创建。就会⾃动⽣成以下⽂件。
1、程序的主启动类
2、⼀个 application.properties 配置⽂件
3、⼀个 测试类
4、⼀个 l
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-bqPnUtav-1642911527565) (SpringBoot.assets/image-20210529192855033.png)]
打开l,看看Spring Boot项⽬的依赖:
<!-- ⽗依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<!-- web场景启动器: tomcat,dispatcherServlet,xml 都不需要配置了 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--spring-boot-starter所有的Springboot依赖都是使⽤这个开头的-->
<!-- springboot单元测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<!-- 剔除依赖 -->
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 打包插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
springboot结构<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-XYWg0ofx-1642911527567) (SpringBoot.assets/image-20211229103150672.png)]
编写⼀个http接⼝
1、在主程序的同级⽬录下,新建⼀个controller包,⼀定要在同级⽬录下,否则识别不到
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-PYJbwrqK-1642911527569) (SpringBoot.assets/image-20211229101802844.png)]
2、在包中新建⼀个HelloController类
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return"Hello World";
}
}
3、编写完毕后,从主程序启动项⽬,浏览器发起请求,看页⾯返回;控制台输出了 Tomcat 访问的端⼝号!
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-hvOqLFvu-1642911527573) (SpringBoot.assets/image-20211229101303954.png)]
简单⼏步,就完成了⼀个web接⼝的开发,SpringBoot就是这么简单。所以我们常⽤它来建⽴我们的
微服务项⽬!将项⽬打成jar包,点击 maven的 package
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-tQJFY65W-1642911527575) (SpringBoot.assets/image-20211229101330641.png)]
如果遇到以上错误,可以配置打包时 跳过项⽬运⾏测试⽤例
<!--
在⼯作中,很多情况下我们打包是不想执⾏测试⽤例的
可能是测试⽤例不完事,或是测试⽤例会影响数据库数据
跳过测试⽤例执
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!--跳过项⽬运⾏测试⽤例-->
<skipTests>true</skipTests>
</configuration>
</plugin>
如果打包成功,则会在target⽬录下⽣成⼀个 jar 包
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-VWleniNS-1642911527576) (SpringBoot.assets/image-20211229101422121.png)]
打成了jar包后,就可以在任何地⽅运⾏了!OK
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-PG4BIEZD-1642911527578) (SpringBoot.assets/image-20211229104940346.png)]
到项⽬位置,
在空⽩处按住shift+右键 选择在此处打开powershell窗⼝,此时打开的窗⼝就是jar⽂件所在的当前⽬录
运⾏ 输⼊命令 java -jar ./ 按住tab ⾃动补全 jar⽂件名
更改项⽬端⼝号:在application.properties中设置
server.port=8081
彩蛋
如何更改启动时显⽰的字符拼成的字母,SpringBoot呢?也就是 banner 图案;
只需⼀步:到项⽬下的 resources ⽬录下新建⼀个 即可。
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-jyKE3r3f-1642911527581)
(SpringBoot.assets/image-20211229101447567.png)]
运⾏原理初探
我们之前写的HelloSpringBoot,到底是怎么运⾏的呢,Maven项⽬,我们⼀般从l⽂件探究起;
spring-boot-dependencies:核⼼依赖在⽗⼯程中
我们在写或者引⼊⼀些Springboot依赖的时候,不需要指定版本,就因为有这些版本仓库
⽗依赖
其中它主要是依赖⼀个⽗项⽬,主要是管理项⽬的资源过滤及插件!
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/><!-- lookup parent from repository -->
</parent>
点进去,发现还有⼀个⽗依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
这⾥才是真正管理SpringBoot应⽤⾥⾯所有依赖版本的地⽅,SpringBoot的版本控制中⼼;
以后我们导⼊依赖默认是不需要写版本;但是如果导⼊的包没有在依赖中管理着就需要⼿动配置版本了;
启动器 spring-boot-starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
springboot-boot-starter-xxx:就是spring-boot的场景启动器
spring-boot-starter-web:帮我们导⼊了web模块正常运⾏所依赖的组件;
SpringBoot将所有的功能场景都抽取出来,做成⼀个个的starter (启动器),只需要在项⽬中引⼊这些starter即可,所有相关的依赖都会导⼊进来 , 我们要⽤什么功能就导⼊什么样的场景启动器即可 ;我们未来也可以⾃⼰⾃定义 starter;
主启动类
分析完了 l 来看看这个启动类
默认的主启动类
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论