Java面试题超详细整理《Spring篇》,mybatis详细教程

Spring AOP是基于动态代理实现的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用Cglib生成一个被代理对象的子类来作为代理。

Spring AOP 和 AspectJ AOP 有什么区别?

Spring AOP 属于运行时增强,而 AspectJ 是编译时增强。 Spring AOP 基于代理(Proxying),而 AspectJ 基于字节码操作(Bytecode Manipulation)。

Spring AOP 已经集成了 AspectJ ,AspectJ 应该算的上是 Java 生态系统中最完整的 AOP 框架了。AspectJ 相比于 Spring AOP 功能更加强大,但是 Spring AOP 相对来说更简单,如果我们的切面比较少,那么两者性能差异不大。但是,当切面太多的话,最好选择 AspectJ ,它比Spring AOP 快很多。


Spring 常用注解


将一个类声明为Spring的 bean :

  • @Controller:用来标注控制层组件,通过Controller注解标记的类就是一个SpringMVC对象,分发处理器会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping注解,可以把Request请求header部分的值绑定到方法的参数上。
  • @RestController:相当于Controller注解与ResponseBody的组合效果
  • @Component:通用的注解,可标注任意类为 Spring 组件。如果一个Bean不知道属于哪个层,可以使用
  • @Reponsitory:用来标注Dao层,在daoImpl类上注释
  • @Service:用来标注业务层

其他常用注解:

  • @ResponseBody:异步请求,该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入Response对象的body区,返回的值不是html页面,而是其他某种格式的数据时使用。
  • @RequestMapping:一个用来处理请求地址映射的注解,可以作用与类上或方法上,作用于类上标表示类的所有响应请求的方法都是以该地址作为父路径。
  • @Autowired:可以对类成员变量、方法以及构造函数进行标注,完成自动装配的工作。通过该注解来消除get、set方法。
  • @PathVariable:用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出url中的变量作为参数
  • @RequestParam:主要用于在SpringMVC控制层获取参数,类似于request.getParameter(“name”);
  • @ModelAttribute:该Controller的所有方法在调用前,限制性此方法,可用于注解和方法参数中,可以把这个ModelAttribute特性,应用在BaseController中,所有的Controller继承BaseCotroller,即可实现在调用Controller时,先执行@ModelAttribute方法。

@RestController与@Controller的区别是什么?


Controller 返回一个页面:单独使用 @Controller 不加 @ResponseBody的话一般使用在要返回一个视图的情况,这种情况属于比较传统的Spring MVC 的应用,对应于前后端不分离的情况。

在这里插入图片描述

@RestController (等价于@Controller +@ResponseBody)返回JSON 或 XML 形式数据:@RestController只返回对象,对象数据直接以 JSON 或 XML 形式写入 HTTP 响应(Response)中,这种情况属于 RESTful Web服务,这也是目前日常开发所接触的最常用的情况(前后端分离)。

在这里插入图片描述

@ResponseBody 注解的作用是将 Controller 的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到HTTP 响应(Response)对象的 body 中,通常用来返回 JSON 或者 XML 数据,返回 JSON 数据的情况比较多。


@RequestMapping注解的属性


Re

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值