Spring
2020-09-29 11:04:03 0 举报
AI智能生成
Spring全家桶
作者其他创作
大纲/内容
Spring
IOC
原理
ioc是一种解耦的1设计思想,他就是使用第三方IOC容器,来对互相依赖的对象关系进行解耦,他就像一个工厂,我们只需要做相应的配置或者注解就好,完全不用考虑他到底是怎么创建的, IOC 容器负责创建对象,将对象连接在一起,配置这些对象,并从创建中处理这些对象的整个生命周期,直到它们被完全销毁。
主要实现方式:反射
Bean
作用域
singleton:共同使用一个对象(默认)
prototype:每一次调用都会创建一个对象
request:每次请求都会创建一个对象
session:每个请求在session存活时都会创建一个对象
globalSession:类似于session不过只在 portlet 的 web 应用中才有意义
生命周期
1.在Bean容器中找到配置文件中SpringBean的定义
2.使用一个API创建一个Bean的实例
3.如果实际到一些属性值,使用set去设置一些属性值
4.如果Bean实现了BeanNameAware调用SetBeanName方法,其他的同理调用相应的Aware方法
5.如果有实现BeanPostProcessor方法就执行前置处理
6.如果实现InitializingBean方法执行afterPropertiesSet方法
7.如果在配置文件定义相应的init-mother方法有的话就zhixing
8,如果有BeanPostProcessor方法,就执行后置方法
9.销毁:如果实现了DisposableBean接口就实现他的destroy方法
10.销毁:如果配置文件定义了相应的destroy-mother方法就执行相应的方法
AOP
面向切面编程
AOP术语
连接点(Joinpoint)
切点(pointcut)
增强(Abvice)
目标对象(Target)
引介(Intruboction)
织入(Weaving)
代理(Porxy)
切面(Aspect)
增强类型
前置增强
后置增强
环绕增强
抛出异常后增强
引介增强
注解
@Aspect,定义一个切面
@Before 前置增强
@AfterReturn 后置增强
@Around 环绕增强
@After Throwing 在抛出异常之前增强
@After 都会执行的增强
@DeclareParent 引介增强
适合使用aop的业务
性能检测
访问控制
记录日志
事务管理
AOP(Aspect-Oriented Programming:面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
Spring AOP 就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用Cglib ,这时候Spring AOP会使用 Cglib 生成一个被代理对象的子类来作为代理,
Spring AOP 就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用Cglib ,这时候Spring AOP会使用 Cglib 生成一个被代理对象的子类来作为代理,
Spring 是一种轻量级开发框架,旨在提高开发人员的开发效率以及系统的可维护性。
我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。这些模块是:核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。比如:Core Container 中的 Core 组件是Spring 所有组件的核心,Beans 组件和 Context 组件是实现IOC和依赖注入的基础,AOP组件用来实现面向切面编程。
spring的一些模块
Spring Core: 基础,可以说 Spring 其他所有的功能都需要依赖于该类库。主要提供 IoC 依赖注入功能。
Spring Aspects : 该模块为与AspectJ的集成提供支持。
Spring AOP :提供了面向切面的编程实现。
Spring JDBC : Java数据库连接。
Spring JMS :Java消息服务。
Spring ORM : 用于支持Hibernate等ORM工具。
Spring Web : 为创建Web应用程序提供支持。
Spring Test : 提供了对 JUnit 和 TestNG 测试的支持。
SpringMVC
MVC:MVC 是一种设计模式.
MVC就是模板,视图,控制器
总的来说就是用户发送一个请求,控制器把这个发送到模型层进行处理(model,service,dao,entity)处理完成之后返回资格处理结果,之后对视图进行渲染,之后相应给用户
springMVC的流程
客户端(浏览器)发送请求,直接请求到 DispatcherServlet。
DispathServlet接受到请求之后根据请求调用HeadlerMapping,解析请求对应的headler
解析对应的Headler后(就是我们所说的contorller),开始由HandlerAdapter适配器进行适配
通过适配器来调用对应的处理器来真正的处理器开始处理请求,进行相应的业务处理
处理器处理完业务后,会返回一个 ModelAndView 对象,Model 是返回的数据对象,View 是个逻辑上的 View。
ViewResolver 会根据逻辑 View 查找实际的 View。
DispaterServlet 把返回的 Model 传给 View(视图渲染)。
把 View 返回给请求者(浏览器)
SpringMVC的重要组件
前端控制器DispatcherServlet(不需要工程师开发),由框架提供(重要)
处理器映射器HandlerMapping(不需要工程师开发),由框架提供
处理器适配器HandlerAdapter
处理器Handler(需要工程师开发)
视图解析器View resolver(不需要工程师开发),由框架提供
视图View(需要工程师开发)
SpringBoot
首先,重要的是要理解 Spring Boot 并不是一个框架,它是一种创建独立应用程序的更简单方法,只需要很少或没有配置(相比于 Spring 来说)。Spring Boot最好的特性之一是它利用现有的 Spring 项目和第三方项目来开发适合生产的应用程序。
Spring Boot 的自动配置是如何实现的
这个是因为@SpringBootApplication 注解的原因。我们知道 @SpringBootApplication 看作是 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合。
@EnableAutoConfiguration:启用 SpringBoot 的自动配置机制
@ComponentScan: 扫描被@Component (@Service,@Controller)注解的bean,注解默认会扫描该类所在的包下所有的类。
@Configuration:允许在上下文中注册额外的bean或导入其他配置类
Spring Security
Spring Security 是一个功能强大且高度可以定制的框架,侧重于为Java 应用程序提供身份验证和授权
注解
@AutoWired
自动导入对象到类中,被注入进的类同样要被 Spring 容器管理比如:Service 类注入到 Controller 类中。
@Component,@Repository,@Service, @Controller
我们一般使用 @Autowired 注解让 Spring 容器帮我们自动装配 bean。要想把类标识成可用于 @Autowired 注解自动装配的 bean 的类,简单来说就是交个哦Spring去处理
@RestController
@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器 bean,并且是将函数的返回值直 接填入 HTTP 响应体中,是 REST 风格的控制器,主要返回json格式
@Scope
声明bean的作用域
@Configuration
一般用来声明配置类,可以使用 @Component注解替代,不过使用@Configuration注解声明配置类更加语义化。
@PathVariable 和 @RequestParam
获取参数
@RequestBody
获得json格式的参数
@Entity
声明一个类对应一个数据库的实体
@Transactional
事务注解
@Value
注入数据
@ConfigurationProperties
把配置信息和bean绑定
0 条评论
下一页