狂神SpringBoot

学习
2021/11/27

1、这阶段应该如何学习

视图层做不好
springboot内嵌tomcat
war:tomcat运行

springcloud

springboot:认识它
配置如何编写 yaml 格式

为什么自动装配原理 重要(面试)

集成web开发 业务核心
集成数据库 Druid
分布式开发:Dubbo+zookeeper rpc调用
swagger:接口文档
任务调度:异步任务
安全
linux 部署

springcloud

真正微服务
restful风格
负载均衡 Ngix
基础不好 似懂非懂
简化 背后经过了很多的集成

2、什么是springboot 16

spring是一个容器 简化开发

通过切面和模板减少样式代码
javaweb servlet tomcat

了解理论 而不是单单会做一个东西
持续学习能力 架构
集成了大量的第三方库配置

3、什么是微服务架构

架构风格

服务拆分 组装
用户下单 :controller
第一遍目标:看懂怎么操作,后面再去补充
消息队列

马丁的论文
https://www.jianshu.com/p/8c3d8b067f26

apigateway网关
熔断机制
软实力

4、第一个springboot程序

跟着做
11/28下午一点半

5、自动装配原理 40

pom.xml

  • 核心依赖在父工程中
  • 不需要指定版本,因为有仓库

启动器

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

springboot的启动场景,比如说springboot-starter-web,会自动导入web环境所有的依赖。

会将所有的场景变成启动器
要使用什么功能,需要找到对应的启动器。

主程序

@SpringBootApplication
public class HelloSundayApplication {

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

}

三个部分

  1. 注解
    @SpringBootConfiguration springboot的配置
    @Configuration:spring配置类
    @Component:是一个spring组件

@EnableAutoConfiguration
@AutoConfigurationPackage 自动配置包
@Import({AutoConfigurationImportSelector.class}) 导入选择器
断言 不为空
自动配置核心文件

准备放弃 自己找东西看 关于springboot自动装配原理
文件很重要

所有的资源加载到配置类中

Condition 条件判断
自动配置原理分析
画流程图
componentScan:扫描当前主启动类同级的包
autoConfigurationPackage 自动注册包
导入类 是核心 自动导入选择器
选择了什么 选择import
getAutoConfigutationEntry() 获取自动配置实体
getCandidateConfigurations():获取候补配置
标注了

项目资源
系统资源
从这些资源中便利了所有的newxElement(自动配置)

1、在启动时,从类路径下/Meta-inf/spring.factories获取指定的值。

2、将自动配置类导入配置,就会生效

3、当我们进行自动配置,以前需要自动配置的东西,springboot帮我们做了。

4、所有 方觉方案和自动配置的东西都在spring-boot-autoconfigure.jar下

5、把所有需要导入的组件,以类名形式返回,这些组件就会被添加到容器。

6、自动配置,@Configuration,JavaConfig

7、免去手动编写配置类。

7、启动类怎么运行 12

开启了一个服务
1、判断是不是web项目
2、
没做过项目听了也没用

8、yaml语法 11

springboot配置文件中可以配置哪些东西
application.yalm
配置文件名称是固定的
server:
port: 8081
可以修改springboot自动配置默认值
是一种格式,可以
普通的kv
name: qingjiang

对象
student:
name: shen
age: 3

行内写法
student: {name: shen,age: 3}

#数组
pets:

  • cat
  • dog
  • pig

或者 pets: [cat,dog,pid]

有层级关系 空格要求很高
可以注入到配置类中

9、给属性赋值的几种方式 22

10、JSR303校验 12

11、多环境配置及配置文件位置

12、自动装配原理再理解 24

13、web开发探究 5

14、静态资源导入探究 18

15、首页和图标定制 19

16、themeleaf引擎 13

18、MVC配置原理 15

19、扩展MVC 15

20、员工管理系统:准备工作 21

bootstrap模板
导入html文件

模拟创建数据库

在EmployeeDao表中要用到DepartmentDao表
给两个表都添加一个@Repository 表示被Spring托管
@Autowired 自动注入
private DepartmentDao departmentDao;

日期 自定义有参构造
this.birth=new Date();

//主键自增
private static Integer initId=1006;
//增加一个员工
public void save(Employee employee){
if(employee.getId()==null){
employee.setId(initId++);
}
}

21、员工管理系统:首页实现 10

#关闭默认图标
spring.mvc.favicon.enabled=false

去掉thymeleaf缓存
spring.thymeleaf.cache=false;

清理上网痕迹
静态资源加载完成
th:src="@{/img/bootstrap-solid.svg}"

导入命名空间

<html lang="en" xlmns:th="http:www.thymeleaf.org">

前端不熟

<link th:href="@{/css/dashboard.css}" rel="stylesheet">
server.servlet.context-path=/kuang

22、员工管理系统:国际化 31

23、登录功能实现 12

${#strings.isEmpty(name)}

<p style="color:red" th:text=${msg} th:if="$not #strings.isEmpty()"></p>

在MyMvcConfig中添加映射

registry.addViewControllrt(urlPath:"/main.html").setViewName("dashboard");

登录控制器

public class LoginController {

	@RequestMapping("/user/login")
	@RequestBody
	public String login(@RequestParam("username") String username, @RequestParam("password") String password, Model model,
	HttpSession session){

		//具体业务
	if(!StringUtils.isEmpty(username)&&"123456".equals((password))){
		session.setAttribute("loginUser",username);
			return "redirect:/main.html";
		}else{
			model.addAttribute("msg","用户名或密码错误");
			return "index";
		}
	}
}

24、登录拦截器8

解决一下:不论登不登陆都可以进入main页面的问题
LoginHandlerInterceptor类

public class LoginHandlerInterceptor implements HandlerInterceptor {

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

		//登录成功后,应该有用户session
		Object loginUser = request.getSession().getAttribute("loginUser");

		if(loginUser==null){
			request.setAttribute("msg","没有权限,先登录");
			request.getRequestDispatcher("/index.html").forward(request,response);
			return false;
		}else {
			return true;
		}
	}
}

MyMvcConfig类添加

public class MyMvcConfig implements WebMvcConfigurer {

	@Override
	public void addViewControllers(ViewControllerRegistry registry) {
		registry.addViewController("/").setViewName("index");
		registry.addViewController("index.html").setViewName("index");
		registry.addViewController("/main.html").setViewName("dashboard");
	}

	//自定义国际化组件生效

	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/index.html","/","/user/login");
	}
}

在dashboard中修改,可以在登录页获取到用户名信息

[[${session.loginUser}]]

多实践几遍

25、展示员工列表 27

员工管理 修改超链接

26、增加员工实现 20

27、修改员工信息 15

28、删除及404处理

29、如何写网站

30、回顾

31、整合jdbc使用

32、整合DRuid数据源

不能没有压力吧 peerpresure是我的动力
公司 11/28 晚 22:26

33、整合Mybatis框架 26

34、SpringSecurity搭建 16

35、用户认证授权 22

36、注销以及权限控制

37、记住我以及首页定制 14

38、shiro快速开始 16

39、shiro的object实现

40、Springboot整合shiro环境搭建 19

41、Shiro实现登录拦截 7

42、Shiro实现用户认证 11

43、Shiro整合Mybatis 16

44、Shiro请求授权实现 16

47、Swagger介绍及集成 33

48、配置Swagger信息 10

51、异步任务 10

54、Springboot整合redis

55、自定义redisTemplate 20

60、服务注册发现实战 36

整合代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值