springmvc笔记

1、DispatcherServlet拦截请求:
在这里插入图片描述
2、DispatcherServlet解析拦截的请求,交给对应的controller(此url对应的是…/mvc/welcome的客户请求)
在这里插入图片描述

SpringMVC常用注解
@Controller 负责注册一个bean 到spring 上下文中

@RequestMapping 注解为控制器指定可以处理哪些 URL 请求

@RequestBody 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上

@ResponseBody 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区

@ModelAttribute

1、在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法

2、在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中

@RequestParam 在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法

@PathVariable 绑定 URL 占位符到入参

@ExceptionHandler 注解到方法上,出现异常时会执行该方法

@ControllerAdvice 使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常

spring之aop
1) 在业务系统里除了要实现业务功能之外,还要实现如权限拦截、性能监控、事务管理等非业务功能。
通常的作法是非业务的代码穿插在业务代码中,从而导致了业务组件与非业务组件的耦合。

2) aop面向切面编程,就是将这些分散在各个业务逻辑代码中的非业务代码,通过横向切割的方式抽取到一个独立的模块中,从而实现业务组件与非业务组件的解耦。

可能这里有人还看不懂为什么通过第三方实现两个类的依赖关系,就可以减少代码的耦合度。实现两个类的依赖关系,有三种普通注入方式,分为构造函数的注入、属性注入、接口注入。

1 、构造函数注入(Contructor Injection)
MovieLister就只依赖于我们定义的MovieFinder接口,而不依赖于MovieFinder的实现了。

public class MovieLister {
private MovieFinder finder;
 
public MovieLister(MovieFinder finder) {
this.finder = finder;
}
...
}

2 、setter注入

public class MovieLister {
s...
public void setFinder(MovieFinder finder) {
this.finder = finder;
}
}

3、 接口注入
接口注入使用接口来提供setter方法,其实现方式如下。
首先要创建一个注入使用的接口。

public interface InjectFinder {
void injectFinder(MovieFinder finder);
}

之后,我们让MovieLister实现这个接口。

class MovieLister implements InjectFinder {
...
public void injectFinder(MovieFinder finder) {
this.finder = finder;
}
...

以上三种注入方式,虽然实现了解耦,但多余了很多代码来实例化MovieFinder,MovieLister和MovieFinder两个类并没有完全解耦,那如果将注入方式交给第三方呢?通过bean的注解,想调用时直接通过注解注入,招之即来挥之即去,这就是IOC的创建的初衷。

3)、所以通过注解注入bean,就是实例化依赖类的方式,这也是为什么要将@Service和@Repository放到实现类上面而不是接口类上面,接口只是一个规范,需要各种实现类去实现这个接口,我们要用的就是这些实用类的方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值