面向切面编程AOP

一、什么是AOP?

AOP(Aspect Oriented Programming)面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。是面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被称为“切面”(Aspect)

简单的说它就是把程序中重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强

二、名词解释

  • 横切关注点:与我们业务逻辑无关但需要关注的部分,如日志、事务、安全、缓存等

  • 切面(Aspect):横切关注点被模块化的特殊对象,即它是一个类(日志类log)

  • 通知(Advice):切面必须完成的工作。即它是类的一个方法(Log中的方法)

    • 前置通知(before) 目标方法被调用之前调用通知功能
    • 后置通知(after) 在目标方法完成之后调用通知此时不会关心方法输出什么
    • 后置返回通知(after returing) 目标方法成功执行后调用通知
    • 异常通知(after throwing) 在目标方法抛出异常后调用通知
    • 环绕通知(around) 通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义行为
  • 目标(Target):被通知对象(接口)

  • 代理(Proxy):想目标对象应用通知后创建的对象(生成的代理类)

  • 切入点(PointCut):切面通知执行的“地点”的定义

  • 连接点(JointPoint):与切入点匹配的执行点

  • 织入(Weaving):织入是把切面应用到目标对象并创建新的代理对象的过程。

阅读更多...

代理模式

1.何为代理模式

目的:为其他对象提供一种代理以控制这个对象的访问

何时使用:想在访问一个类时做一些控制

解决方案:增加中间层

优点:高扩展性、清晰

缺点:实现代理模式需要额外的工作,可能会造成请求的处理速度变慢

SpringAOP的底层就是代理模式

代理模式的分类

静态代理
动态代理

2.静态代理

举一个生活中租房子的例子

阅读更多...

Spring框架的使用(一)

一、Spring

聊一聊Spring

Spring是一个轻量级Java开发框架,目的是为了解决企业级应用开发的业务逻辑和其他各层的耦合。Spring可以做很多事,为企业级开发提供丰富的功能,其底层都依赖于两个特性:

依赖注入(DI)

面向切面编程(AOP)

可简单理解为:

Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架

设计理念与优缺点

1.设计理念

通过Ioc容器管理POJO对象以及他们之间的耦合关系,通过AOP以动态非侵入的方式增强服务。

  • 动态非入侵:使用spring编写业务类时不需要继承spring特定的类,通过配置完成依赖注入后就可以使用,此时,spring就没有侵入到业务代码里。

2.优点

  • 方便解耦,简化开发。可将所有对象的创建和依赖关系交给Spring管理
  • 支持面向切面编程(AOP),可方便的实现对程序进行权限拦截、运行监控等功能
  • 方便集成各种框架
  • 方便接口调用。Spring对一些API如JDBC、提供了封装,方便调用

3.缺点

Spring依赖,反射影响性能

阅读更多...

框架入门_第一个Mybatis程序

一、框架概述

1.1 什么是框架?

框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;

简而言之,框架其实就是某种应用的半成品,就是一组组件,供你选用完成自己的系统。可理解为使用别人搭建好的舞台,你来做表演。

框架要解决的问题:框架封装了很多的细节,使开发者可以使用极简的方式实现功能,大大提高开发效率

1.2 三层架构

  • 三层架构主要是指将业务应用规划中的表示层 UI、数据访问层 DAL 以及业务逻辑层 BLL,其分层的核心任务是“高内聚低耦合,可以降低层与层之间的依赖”。
  • 各层互相独立,完成自己该完成的任务,项目可以多人同时开发,开发人员可以只关注整个结构中的其中某一层。
表现层: 
     用于展示数据
业务层
     处理业务需求
持久层
     和数据交互的
阅读更多...

Response对象

一、Http协议:响应消息

  • 响应消息:服务器端发送给客户端的数据

数据格式

响应行

  1. 组成:协议、版本、响应状态码、 状态码描述
  2. 响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态
    1xx:服务器接收客户端消息,但没有接收完成,等待一段时间后,发送1xx状态码
    2xx:成功处理请求。代表:200
    3xx:重定向。代表:302(重定向),304(访问缓存)
    4xx:客户端错误。代表:404(请求路径没有对应的资源),405:请求方式没有对应的doXXX方法
    5xx:服务器端错误。代表:500(服务器内部出现异常)

响应头

  1. 格式:头名称:值
  2. 常见的响应头:
    Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
    Content-disposition:服务器告诉客户端以什么格式打开响应体数据
    值:
        * in-line:默认值,在当前页面内打开
        * attachment;filename=xxx:以附件形式打开响应体。文件下载时使用

响应体

Request对象

request对象与response对象的原理

  1. request和response对象是由服务器创建的
  2. request对象是来获取请求消息,response对象是来设置响应消息

请求响应的具体实现

Request

request对象继承体系结构

ServletRequest       -- 接口
      |   继承
HttpServletRequest    --接口
      |   实现
org.apache.catalina.connector.RequestFacade  --tomcat提供的类
阅读更多...

Servlet概述

Servlet(Server applet)

概念

运行在web服务器端的程序,它是作为来自web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则

更多内容

入门

  1. 创建JavaEE项目
  2. 定义一个类,实现Servlet接口
  3. 实现接口中的抽象方法
  4. 配置Servlet
阅读更多...

Spring JDBC

Spring JDBC

Spring JDBC是Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发

Spring的JDBC模块负责数据库资源管理和错误处理,大大简化了开发人员对数据库的操作,使开发人员从繁琐的数据库操作中解脱,从而将更多精力投入到编写业务逻辑中

JdbcTemplate解析

针对数据库的操作,Spring框架提供了JdbcTemplate类,该类是Spring框架数据抽象层的基础。可以说,JdbcTemplate类是Spring JDBC的核心类

JdbcTemplate类的直接父类是JdbcAccessor,该类为子类提供了一些访问数据库时使用的公共属性

DataSource:其主要功能是获取数据库连接,还可以引入对数据库连接的缓冲池和分布式事务的支持,它可以作为访问数据库资源的标准接口。

参考资料

阅读更多...

数据库连接池

数据库连接池基础

其实就是一个容器(集合),存放数据库连接的容器。

当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。

好处

  1. 节约资源
  2. 用户访问高效

实现

标准接口:DataSource javax.sql包下

方法:

  • 获取连接:getConnection()
阅读更多...

请我喝杯咖啡吧~

支付宝
微信