Javaweb 后端框架总结

Javaweb 后端框架总结REST方法       Spring核心  IOC(InversionofController)-面向对象的一个准则,对象的控制(创建和管理)由容器或者框架来实现,而不是开发者直接调用,开发者只需要实现接口或者放入自己的类就可以依赖注入(DependencyInjectionDI)每个方法都有一个独立的对象,通过接口去调用其他的对…

大家好,又见面了,我是你们的朋友全栈君。

REST方法

 

Javaweb 后端框架总结

 

Javaweb 后端框架总结

Javaweb 后端框架总结

Javaweb 后端框架总结

 

 

 

 

 

Spring 核心

  IOC(Inversion of Controller)-面向对象的一个准则,对象的控制(创建和管理)由容器或者框架来实现,而不是开发者直接调用,开发者只需要实现接口或者放入自己的类就可以

依赖注入(Dependency Injection DI)每个方法都有一个独立的对象,通过接口去调用其他的对象,这些对象服务创建的时候才实现,是一种逆向的对象创建方式,Spring 中通过Constructor 或setter实现,实现了DI的库叫做容器

面向切面编程(Aspect oriented programing,AOP)一种编程范式,允许横跨应用功能的切面,用于表示同时用在多个函数上的功能。事务,日志,权限等

 

Spring自动装配

通过识别以定义的bean ,spring 的装配机制允许自动解析bean之间的依赖,提供以下四种方法:

  1. 默认值,不会自动装配,必须自定义依赖
  2. ByName:使用property name寻找bean
  3. byType:使用property type 寻找bean,多个同类型的bean会抛出异常
  4. constructor :使用构造函数参数类型寻找bean

Spring Bean :由spring容器创建的对象,叫做spring bean

Bean 提供五种作用域:

  1. 每个容器只创建该bean 的一个实例,防止数据不一致
  2. Prototype :每次请求都会创建新的实例
  3. Request:和prototype一样,用于web应用每个Http 请求都会创建一个实例
  4. Session 每个Http 会话会创建一个新实例
  5. Global-session:为Portlet 应⽤创建全局会话bean

 

 

Spring Bean生命周期:

Spring提供四种方法控制生命周期:

  1. InitialzingBean and DisposableBean 回掉接口
  2. 用于特殊行为的Aware接口、
  3. 配置文件定制init 和destory方法
  4. @PostConstruct和@PreDestory

初始化顺序为:4—1—3

 

 

Spring注解

1、@Configuration:表示该类将声明一个或多个@Bean方法,这些类由Spring 容器处理,再运行时生成bean定义和bean服务请求

2、@Bean:注解方法表示生成一个bean ,由容器管理,接受参数:name,initMethod和destoryMethod

3、@PreDestory和PostConstruct是bean的initMethod和destoryMethod的替代方法

4、@ComponentScan:和@Configuration一起使用,指定扫描Spring组件的目录

5、@Component:表示一个类是组件,它可以被配置了@configuration 和@ConponmentScan的类检测到

6、@PropertySource:提供一个声明式的机制为spring环境添加property source,和@Value 一起使用

7、@Service

8、@Repository

9、@Autowired:用于实现bean的自动注入。经常和Spring @Qualifier配合使⽤用,解决同类型注⼊入导致的冲突

SpringMVC注解:

@Controller

2. @RequestMapping

3. @PathVariable

4. @RequestParam

5. @ModelAttribute

6. @RequestBody and @ResponseBody

7. @RequestHeader and @ResponseHeader

Spring

事务管理理注释

@Transactional:注释⽤用于声明事务管理理,常⽤用在Spring MVC Hibernate

Spring Security注释

@EnableWebSecurity:和@Configuration配合使⽤用定义安全性配置,用在SpringSecurity模块

Spring Boot注释

@SpringBootApplication

@EnableAutoConfiguration

 

 

Spring IOC和DI

IOC 就是将对象的创建和管理交给spring 容器进行处理。

        

 

 

注解:

  1. 注解就是为了说明Java中某一个部分的作用。
  2. 注解可以用在哪个部分是@Target注解起的作用。
  3. 注解可以标注在ElementType枚举类所指定的位置上。
  4. @Document   //该注解是否可以出现再帮助文档之中

@Retention(RetentionPolicy.RUNTIME)  //该注解在Java、class和运行时都起作用

@Target(ElementType.ANNOTATION_TYPE)  //该注解只能用在注解上

Public @Target(){

ElementType[] value();

}

  1. 用来解析注解的类成为注解解析器

@Target

表示该注解可以用在什么地方,可能的ElementType参数有:

CONSTRUCTOR:构造器的声明
FIELD:域声明(包括enum实例)
LOCAL_VARIABLE:局部变量声明
METHOD:方法声明
PACKAGE:包声明
PARAMETER:参数声明
TYPE:类、接口(包括注解类型)或enum声明

@Retention

 表示需要在什么级别保存该注解信息。可选的RetentionType参数包括:

SOURCE:注解将被编译器抛弃

CLASS:注解将在class文件中可用,但会被JVM抛弃

RUNTIME:VM将在运行期间保留注解,因此可以通过反射机制读取注解的信息:

@Document

将注解包含在Javadoc中

@Inherited

允许子类继承父类中的注解。

 

 

 

 

 

JPA

Jpa是现代化的数据持久化技术规范,是实现ORM的Java标准API,定义了供ORM提供商实现的接口

JPA=API+JPQL(Java Persistence Query Language)+ORM(Object/relation metadata)

Spring Data旨在提供统一的,易用的数据库访问技术

Spring data架构是高度模块化的,每个模块都有独立的贡献者

  1. Object mapping:将POJO转换为相应的数据格式,(MongoDB 的doucument,Redis 的property)
  2. Template:资源转换和异常转换.
  3. Repository:提供统一的查询方式.

Spring Data JPA 适合用于快速创建基于JPA的用于CRUD操作的repository层,并且不用创建DAO

Spring Data JPA特性

  1. 创建仓库repository
  2. 知识QueryDSL和JPA queries
  3. 支持batch加载,排序和动态查询
  4. 支持xml和注解两种方式
  5. 通过CrudRepository 减少CRUD代码量

 

 

Spring Data JPA

项⽬目依赖:

1.数据库驱动:postgresql,mysql

2.Spring框架核⼼心:spring-core, spring-context

3.Spring REST API:spring-webmvc, jackson-databind

 

4.Spring数据操作:spring-data-jpa, hibernate-entitymanage、

 

JPA VS Hibernate

 Hibernate 是JPA规范的一个实现,设计JPA provider, 而spring Data JPA 是一个JPA数据访问抽象

Spring Data JPA提供GenericDao(通用DAO)的定制实现,通过⽅方法名约定⾃自动⽣生成JPA查询。Spring Data JPA通过扩展repositories(crudrepository, jparepository)实现DAO接⼝

Spring JDBC 是轻量级的,直接持久化的方式,目的在于实现原生的SQL查询

Spring Data 是Spring 框架的一个子项目,他的目的简化和不同类型数据库之间的操作,包括关系和非关系型,Spring Data JPA是一个支持JPA的子项目,但不能单独使用,需要和Hibernate等JPA 实现提供商结合使用。

 

 

 

SpringBoot

Spring Boot 是一个简化启动,开发和测试Spring应用的框架,SpringBoot将冗长的,常用的开发步骤,模板代码和配置封装为“默认配置”。

Spring Boot=Spring框架+内嵌Http服务器+XML/Annotation配置

 

Spring Boot 概念

选用理由

  1. 简化Java开发应用,单元测试和系统测试过程
  2. 提供默认配置,快速启动。
  3. 提高生产力

优点

  1. 非常容易地开发spring应用。
  2. 减少开始时间,提高生产力。
  3. 避免写模板代码,注释和XML配置
  4. 方便和Spring生态系统集成,包含Spring JDBC,Spring ORM,SpringData等
  5. 提高嵌入式HTTP服务器,便于开发和测试。
  6. 提供CLI工具,通过命令行方式开发和测试Spring Boot应用
  7. 提供大量插件,更方便使用构建工具(Maven,Gradle)和内嵌地或内存数据库。

Spring Boot 架构

 四个核心组件和两个辅助组成

  1. Spring Boot Starter

主要职责将一组通用的,相关依赖组合成一个依赖。一般情况下,Spring需要引入大量的依赖,而他们通常是固定的搭配,不方便构建文件管理。

  优点:

1、减少手动定义大量的依赖。

2、简化构建依赖。

 

  1. SpringBoot AutoConfigurator

Spring经常在开发中需要配置复杂的配置。

AutoConfigurator 的职责就是减少或不需要spring配置,它负责注入配置信息

例如SpringMVC spring-boot-starter-web 会启动AutoConfigurator,自动生成XML/注释信息实现views,views resolvers等配置。

@SpringBootApplication=@Configuration+@ComponentScan+@EnableAutoConfiration

  1. Spring Boot CLI

该组件是用于运行和测试SpringBoot 应用的命令行软件

利用CLI启动SBA(以服务为基础的建构),它内部使用SpringBoot Starter 和Spring Boot AutoConfigurator解释依赖病启动应用。

 

  1. Spring Boot Actuator

 主要包含两个功能:

  提供SBA的管理终端

   提供SBA 度量

  1. Spring Initillzr(https://start.spring.io)

 

  1. Spring Boot IDEs

 

 

 

 

 

Spring声明式事务处理

Spring

  声明:针对的是程序员,程序员告诉spring容器,那些方法需要事务,那些方法不需要事务处理,spring 容器来做事务处理,

目的:让Spring管理事务,开发者不在关注事务。

 

 

AOP

静态代理的缺点:

  1. 如果一个系统中有100个Dao,则创建100个代理对象
  2. 静态代理的重用性不强。
  3. 一个代理类只能对一个业务接口的实现类进行包装,如果实现了多个业务接口的话就要定义很多实现类和代理类,代码的重用性不。

动态代理模式:

  1. 产生的代理对象和目标对象实现了共同的接口

JDK代理。

  1. 代理对象是目标对象的子类

Spring:cglib 动态代理

Jdk的动态代理:

  1. 是jdk的API做到的,
  2. 代理对象是动态产生的。

cglib产生的代理类是目标类的子类

 

动态代理

  1. JDK动态代理

JDK动态代理所用到的代理类在程序调用到代理类对象的时候才由JVM真正创建,JVM根据传递进来的业务实现类对象以及方法名,动态的创建了一个代理类的 class文件并被字节码引擎执行,然后根据该代理对象进行方法调用。

JDK动态代理的代理对象在创建时,需要使用业务实现类所实现的接口作为参数,如果业务实现类是没有是现实接口而是直接定义业务方法的话,就无法使用JDK动态代理了,并且,如果业务实现类中新增加了接口中没有的方法,这些方法是无法被代理的。

  1. 动态代理之Cglib代理

cglib 是针对类实现代理的,原理是对指定的业务类生成一个子类,并覆盖其中业务方法实现代理。因为采用的是继承,所以不能对final修饰的类进行代理。

静态代理是通过在代码中显式的定义一个业务实现类一个代理,在代理类中对同名的业务方法进行包装,用户通过代理类调用被包装过的业务方法。

JDK动态代理是通过接口中的方法名,在动态生成的代理类中调用业务实现类的同名方法。

Cglib动态代理是通过继承业务类,生成的代理类是业务类的子类,通过重写业务方法进行代理。

 

 

aop:

  1. 切面

事务、日志、安全性框架、权限等都是切面

  1. 通知

切面中的方法就是通知

  1. 前置通知

在目标方法执行之前执行

无论目标方法是否抛出异常,都执行,因为在执行前置通知的时候,目标方法还没有执行,还没有遇到异常

  1. 后置通知

在目标方法执行以后

当目标方法遇到通到异常的时候,后置通知将不执行

后置通知也可以接收目标方法的返回值

  1. 最终通知

在目标方法执行之后执行

无论目标方法是否抛出异常,都执行,相当于finally

  1. 异常通知

接收目标方法抛出的异常信息

  1. 环绕通知

如果不在环绕通知中调用ProceedingJoinPoint 的proceed 目标方法不会执行

环绕通知可以控制目标方法的执行

  1. 目标类
  2. 切入点

只有符合切入点,才能让通知和目标方法结合在一起

  1. 织入:形成代理对象的方法的过程叫做织入。

好处:事务、日志、安全性框架,权限、目标方法之间完全是松耦合的

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132788.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 处理机调度算法

    处理机调度算法

    2021年7月3日
  • PhpStorm2017.1版激活方法、汉化方法以及界面配置「建议收藏」

    PhpStorm2017.1版激活方法、汉化方法以及界面配置「建议收藏」本教程仅对2017.1版有效!!!!!!PhpStorm激活和汉化文件下载网址(提取密码:62cg)PhpStorm的介绍PhpStorm是一个轻量级且便捷的PHPIDE,其旨在提高用户效率,

    2022年7月2日
  • 【02月25日】【精彩电影合集】【15部】【亲测】【Lsyq5647发布】

    【02月25日】【精彩电影合集】【15部】【亲测】【Lsyq5647发布】今日电影更新[15部]1、《绢》07最新多国打造大片DVD中字2、《寿喜烧西部片》07最新全明星火爆大片DVD中字3、《美国处男》上亿票房爆笑喜剧DVD中字4、《人肉盛宴》06超血腥恐怖片DVD中字5、《加百利》欧美07最新科幻动作大片DVD中字6、《遗愿清单》摩根弗里曼杰克尼尔森07最新喜剧DVD中英字幕7、《忠于职守:边境巡逻》08最新美国动作片DVD转RMVB中字8、…

    2022年7月11日
  • 局域网文件传输软件[通俗易懂]

    局域网文件传输软件[通俗易懂]在公司实习了一个周,虽然很累,但也感觉有所得,此次项目是做一个局域网两台计算机之间的文件传输。我用的主要控件为winsock控件,用其TCP协议。至于用此控件连接两台计算机书上都有介绍,我主要介绍一下我传送文件的思想和方法:首先,将要传送的文件分成指定大小的N个包,大小不能超过8K因为TCP每次最多发送8K数据,最后一个包可能会小于其它包。然后在每个包加个包头,因为接收端需要通过包头知道传送过来的

    2022年6月4日
  • ideaIU-2019.2.exe

    一、查看安装目录结构   bin: 容器,执行文件和启动参数等 help:快捷键文档和其他帮助文档 jbr: 含有java运行环境 lib:idea 依赖的类库 license:各个插件许可

    2022年3月13日
  • 基于云计算的大数据平台基础设施建设实践

    基于云计算的大数据平台基础设施建设实践大数据平台基础建设当前的趋势是云化与开放,这个平台需要可以提供各类大数据相关PaaS服务,也需要使各类服务间可以简单灵活的组合来满足多变及定制的需求。如何在云上提供弹性、敏捷,却不失稳定和高性能的大数据平台?如何高效的利用云计算的特点来开发大数据平台?本期青云QingCloud系统工程师周小四给大家带来基于云计算的大数据平台基础设施建设以及其架构特点的主题分享。以下是分享原文。——————大…

    2022年5月16日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号