SpringBoot
自动装配
pom.xml
●spring-boot-dependencies: 核心依赖在父工程中
●我们在写或者引入一些SpringBoot以来的时候,不需要指定版本,就因为有这些版本仓库
启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
●启动器:说白了就是SpringBoot的启动场景:
●比如spring-boot-satart-web,他就会帮我们自动导入web环境所有的依赖!
●SpringBoot会将所有的功能场景,都变成一个个的启动器
●我们要使用什么功能,就只需要找到对应的启动器就可以了。
主程序
//@SpringBootApplication : 标注这个类是一个SpringBoot的应用
@SpringBootApplication
public class SpringbootNewstudy1Application {
//将SpringBoot应用启动
public static void main(String[] args) {
SpringApplication.run(SpringbootNewstudy1Application.class, args);
}
}
注解:
@SpringBootConfiguration : SpringBoot的配置
@Configuration: spring的配置类
@Component: 说明这也是一个spring的组件
@EnableAutoConfiguration : 自动配置
@AutoConfigurationPackage : 自动配置包
@Import({Registrar.class}) : 导入选择器包
@Import({AutoConfigurationImportSelector.class}) : 自动导入选择
结论:SpringBoot所以自动配置都是在启动的时候扫描并加载:spring.factories所有的自动配置类都在这里面,但是不一定生效,要判断条件是否成立,只要导入了对应的start,就有对应的启动器了,有了启动器,我们自动装配就会生效,然后就配置成功!
1.SpringBoot在启动的时候,从类路径下/META-INF/spring.factories 获取指定的值;
2.将这些自动配置的类导入容器,自动配置就会生效,帮我进行自动配置
3.以前我们需要自动配置的东西,现在SpringBoot帮我们做了!
4.整合javaEE,解决方案和自动配置的东西都在spring-boot-2.4.5.jar这个包下
5.它会所有需要导入的组件,以类名的方式返回,这些组件就会被添加到容器;
6.容器中也会存在非常多的xxxAuroConfiguration的文件(@BEAN),就是这些类给容器中导入了这个场景需要的所有组件,并自动配置,@Configuration,javaConfig
7.有了自动配置类,免去了我们手动编写配置文件的工作
SpringBoot Web开发
jar:webapp!
自动装配
springboot到底帮我们配置了什么?我们能不能进行修改?能修改哪些东西?能不能扩展?
●xxxAutoConfiguration…想容器中自动配置组件
●xxxProperties: 自动配置类,装配配置文件中自定义的一些内容!
要解决的问题:
●导入静态资源…
●首页
●jsp,模板引擎Thymeleaf
●装配扩展SpringMVC
●增删改查
●拦截器
●国际化
SpringMVC自动配置
在进行测试前,我们还需要知道一个东西,就是SpringBoot对我们的SpringMVC还做了哪些配置,包括如何扩展,如何定制。只有把这些都搞清楚了,我们在之后使用才会更加得心应手。途径一:源码分析,途径二:官方文档
地址 : https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-developing-web-applications.html
修改SpringBoot的默认配置
方式一 这么多的自动配置,原理都是一样的,通过这个WebMVC的自动配置原理分析,我们要学会一种学习方式,通过源码探究,得出结论;这个结论一定是属于自己的,而且一通百通。
SpringBoot的底层,大量用到了这些设计细节思想,所以,没事需要多阅读源码!得出结论;
SpringBoot在自动配置很多组件的时候,先看容器中有没有用户自己配置的(如果用户自己配置@bean)
,如果有就用用户配置的,如果没有就用自动配置的;如果有些组件可以存在多个,比如我们的视图解析器,就将用户配置的和自己默认的组合起来!
扩展使用SpringMVC
我们要做的就是编写-个@Configuration注解类, 并且类型要为WebMvcConfigurer,还不能标注@EnableWebMvc注解;我们去自己写一个;我们新建一个包叫config, 写一个类MyMvcConfig;
/**
* @author mones
* @crate 2021-03-12-15:24
*/
//应用类型要求为WebMvcConfigurer,所以我们实现其接口
//可以使用自定义类扩展MVC的功能
//使用WebMvcConfigurer可以来扩展SpringMVC的功能
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//浏览器发送 /asxiaoxue 请求来到success
registry.addViewController("/asxiaoxue").setViewName("success");
}
}
> 1.首页配置:
> 1.注意点,所有页面的静态资源都需要使用thymeleaf接管
> 2.url:@{}
> 2.页面国际化:
> 1.我们需要配置i8n文件
> 2.我们如果需要在项目中进行按钮自动切换,我们需要自定义一个组件 LocaleResolver
> 3.记得将自己写的组件配置到spring容器 @Bean
> #{}
> 3.登录+拦截器
> 4.员工列表展示
> 1.提取公共页面
> 1.th:fragment="sidebar"
> 2. th:replace="~{commons/common::topbar}"
> 3.如果要传递参数,可以直接使用()传参,接收判断即可
> 2.列表循环展示
> 5.添加员工
> 1.按钮提交
> 2.跳转到添加页面
> 3.添加员工成功
> 4.返回首页
>
> 6.CRUD搞定
> 7. 404
前端
●模板:别人写好的,我们拿来改成自己需要的
●框架:组件:自己手动组合拼接! Bootstrap,Layui,semantic-ui
⭕栅格系统
⭕导航栏
⭕侧边栏
⭕表单```
#1.前端搞定: 页面长什么样子: 数据
#2.设计数据库(数据库设计难点!)
#3.前端让他能够自动运行,独立化工程
#4.前端接口如何对接,json,对象all in one!
#5.前后端联调测试!
1.有一套自己熟悉的后台模板:工作必要!X-admin,基于layui
2.前端界面:至少自己能够通过前端框架,组合出来一个网站页面
-index
-about
-blog
-post
-user
3.让这个网站能够独立运行!
一个月!
第二周:
●JDBC: 重点
●Mybatis: 重点
●Shiro:安全:重点
●Spring Security:安全:重点
●异步任务~;邮件发送,定时任务
●Swagger
●Dubbo +Zookeeper
Spring Security (安全)
在web开发中,安全第一位! 过滤器,拦截器~
功能性需求: 否
做网站: 安全应该在什么时候考虑?设计之初!
●漏洞,隐私泄露~
●架构一旦确定
shiro、SpringSecurity:很想-除了类不一样,名字不一样;
认证,授权(vip1,vip2,vip3)
● 功能权限
● 访问权限
● 菜单权限
● ...拦截器,过滤器:大量的原生代码~ 冗余
MVC--SPRING-SPRINGBOOT--框架思想
Aop: 横切~ 配置类~
简介
Spring Security是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型,他可以实现强大的Web安全控制,对于安全控制,我们仅需要引入spring-boot-starter-security 模块,进行少量的配置,即可实现强大的安全管理!
● WebSecurityConfigurerAdapter:自定义Security策略
● AuthenticationManagerBuilder: 自定义认证策略
● @EnableWebSecurity:开启WebSecurity模式 @Enablexxxx 开启某个功能
Spring Security的两个主要目标是“认证”和"授权”(访问控制) .
“认证”(Authentication)
“授权”(Authorization)
这个概念是通用的,而不是只在Spring Security中存在。
参考官网: htps://spring.io/projects/spring-security, 查看我们自己项目中的版本,找到对应的帮助文档:
https://docs.spring.io/spring-security/site/docs/5.2.0.RELEASE/reference/htmlsingle