java企业面试题lyq重要中企动力_第1页
java企业面试题lyq重要中企动力_第2页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1:什么时候用jdbc,什么时候用hibernate()2:谈谈你对hash code()和equals()的理解3:AOP的通知类型Spring AOP四种创建通知(拦截器)类型实例1、Spring只支持方法拦截,也就是说,只能在方法的前后进行拦截,而不能在属性前后进行拦截。2、Spring支持四种拦截类型:目标方法调用前(before),目标方法调用后(after),目标方法调用前后(around),以及目标方法抛出异常(throw)。3、前置拦截的类必须实现MethodBeforeAdvice接口,实现其中的before方法。4、后置拦截的类必须实现AfterReturningAdvic

2、e接口,实现其中的afterReturning方法。5、前后拦截的类必须实现MethodInterceptor接口,实现其中的invoke方法。前后拦截是唯一可以控制目标方法是否被真正调用的拦截类型,也可以控制返回对象。而前置拦截或后置拦截不能控制,它们不能印象目标方法的调用和返回。但是以上的拦截的问题在于,不能对于特定方法进行拦截,而只能对某个类的全部方法作拦截。所以下面引入了两个新概念:“切入点”和“引入通知”。6、”切入点“的定义相当于更加细化地规定了哪些方法被哪些拦截器所拦截,而并非所有的方法都被所有的拦截器所拦截。在ProxyFactoryBean的属性中,interceptorNa

3、mes属性的对象也由拦截(Advice)变成了引入通知(Advisor),正是在Advisor中详细定义了切入点(PointCut)和拦截(Advice)的对应关系,比如常见的基于名字的切入点匹配(NameMatchMethodPointcutAdvisor类)和基于正则表达式的切入点匹配(RegExpPointcutAdvisor类)。这些切入点都属于”静态切入点“,因为他们只在代理创建的时候被创建一次,而不是每次运行都创建。 下面我们进行实例的开发 首先创建业务接口: package AdvisorTest;public interface Shopping . public String

4、 buySomething(String type); public String buyAnything(String type); public void testException(); 下面是业务实现类,我们的通知就是以这些实现类作为切面,在业务方法前后加入我们的通知代码 package AdvisorTest;public class ShoppingImpl implements Shopping . private Customer customer; public Customer getCustomer() . return customer; public void set

5、Customer(Customer customer) . this.customer = customer; public String buySomething(String type) . System.out.println(this.getCustomer().getName()+ bye +type+ success); return null; public String buyAnything(String type) . System.out.println(this.getCustomer().getName()+ bye +type+ success); return n

6、ull; public void testException(). throw new ClassCastException(); (1)前置通知 配置了前置通知的bean,在执行业务方法前,均会执行前置拦截器的before方法package AdvisorTest;import java.lang.reflect.Method;import org.springframework.aop.MethodBeforeAdvice;/前置通知public class WelcomeAdvice implements MethodBeforeAdvice . public void before(M

7、ethod method, Object args, Object obj) throws Throwable . String type=(String)args0; System.out.println(Hello welcome to bye +type); (2)后置通知配置了前置通知的bean,在执行业务方法前,均会执行前置拦截器的afterReturnning方法 package AdvisorTest;import java.lang.reflect.Method;import org.springframework.aop.AfterReturningAdvice;import

8、 org.springframework.aop.MethodBeforeAdvice;/后置通知public class ThankYouAdvice implements AfterReturningAdvice . public void afterReturning(Object obj, Method method, Object arg1, Object arg2) throws Throwable . String type=(String)arg10; System.out.println(Hello Thankyou to bye +type); (3)环绕通知配置了前置通知

9、的bean,在执行业务方法前后,均会执行前置拦截器的invoke方法需要注意的是必须调用目标方法,如不调用,目标方法将不被执行package AdvisorTest;import ercept.MethodInterceptor;import ercept.MethodInvocation;public class MethodAdvisor implements MethodInterceptor . public Object invoke(MethodInvocation invocation) throws Throwable . String str=(String)invocati

10、on.getArguments()0; System.out.println(this is before+str+ in MethodInterceptor); Object obj=ceed(); /调用目标方法,如不调用,目标方法将不被执行 System.out.println(this is after+str+ in MethodInterceptor); return null; (4)异常通知ThrowsAdvice是一个标示接口,我们可以在类中定义一个或多个,来捕获定义异常通知的bean抛出的异常,并在抛出异常前执行相应的方法public void afterThrowing(Throwable throwa)或者public void afterThrowing(Method method,Object args,Object target,Throwable throwable)package AdvisorTest;import org.springframework.aop.ThrowsAdvice;public class ExceptionAdvisor implements ThrowsAdvice . public void afterThrowing(ClassCastExcept

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论