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:面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。<br>Spring AOP 就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用Cglib ,这时候Spring AOP会使用 Cglib 生成一个被代理对象的子类来作为代理,<br>
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 条评论
下一页