入门、核心配置、原理
SpringBoot
- 简化Spring
- 没有xml
- 衍生版本
- 快捷创建项目
官网
spring.io
自学:Spring Security
创建项目
使用idea通过start.spring.io网站创建项目
修改至Sprng1.5.9RELEASE版本
注解:
@RestController:
@Controller和@ResponseBody俩注解的合体,返回JSON字符串;
@GetMapping("/"):
@RequestMapping(method = RequestMethod.GET)就是此注解的化身,很好懂
@SpringBootApplication
这个注解标注的类就是一个主程序类,不可以删除,代表当前项目是一个SpringBoot项目
由四个元注解和三个注解组合而成:
java中元注解有四个: @Retention @Target @Document @Inherited;
@Retention()注解的保留位置:
- @Retention(RetentionPolicy.SOURCE) //注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
- @Retention(RetentionPolicy.CLASS) // 注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
- @Retention(RetentionPolicy.RUNTIME) // 注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
@Target():注解的作用目标
- @Target(ElementType.TYPE) //接口、类、枚举
- @Target(ElementType.FIELD) //字段、枚举的常量
- @Target(ElementType.METHOD) //方法
- @Target(ElementType.PARAMETER) //方法参数
- @Target(ElementType.CONSTRUCTOR) //构造函数
- @Target(ElementType.LOCAL_VARIABLE)//局部变量
- @Target(ElementType.ANNOTATION_TYPE)//注解
- @Target(ElementType.PACKAGE) //包
@Document:说明该注解将被包含在javadoc中
@Inherited:说明子类可以继承父类中的该注解
组合注解三个:
@SpringBootConfiguration:
@SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。其中的值可以取一下参数:
-
basePackageClasses:对basepackages()指定扫描注释组件包类型安全的替代。
-
excludeFilters:指定不适合组件扫描的类型。
-
includeFilters:指定哪些类型有资格用于组件扫描。
-
lazyInit:指定是否应注册扫描的beans为lazy初始化。
-
nameGenerator:用于在Spring容器中的检测到的组件命名。
-
resourcePattern:控制可用于组件检测的类文件。
-
scopedProxy:指出代理是否应该对检测元件产生,在使用过程中会在代理风格时尚的范围是必要的。
-
scopeResolver:用于解决检测到的组件的范围。
-
useDefaultFilters:指示是否自动检测类的注释
@EnableAutoConfiguration
@EnableAutoConfiguration也是一个复合Annotation。其中,最关键的要属@Import(AutoConfigurationImportSelector.class),借助AutoConfigurationImportSelector,@EnableAutoConfiguration可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器。
自动配置幕后英雄:SpringFactoriesLoader。它属于Spring框架私有的一种扩展方案,其主要功能就是从指定的配置文件META-INF/spring.factories加载配置。配合@EnableAutoConfiguration使用的话,它更多是提供一种配置查找的功能支持,即根据@EnableAutoConfiguration的完整类名org.springframework.boot.autoconfigure.EnableAutoConfiguration作为查找的Key,获取对应的一组@Configuration类
@ComponentScan
@ComponentScan这个注解在Spring中很重要,它对应XML配置中的元素,@ComponentScan的功能其实就是自动扫描并加载符合条件的组件(比如@Component和@Repository等)或者bean定义,最终将这些bean定义加载到IOC容器中。我们可以通过basePackages等属性来细粒度的定制@ComponentScan自动扫描的范围,如果不指定,则默认Spring框架实现会从声明@ComponentScan所在类的package进行扫描。
application.properties和application.yml
# 端口号
server.port=8089
# 端口号
server:
port: 8090
以properties为主,并且两个文件互补。application.properties为应用的核心属性配置文件
打包:
SpringBoot的默认打包方式:jar,可以省略
<packaging>jar</packaging>
SpringBoot的默认插件,给项目打包,打成一个可执行的jar包,区别于普通jar
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
版本控制中心:
porm.xml-->spring-boot-starter-web-->spring-boot-starters-->spring-boot-parent-->spring-boot-dependencies
为什么SpringBoot依赖不需要写版本号,SpringBoo有自己的版本控制器(版本控制中心),不需要开发人员维护各个依赖jar的版本,还可以防止版本冲容
banner图:
在resources文件下新建File,命名为banner.txt,在里面粘贴需要显示的banner图。
- https://www.degraeve.com/img2txt.php 图片自动生成banner图
- https://www.bootschool.net/ascii-art 文字生成艺术字体banner图,预设banner
- https://blog.csdn.net/Xbinbin/article/details/99076467?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.channel_param 七彩如来佛
SpringBoot邮件发送
porm.xml中需求的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
yml中的属性配置
spring:
mail:
# 配置 SMTP 服务器地址
host: smtp.qq.com
# 发送者邮箱
username: 1053886691@qq.com
# 配置密码,注意不是真正的密码,而是刚刚申请到的授权码
password: lcrjkwdqzvrdbbac
# 端口号465或587
port: 587
# 默认的邮件编码为UTF-8
default-encoding: UTF-8
# 配置SSL 加密工厂
properties:
mail:
smtp:
socketFactoryClass: javax.net.ssl.SSLSocketFactory
#表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误
debug: true
组件写法
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* Created on 2021/7/15.
* <p>
* Author : Lcywings
* <p>
* Description :
*/
@Component
public class SendMailSms implements SendMail {
@Autowired
JavaMailSender javaMailSender;
public void send() {
// 构建一个邮件对象
SimpleMailMessage message = new SimpleMailMessage();
// 设置邮件主题
message.setSubject("KH-89-马珏浩");
// 设置邮件发送者,这个跟application.yml中设置的要一致
message.setFrom("1053886691@qq.com");
// 设置邮件接收者,可以有多个接收者,中间用逗号隔开,以下类似
// message.setTo("10*****16@qq.com","12****32*qq.com");
message.setTo("1098468483@qq.com");
// 设置邮件抄送人,可以有多个抄送人
message.setCc("1053886691@qq.com");
// 设置隐秘抄送人,可以有多个
message.setBcc("1053886691@qq.com");
// 设置邮件发送日期
message.setSentDate(new Date());
// 设置邮件的正文
message.setText("使用SpringBoot的Mail启动器发邮件成功!");
// 发送邮件
javaMailSender.send(message);
}
}
Q.E.D.