ps: 最下面四个都是中间件技术
这个里面SpringBoot知识很全(可以查查):
https://www.cnblogs.com/fishpro/p/10625506.html
认识SpringBoot
ssm项目打war包,在Tomcat里面运行
Springboot,jar包,内嵌Tomcat
SpringBoot 简化配置,约定大于配置(Maven、Docker也是)
IDEA快速创建 第一个SpringBoot程序
创建SpringBoot=>在IDEA里面直接创建,
选择
web项目最少需要
可以看到程序的主入口Application(含main)(不要改动):
下一步注意,几个文件夹位置都和Application同级别:
然后写个Controller:
然后浏览器访问:
好了,完成了SpringBoot--Web项目的 helloworld !
pom.xml
dependencies里面:
spring-boot-starter-web=》web依赖:Tomcat默认嵌入式容器 dispatcherServlet xml ...
spring-boot-starter-test=》单元测试
(Springboot所有的依赖都是spring-boot-starter开头的)
1)application.properties (另一种方法是用application.yaml)
配置端口号:server.port = 8081这样设置端口号
2)艺术字:www.bootschool.net/ascii 自动生成banner
在resources下面新建 banner.txt 会直接被识别
////////////////////////////////////////////////////////////////////
// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// (| ^_^ |) //
// O\ = /O //
// ____/`---‘\____ //
// .‘ \\| |// `. //
// / \\||| : |||// \ //
// / _||||| -:- |||||- \ //
// | | \\\ - /// | | //
// | \_| ‘‘\---/‘‘ | | //
// \ .-\__ `-` ___/-. / //
// ___`. .‘ /--.--\ `. . ___ //
// ."" ‘< `.___\_<|>_/___.‘ >‘"". //
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-‘======== //
// `=---=‘ //
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
// 佛祖保佑 永无BUG //
////////////////////////////////////////////////////////////////////
生成的jar包在target里面
就可以像IDEA控制台一样运行起来了
pom.xml
dependencies 核心依赖在里面的<parent>父工程中
我们在引入springboot依赖的时候,不需要指定版本,就是因为有这些版本仓库
启动器 starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
-web 就帮助自动导入web环境所有依赖
main主程序
@SpringBootApplication
public class HelloworldApplication {
public static void main(String[] args) {
SpringApplication.run(HelloworldApplication.class, args);
}
}
@SpringBootApplication
启动类下的所有资源被导入
@EnableAutoConfiguration自动导入包
@Import(AutoConfigurationImportSelector.class)自动导包选择器
loadSpringFactories():
spring.factories这个文件里面写了:所有的自动配置类(核心注解@ConditionalOnXXX,只有用户要求的才会导入,这里的全部类中只会导入用户想导入的那部分)
SpringApplication.run()
图大概看下即可:
@ConfigurationProperties 通过prefix来将yaml的值注入到class里面:
${ } //el表达式
在上方自动生成的import里面可以找到源码位置:
配置文件加载顺序(对properties&yaml)
1).properties格式 (看下即可)
application.properties (默认环境)
+ 测试环境、开发环境、生产环境...
application-test.properties
application-dev.properties
application-prod.properties
三个非默认环境,都需要application.properties来设置:
2).yaml格式()
application.yaml
yaml文件一个就搞定,各个环境之间用"- - -"三个横杠分隔
所有的yaml可以配置的项(官方文档):https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/htmlsingle/
静态资源一般放在resources/static里面
Thymeleaf模板引擎(jsp同类)
源码:
项目实战
国际化:i18n => internationalization
就是在i18n里面,三个文件,一个是键、另外两个是键对应的中文、英文
Interceptor (登录)拦截器
登录拦截的时候,静态资源不要拦截,否则会比较丑。
杂碎知识:
StringUtils.isEmpty()和.equals的运用
JDBC
需要在application.yml里面配置下数据库属性。
url问号后面3个设置
(点击username点进去,可以看spring.datasource文件,里面很多设置)
HikariDataSource号称javaweb当前最快的数据源
数据库连接池实现,结合了C3P0、DBCP、PROXOOL等DB池的优点,
同时加入了日志监控=》天生就是针对监控而生的DB连接池
在yml配置中DataSource中加上druid就好了
yml数据注入config (prefix作为连接的桥梁标记)
获取druid后台监控:
//1、配置管理后台的Servlet
@Bean
public ServletRegistrationBean DruidServlet(){
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
Map<String,String> initParams = new HashMap<>();
//druid后台登录的用户名
initParams.put("loginUsername","admin");
//druid后台登录的密码
initParams.put("loginPassword","111111");
//默认就是允许所有访问
initParams.put("allow","");
bean.setInitParameters(initParams);
return bean;
}
//2、配置监控的filter
@Bean
public FilterRegistrationBean druidStatFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
Map<String,String> initParams = new HashMap<>();
initParams.put("exclusions","*.js,*.css,/druid/*");
bean.setInitParameters(initParams);
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
Druid Monitor
后面自己动手来配置一下
https://www.jianshu.com/p/fae8fc159270
Mybatis
Authentication: 身份认证
Authorization: 授权
Subject:用户
SecurityManager:管理所有用户
Realm:控制数据
下图是上图的详细版
像AOP的功能一般都用Config.java来配置实现
====》
授权=》权限分类+每个分类能做的事
认证=》账号密码+权限分类
首先导入2个maven包:
写一个swaggerConfig.java的配置类
http://localhost:8080/swagger-ui.html
给方法,添加注释:
正式发布的版本,关闭swagger
能扫描接口并测试==》直接扫现有的项目代码来调试~~
1) 导入maven依赖
2) 配置类写下
3)然后开始用了:
redis配置模板RedisConfig.java
在真实的开发中,使用RedisUtils工具类
远程过程调用
Dubbo-admin: 监控管理后台
异步任务=》多线程
邮件发送=》mailSender
定时任务=》timer
重点是:-和/
SpringBoot项目结构
后端主要是:
(1)Controller层:
后端接受前端的请求,先在Controller层拿数据,并进行基本的格式处理
(2)Service层:
将符合要求的数据请求传给Service层,进行逻辑上的处理
(3)Dao层:
借助mybatis,通过mapper文件夹下的xml文件进行持久层的相关操作
-----------------------代码层结构-----------------------
启动类:Application.java(配置和启动引导)
@SpringBootApplication 开启了Spring组件扫描和SpringBoot的自动配置功能
数据实体类:domain
jpa项目
mybatis项目
数据接口访问层:Dao
jpa项目
mybatis项目
mapper:mybatis的数据库操作xml文件
entity:实体类文件(class)
数据服务接口层:Service
数据服务实现层:Service Implements
前端控制器层:Controller
工具库类:utils
配置类config
数据传输对象:dto
视图包装对象:vo
src/main/java 程序代码
src/main/resources 资源
-----------------------资源目录结构-----------------------
根目录 resources
项目配置文件resources/application.yml
静态资源目录resources/static/ (用于存放前端html css js 图片等)
视图模板目录resources/templates/
mybatis映射文件 resource/mapper/
mybatis配置文件 resource/mapper/config/
原文:https://www.cnblogs.com/qyf2199/p/14524622.html