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

新疆建设兵团林业局网站刷粉网站推广便宜

新疆建设兵团林业局网站,刷粉网站推广便宜,美国生物等效性如果做的网站,县级政府网站建设的特点AOP是指什么? 面向切面编程,Aspect Oriented Program。是一种编程范式、思想。 Spring AOP里涉及的AOP原理叫什么? 动态代理。 动态代理其实就是在运行时动态的生成目标对象的代理对象,在代理对象中对目标对象的方法进行增强。…

AOP是指什么?

面向切面编程,Aspect Oriented Program。是一种编程范式、思想。

Spring AOP里涉及的AOP原理叫什么?

动态代理
动态代理其实就是在运行时动态的生成目标对象的代理对象,在代理对象中对目标对象的方法进行增强。
例如:

class UserControllerProxy {private UserController userController;public void saveUser() {checkAuth();userController.saveUser();}
}

这样在实际调用saveUser()时,我调用的是代理对象的saveUser()方法,从而实现了鉴权。

举一个简单的应用例子

举个例子,你想给你的网站加上鉴权,对某些url,你认为不需要鉴权就可以访问,对于某些url,你认为需要有特定权限的用户才能访问
如果你依然使用OOP,面向对象,那你只能在那些url对应的Controller代码里面,一个一个写上鉴权的代码

使用AOP可以写如下代码:

protected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/static","/register").permitAll().antMatchers("/user/**").hasRoles("USER", "ADMIN")

这样的做法,对原有代码毫无入侵性,这就是AOP的好处了,把和主业务无关的事情,放到代码外面去做。

Spring AOP具体实现方法?

@Repository
public class UserDao {public void addUser(){System.out.println("添加用户");}public void updateUser(){System.out.println("修改用户");}public void deleteUser(){System.out.println("删除用户");}
}

创建一个切面类:

@Aspect
public class MyAspectLog {/*** 方法执行完后执行的方法*/
@After(value="execution(* cn.xh.dao.UserDao.addUser(..))")public void log(){System.out.println("记录日志");}
}

在spring配置文件中加入:(这啥

	<!-- 启动@aspectj的自动代理支持--><aop:aspectj-autoproxy /><!-- 定义aspect类 --><bean name="myAspect" class="cn.xh.dao. MyAspectLog "/>

AOP 当中的概念:

  • 切入点(Pointcut)
    在哪些类,哪些方法上切入(where)
  • 通知(Advice)
    在方法执行的什么实际(when:方法前/方法后/方法前后)做什么(what:增强的功能)
  • 切面(Aspect)
    切面 = 切入点 + 通知,通俗点就是:在什么时机,什么地方,做什么增强!
  • 织入(Weaving)
    把切面加入到对象,并创建出代理对象的过程。(由 Spring 来完成)

通知:就是会在目标方法执行前后执行的方法

上面这个例子中:

@After(value="execution(* cn.xh.dao.UserDao.addUser(..))")public void log(){System.out.println("记录日志");}

通过通知和目标方法的执行顺序我们可以把通知分为五种:

  • 前置通知(before):在目标方法执行之前执行。
  • 后置通知(after):在目标方法执行之后执行
  • 后置返回通知(after returning):在目标方法返回之后执行,先执行后置通知再执行后置返回通知。
  • 异常通知(after throwing):在目标方法抛出异常时执行
  • 环绕通知(around):在目标函数执行中执行

通知的执行顺序如下:

try{try{//@Beforemethod.invoke(..);}finally{//@After}//@AfterReturning
}catch(){//@AfterThrowing
}

如何找到需要被aspect的方法的位置?

切入点:应用通知进行增强的目标方法
用这种路径描述:

@After(value="execution(* cn.xh.dao.UserDao.addUser(..))")

这里的含义是cn.xh.dao包UserDao类中的参数任意,返回值任意的addUser方法。

连接点

连接点就是可以应用通知进行增强的方法。
因为Spring Aop只能针对方法进行增强,所以这里的连接点指的就是方法,一旦连接点被增强,它就成为了切入点。如上例中的:

public void addUser(){System.out.println("添加用户");}public void updateUser(){System.out.println("修改用户");}public void deleteUser(){System.out.println("删除用户");}

三个方法都是连接点。

作者:夏昊
链接:https://www.zhihu.com/question/24863332/answer/863736101
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
参考:什么是面向切面编程AOP? - 夏昊的回答 - 知乎
https://www.zhihu.com/question/24863332/answer/863736101

项目里有什么用到的地方?

public-endpoint:不需要authorization就可以用的api

http://www.zhongyajixie.com/news/34975.html

相关文章:

  • 精品源码长沙网站包年优化
  • 前端开发模板百度竞价和优化的区别
  • 徐州模板建站平台杭州网站排名seo
  • 现在的网站怎样做推广app开发需要多少费用
  • 简述网站建设的基本思路百度推广是什么
  • 织梦做的网站打不开网页阿里指数数据分析平台
  • 苏州做网站推广找推网
  • 长沙营销型网站建设制作seo排名优化是什么意思
  • 怎样做禁毒网站的试卷惠州网络推广平台
  • 做seo网站不用域名百度网址
  • dw做网站简单吗企业营销型网站有哪些
  • 温江 网站建设竞价外包
  • 新闻网站内容建设措施如何建立个人网址
  • j建设网站湖南靠谱的关键词优化哪家好
  • 盘锦做网站公司网站制作基本流程
  • 用二级域名做的网站算新站吗清远新闻最新
  • 网站建设行业 前景怎么免费建个人网站
  • wordpress在线播放avi黑帽seo技术
  • 徐州网站建设方案东莞百度seo电话
  • 沈阳盘古网络做网站做的好么螺蛳粉营销策划方案
  • 做泥网站谷歌seo是什么意思
  • 前端做的比较好的网站模板网站
  • 做网站要不要买服务器个人网站制作软件
  • 中商外贸网站seo排名优化seo
  • 做网站卖东西赚钱湖南正规seo优化
  • 先做网站装修还是先买虚拟主机哪个浏览器不屏蔽网站
  • 深圳网络推广seo软件惠州seo关键词推广
  • 潍坊做外贸网站建设智能优化网站
  • 个人域名做邮箱网站手机百度一下
  • 重庆网站制作的网站域名停靠