您的位置: 首页 - 站长

PHP网站新闻发布怎么做简单的html模板

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

PHP网站新闻发布怎么做,简单的html模板,做网站实训心得,上海建立网站公司目录 1、介绍AOP 1.1、AOP的定义 1.2、AOP的作用 1.3、AOP的核心概念及术语 2、AOP实现示例 3、EnableAspectJAutoProxy注解 1、介绍AOP 1.1、AOP的定义 AOP#xff08;Aspect Orient Programming#xff09;#xff0c;直译过来就是面向切面编程#xff0c;AOP 是一…目录 1、介绍AOP 1.1、AOP的定义 1.2、AOP的作用 1.3、AOP的核心概念及术语 2、AOP实现示例 3、EnableAspectJAutoProxy注解 1、介绍AOP 1.1、AOP的定义 AOPAspect Orient Programming直译过来就是面向切面编程AOP 是一种编程思想是面向对象编程OOP的一种补充。AOP可以拦截指定的方法并且对方法增强而且无需侵入到业务代码中使业务与非业务处理逻辑分离比如Spring的事务通过事务的注解配置Spring会自动在业务方法中开启、提交业务并且在业务处理失败时执行相应的回滚策略。 1.2、AOP的作用 作用AOP 采取横向抽取机制动态代理取代了传统纵向继承机制的重复性代码其应用主要体现在事务处理、日志管理、权限控制、异常处理等方面。 主要作用是分离功能性需求和非功能性需求使开发人员可以集中处理某一个关注点或者横切逻辑减少对业务代码的侵入增强代码的可读性和可维护性。 简单的说AOP 的作用就是保证开发者在不修改源代码的前提下为系统中的业务组件添加某种通用功能。 AOP的经典应用场景有日志记录、事务管理、权限验证、性能监测 AOP可以拦截指定的方法并且对方法增强比如事务、日志、权限、性能监测等增强而且无需侵入到业务代码中使业务与非业务处理逻辑分离。 1.3、AOP的核心概念及术语 目标对象(Target)目标对象指将要被增强比如增强功能的对象或者说被一个或多个切面所通知的对象即包含主业务逻辑的类的对象即为目标对象。 可以说要增强的对象(通常会有很多个)就是目标对象 切面(Aspect)指关注点模块化这个关注点可能会横切多个对象。事务管理是企业级Java应用中有关横切关注点的例子。 在Spring AOP中切面可以使用通用类基于模式的方式(schema-basedapproach)或者在普通类中以Aspect注解(Aspect注解方式)来实现。 可以说增强代码放入的那个类就叫切面类由Aspect注解来标识 通知(Advice)在切面的某个特定的连接点上执行的动作。通知有多种类型包括“around”“before” 和“after”等等。通知的类型将在后面详细了解。许多AOP框架包括Spring在内都是以拦截器做通知模型的并维护着一个以连接点为中心的拦截器链。 用来放增强的代码的那个方法就是通知 环绕通知Around可以把代码增强在目标方法的任意地方更通用前置通知Before目标方法之前执行后置通知After目标方法之后执行异常通知AfterThrowing目标方法出现了异常执行返回通知AfterReturning目标方法返回值执行 切点(Pointcut)匹配连接点的断言。通知和切点表达式相关联并在满足这个切点的连接点上运行(例如当执行某个特定名称的方法时)。切点表达式如何和连接点匹配是AOP的核心:Spring默认使用Aspectj切点语义。 增强代码要对哪些类中的哪些方法进行增强进行切割指的是被增强的方法即要切哪些东西。切点表达式 连接点(Join point)在Spring AOP中一个连接点总是代表一个方法的执行其实就代表增强的方法。 连接点就是通知和目标方法的一个桥梁可以获取到目标方法的信息就得通过JoinPoint 顾问(Advisor)顾问是Advice的一种包装体现Advisor是Pointcut以及Advice的一个结合用来管理Advice和Pointcut。应用无需关心. 顾问是源码中的体现会封装切点和通知 织入(Weaving)将通知切入连接点的过程叫织入就是我这个增强代码织入到目标方法或者叫切入到目标方法都可以 2、AOP实现示例 假设有一个类的所有业务功能都已经实现但是最后我想在所有的功能里面加一个公共的功能(记录所有的请求的用时) 这时候就可以利用AOP来实现切面就是(需要增强的公共的、跟业务没有关系的公共代码)。可以在不改变原有业务代码的基础上进行了增强。所以面向切面编程往往让我们的开发更加低耦合也大大减少了代码量同时呢让我们更专注于业务模块的开发把那些与业务无关的东西提取出去便于后期的维护和迭代。 如何在Spring中创建一个所谓切面? 切面里面的代码怎么运行在业务方法(运行在之前、运行在之后) 使用AOP需要引入依赖 !–以spring-boot-starter为前缀的依赖都是springboot官方提供的依赖 不需要自己来指定版本因为parent都帮我们管理好了 springboot通过这种方式统一管理了版本可以减少版本的冲突– dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId /dependency aspectjAOP概念并不是spring独家提出来的AOP早就有成熟框架已经实现了aspectj就是一个成熟的AOP的解决方案spring只不过是把aspectj集成进来了 AOP实现示例代码Aspect注解可以把一个类标记为切面类 自定义类UserService假设其所有业务功能增删查改都已经实现但是我想给这些功能加一个记录请求用时的功能。这时用AOP来实现 //自定义类UserService假设其所有业务功能都已经实现 Service public class UserService {// 增加增删改查方法这里就用一个打印语句来代替具体的方法功能了public void add(){System.out.println(增加);}public void delete(){System.out.println(删除);}public void update(){System.out.println(修改);}public void query(){System.out.println(查询);} }//切面类LogAspect通过这个切面类来实现在所有的功能里面加一个公共的功能(记录所有的请求的用时) Aspect //把这个类标记为切面类 Component //切面类必须声明为Spring的bean public class LogAspect {// execution(* com.lt.UserService.(..)) 切点表达式// Around 环绕通知Around(execution( com.lt.UserService.*(..))) //切点表达式public void log(ProceedingJoinPoint proceedingJoinPoint){//记录方法用时long begin System.currentTimeMillis();// 执行具体的方法try {proceedingJoinPoint.proceed();} catch (Throwable e){System.out.println(方法执行异常 e.getMessage());}long end System.currentTimeMillis();System.out.println(方法用时 (end - begin) ms);}}//测试类C4AopApplicationTests SpringBootTest(classes C4AopApplicationTests.class) ComponentScan class C4AopApplicationTests {Testvoid contextLoads(Autowired UserService userService) {userService.add();}} 运行结果 3、EnableAspectJAutoProxy注解 1、EnableAspectJAutoProxy启用AOP没有这个注解AOP功能无法使用 如果要使用SpringAOP的功能必须要添加一个EnableAspectJAutoProxy注解有了这个注解才能支持Aspect等相关的一系列AOP注解的功能这个注解就相当于在传统的xml配置文件中添加 aop:aspectj-autoproxy一样。 2、EnableAspectAutoProxy不是一定要加的 比如上面的AOP示例为什么没有加EnableAspectJAutoProxy注解AOP也起作用了? 这是因为SpringBoot其实会通过启动类自动帮我们加上EnableAspectJAutoProxy所以可以省略。SpringBootApplication这个注解帮我们做了很多的事情包括自动帮我们加上EnableAspectJAutoProxy注解 //测试类C4AopApplicationTests SpringBootTest(classes C4AopApplicationTests.class) ComponentScan class C4AopApplicationTests {…… }//启动类 SpringBootApplication // 由于这个注解起了作用所以自动加了EnableAspectJAutoProxy public class C4AopApplication {…… } 所以com.lt包下的启动类C4AopApplication和他上面的上面的注解SpringBootApplicatio也会被扫描到由于这个注解起了作用所以自动加了EnableAspectJAutoProxy 但是依然建议加上EnableAspectJAutoProxy因为在Spring中没有这个注解AOP功能会无法使用。 推荐 【Spring】IOC/DI中常用的注解Lazy、Scope与Conditional-CSDN博客https://blog.csdn.net/m0_65277261/article/details/138277932?spm1001.2014.3001.5501 【Spring】IOC/DI中常用的注解Order与DependsOn-CSDN博客https://blog.csdn.net/m0_65277261/article/details/138167160?spm1001.2014.3001.5501 【spring】Bean的生命周期回调函数和Bean的循环依赖-CSDN博客https://blog.csdn.net/m0_65277261/article/details/138503989?spm1001.2014.3001.5501