Spring

在这里插入图片描述
IOC 的实现原理:工厂模式(静态+抽象工厂)+反射+配置文件
在这里插入图片描述
Spring Bean 的定义:3种创建方式

  • 采用(有参无参)构造方法

  • 采用静态工厂

  • 采用实例工厂
    在这里插入图片描述
    Bean 属性的设置(Dependency Injection)DI依赖注入
    两种方式:

    1. 使用Setter
    2. 使用构造方法容器中的property
      在这里插入图片描述

Bean对象 的使用:

  • 使用id名称获取
  • 使用class
    在这里插入图片描述
Spring 容器在初始化一个Bean的实例时,同时会指向该实例的作用域

1.singleton
单例模式,使用singleton定义的Bean在Spring容器中只有一个实例,这个也是Bean默认的作用域。
2.prototype
原型模式,每次通过Spring容器获取prototype定义的Bean时,容器将创建一个新的Bean 实例。
3.request
在一次http请求中,容器会返回该Bean的同一个实例,而对不同的http请求会返回不同的实例,该作用域仅在当前http的Requst内有效。
4.session
再一次http Session中,容器会返回该Bean的同一个实例,而对不同的http请求会返回不同的实例,该作用域仅在当前http的Session内有效。
5. global Session
在一个全局 http Session中容器会返回该Bean的同一个实例,该作用域仅使用在portlet context 时有效。
在这里插入图片描述
Bean 对象的作用域:
(scope=“singleton”/scope=“prototype”,不配置默认singleton)
1.如果Spring容器获取bean的时候,如果是单例(singleton)获取到的是同一个对象
2.如果是prototype,获取的每一次都是新创建的对象。
在这里插入图片描述

面试题:配置singleton 和prototype有啥区别?

Servlet中我们是单例的。
每次请求调用service方法,request和response都是prototype。

SpringBoot:

SpringBoot默认的配置项:

  • SpringBoot启动类所在的包,在其包下的所有类都会自动扫描,(是否实现了Spring框架的接口,是否使用Spring框架的注解)扫描到以后自动注册到容器中。
  • SpringBoot的默认配置文件:src/main/rersources/application.properties
  • Web 项目的默认客户端资源:

在这里插入图片描述
扫描的注解

  1. @Controller:web项目处理前端请求的控制器
  2. @Service :通常作用在业务层
  3. @Respository :用于数据的访问层(DAO层)如果引入Mybatis数据访问层,不使用此注解
  4. @Component:一个泛化的概念,仅仅表示一个组件(Bean),并且作用在任何层次。
  5. @Configuration 配置类
  6. @Bean 编码方式定义bean对象

在这里插入图片描述
在这里插入图片描述
Spring MVC的使用

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

Spring MVC 的流程:

在这里插入图片描述

Spring MVC 的统一异常处理:

在这里插入图片描述

AOP

Aop(面向切面编程)和oop面向对象都是一种编程模式的框架,能有效的减少系统间的重复代码达到模块间的松耦合的目的
AOP的全称(Aspect Oriented Programming)它将业务的逻辑各个部分进行隔离,使开发人员可以专心于核心模块,从而提高业务的开发效率。
业务代码与处理异常代码分割开,高内聚,低耦合
在这里插入图片描述

1.AOP的原理是什么?实现的方式有哪些?每个方式里面是用了那些关键的api,或者实现的部分细节。

Spring框架中AOP是怎么实现的?
实现方式:
(1)JDK的实现方式:前提条件,要求被代理类实现一个接口,
面试回答:通过invocationHandler生成代理,通过Proxy.newInstance()生成代理类,具体干事情的是代理类,而不是被代理类
实现原理:jdk是通过字节码动态生成的代理类。
(2)cglib的实现方式:不需要实现接口,Methodinterceptor拦截某个方法。

此上两种实现方式是Spring aop的实现方式。被称为动态代理

(3)Aspect j的方式:可以匹配包,类,方法最后定位到需要拦截的方法,之后在方法调用前后加入自己的逻辑。

AOP的使用场景

  • 统计方法的执行时间
  • 统一异常处理
  • 统一数据格式的封装
  • 记录日志
  • 统一事务处理…
Freemarker(动态网页技术)
动态网页还有JSP:pop出一个面试题:jsp和servlet的区别?

个人从实际体验中发现,静态html文件只能使用get方法请求。使用post会出现405:method not allowed
首先静态网页输入url会发生什么?
在这里插入图片描述

什么是FreeMarker?

FreeMarker是一个模板引擎。
之前我们使用servlet,可以根据请求动态计算得到响应数据,然后根据响应数据拼装成HTML,而手动按照字符串方式拼装HTML是一件非常痛苦的事情,freeMarker就是解决这个问题。

案例使用:
在这里插入图片描述

Mybatis的使用

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值