当前位置: 首页 > news >正文

网站编辑框超链接怎么做py网站开发视频教程

网站编辑框超链接怎么做,py网站开发视频教程,软件项目管理案例教程第四版答案,网站建设文化传播有限公司目录 一#xff1a;什么是AOP 二#xff1a;AOP快速入门 2.1导入AOP坐标 2.2定义dao接口和实现类 2.3定义通知类 2.4在配置类中进行Spring注解包扫描和开启AOP功能 2.5定义测试类测试结果 三#xff1a;AOP工作流程 四#xff1a;AOP的切入点表达式 4.1语法格…目录 一什么是AOP 二AOP快速入门  2.1导入AOP坐标 2.2定义dao接口和实现类 2.3定义通知类 2.4在配置类中进行Spring注解包扫描和开启AOP功能 2.5定义测试类测试结果  三AOP工作流程  四AOP的切入点表达式  4.1语法格式 4.2通配符  五AOP通知类型  5.1前置通知  5.2后置通知 5.3最终通知  5.4异常通知 5.5环绕通知 六总结  一什么是AOP 在软件业AOP为Aspect Oriented Programming的缩写意为面向切面编程通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续是软件开发中的一个热点也是Spring框架中的一个重要内容是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离从而使得业务逻辑各部分之间的耦合度降低提高程序的可重用性同时提高了开发的效率。 总的来说AOP就是一编程规范目的是在不改变方法源代码的基础上对方法进行功能增强。 二AOP快速入门  2.1导入AOP坐标 在pom.xml中导入aop坐标 dependencygroupIdorg.springframework/groupIdartifactIdspring-aop/artifactIdversion5.3.31/version/dependency dependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactIdversion1.9.7/version/dependency 2.2定义dao接口和实现类 BookDao接口中  package com.lcyy.dao;public interface BookDao {void read(); } 实现类注意要在BookDaoImpl方法上加入注解Repository表示为交给Spring的一个组件 import com.lcyy.dao.BookDao; import org.springframework.stereotype.Repository;Repository public class BookDaoImpl implements BookDao {Overridepublic void read() {System.out.println(BookDao AOP 实现);} } 2.3定义通知类 建立一个aop的包在包下建立一个MyAdvice的通知类 import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component;Component//放在普通类上交给ioc容器管理 Aspect//定义这个类为切面类 public class MyAdvice {//定义连接点Pointcut(execution(void com.lcyy.dao.BookDao.read()))private void pc(){}//定义通知Before(pc())public void testAdvice(){System.out.println(执行前的时间毫秒值);System.out.println(System.currentTimeMillis());} }注意 1.在MyAdvice类上要加入注解Aspect表示定义为一个切面类,Component表示交给ioc容器管理。 2.Pointcut注解要求配置在方法上方(execution(void com.lcyy.dao.BookDao.read()))为切入点表达式execution为关键字 void为返回值 com.lcyy.dao.BookDao.read()为com.lcyy包下的dao包下的BookDao接口中的read()方法。 3.Before(pc()) 其中Before为前置通知表示为在方法执行前执行。关于通知的几种类型下面会详细讲解。其中 pc() 表示将连接点和通知捆绑起来注意方法名必须相同。 2.4在配置类中进行Spring注解包扫描和开启AOP功能 import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy;Configuration ComponentScan(com.lcyy) EnableAspectJAutoProxy//开启aop public class SpringConfig { }其中注解 EnableAspectJAutoProxy 表示开启AOP通知交给IOC容器管理 2.5定义测试类测试结果  import com.lcyy.config.SpringConfig; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class BookDaoTest {public static void main(String[] args) {//获取容器ApplicationContext ctx new AnnotationConfigApplicationContext(SpringConfig.class);BookDao bookDao ctx.getBean(BookDao.class);bookDao.read();} } 测试结果 三AOP工作流程  Spring容器启动 读取所有切面配置中的切入点 初始化bean判定bean对应的类中的方法是否匹配到任意切入点 匹配失败创建原始对象 匹配成功创建原始对象目标对象的代理对象 获取bean执行方法 获取的bean是原始对象时调用方法并执行完成操作 获取的bean是代理对象时根据代理对象的运行模式运行原始方法与增强的内容完成操作 验证AOP的代理对象在刚才测试类中获取 import com.lcyy.config.SpringConfig; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class BookDaoTest {public static void main(String[] args) {//获取容器ApplicationContext ctx new AnnotationConfigApplicationContext(SpringConfig.class);BookDao bookDao ctx.getBean(BookDao.class);bookDao.read();System.out.println(bookDao.getClass());} }测试结果 其中class com.sun.proxy.$Proxy19 就是为代理对象的类名  四AOP的切入点表达式  4.1语法格式 描述方法一执行com.lcyy.dao包下的BookDao接口中的无参数read方法 execution(void com.lcyy.dao.BookDao.read()) 描述方法二执行com.lcyy.dao包下的BookDaoImpl实现类中的无参数read方法 execution(void com.lcyy.dao.BookDaoImpl.read()) 切入点表达式标准格式动作关键字(访问修饰符 返回值 包名.类/接口名.方法名(参数) 异常名   execution(public User com.itheima.service.UserService.findById(int))  其中 动作关键字描述切入点的行为动作例如execution表示执行到指定切入点 访问修饰符publicprivate等可以省略 返回值写返回值类型 包名多级包使用点连接 类/接口名 方法名 参数直接写参数的类型多个类型用逗号隔开 异常名方法定义中抛出指定异常可以省略 4.2通配符  *单个独立的任意符号可以独立出现也可以作为前缀或者后缀的匹配符出现 ..:多个连续的任意符号可以独立出现常用于简化包名与参数的书写 常用的通配符表达式为  Pointcut(execution(* com.lcyy.dao.*.*(..)) 表示任意的访问修饰符 在com.lcyy.dao包下的任意类中的所有方法..表示可以有形参也可以没有形参。 五AOP通知类型  AOP通知共分为5种类型 前置通知在切入点方法执行之前执行 后置通知在切入点方法执行之后执行无论切入点方法内部是否出现异常后置通知都会执行。 环绕通知(重点)手动调用切入点方法并对其进行增强的通知方式。 最终通知在切入点方法执行之后执行如果切入点方法内部出现异常将不会执行。 异常通知在切入点方法执行之后执行只有当切入点方法内部出现异常之后才执行。 5.1前置通知  名称Before 类型方法注解 位置通知方法定义上方 作用设置当前通知方法与切入点之间的绑定关系当前通知方法在原始切入点方法前运行 案例代码 //前置通知Before(execution(void com.lcyy.dao.BookDao.write()))public void testAdvice2(){System.out.println(我是前置通知);} 5.2后置通知 名称AfterReturning 类型方法注解 位置通知方法定义上方 作用设置当前通知方法与切入点之间的绑定关系当前通知方法在原始切入点方法后运行 案例代码 AfterReturning(execution(void com.lcyy.dao.BookDao.write()))public void testAdvice4(){System.out.println(我是后置通知);} 5.3最终通知  名称After 类型方法注解 位置通知方法定义上方 作用设置当前通知方法与切入点之间的绑定关系当前通知方法在原始切入点方法后运行 案例代码 After(execution(void com.lcyy.dao.BookDao.write()))public void testAdvice3(){System.out.println(我是最终通知);} 5.4异常通知 名称AfterThrowing 类型方法注解 位置通知方法定义上方 作用设置当前通知方法与切入点之间的绑定关系当前通知方法在原始切入点方法运行抛出异常后执行 AfterThrowing(execution(void com.lcyy.dao.BookDao.write()))public void testAdvice5(){System.out.println(我是异常通知);} 在以上四个通知后我们在测试类中测试以上通知 注意书写了异常通知却没有执行是因为简单的代码实现没有异常。 测试异常通知 在BookDaoImpl 的实现类中书写测试异常的代码 Overridepublic void write() {System.out.println(BookDao AOP 实现);int a 10/0;System.out.println(a a);} 测试结果: 5.5环绕通知 名称Around重点常用 类型方法注解 位置通知方法定义上方 作用设置当前通知方法与切入点之间的绑定关系当前通知方法在原始切入点方法前后运行 案例代码 Around(execution(void com.lcyy.dao.BookDao.jiyi()))public Object testJiyi(ProceedingJoinPoint PJ) throws Throwable {System.out.println(我时前置通知);Object Oj PJ.proceed();System.out.println(我是后置通知);return Oj;} 测试结果 注意 环绕通知方法形参必须是ProceedingJoinPoint表示正在执行的连接点使用该对象的proceed()方法表示对原始对象方法进行调用返回值为原始对象方法的返回值。 环绕通知方法的返回值建议写成Object类型用于将原始对象方法的返回值进行返回哪里使用代理对象就返回到哪里。 六总结  AOP在spring中是一个很重要的概念理解和运用AOP在以后的业务开发中有很重要的作用
http://www.hkea.cn/news/14511168/

相关文章:

  • 简单免费自建网站河北最新发布最新
  • 广东营销网站建设服务天津seo外包平台
  • 企业网站建设策划书怎么写wordpress关闭在线修改主题
  • 网站源码传到哪个文件夹小程序模板好还是源码好
  • 专门做男士用品的网站免费的会计做账系统
  • 怎么买网站给客户做网站 赚钱吗
  • 湖州网站建设电子商务网站建设外包服务
  • 濮阳哪里做网站企业年金辞职了怎么办
  • 帝国cms小说网站模板下载地址东莞网站制作有名 乐云践新
  • 青岛做网站好的公司拿品牌做网站算侵权吗
  • 一流的菏泽网站建设证件在线制作免费
  • 中国空间站简介100字网站建设方案产业
  • 网站建设成都公司wordpress需要备案
  • 实力网站建设怎么在百度知道做公司网站
  • 俄语网站里做外贸shop劳力士官方二手表网站
  • 正规的饰品行业网站开发网店网站怎么做
  • 如何做类似优酷的视频网站深圳设计公司有哪家
  • 网站推广方案案例好的网站制作
  • 门户网站项目开发案例亿图
  • 禁用wordpress裁剪济南官网seo厂家
  • 网站建设吗东莞网络推广公司电话
  • 襄阳 网站建设文字转链接网址
  • 台州市网站建设公司重庆网站建设重庆网站建设公司网站建设
  • 徐州网站建设培训什么是营销型网站呢
  • 万网注册的域名怎么建设网站佛山网站推广
  • 做网站没资源图片编辑器在线网页版
  • 在建设银行网站上买卖贵金属wordpress 文章是否有标签
  • 外国做挂的网站是多少小程序在线制作模板
  • 珠海哪里有网站建设平台网站建设需求
  • wordpress加速网站插件安阳市地图