SpringMVC学习笔记

一、MVC的处理过程:

1.首先控制器接受用户的请求,并决定应该调用哪个模型来进行处理.

2.模型用业务逻辑来处理用户的请求并返回数据

3.最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

二、在Spring MVC中,若要实现上传功能,则需要使用的核心组件:

在Spring MVC中实现上传功能,主要依赖MultipartHttpServletRequest从读取请求中的文件,然后对读取到的MultipartFile类型进行处理。

三、Spring MVC拦截器

Spring MVC拦截器包含三个方法:preHandle()、postHandle()、afterCompletion()。

  • preHandle() 方法:该方***在控制器方法前执行,其返回值表示是否中断后续操作。当其返回值为true时,表示继续向下执行;
    当其返回值为false时,会中断后续的所有操作(包括调用下一个拦截器和控制器类中的方法执行等)。

  • postHandle()方法:该方***在控制器方法调用之后,且解析视图之前执行。可以通过此方法对请求域中的模型和视图做出进一步的修改。

  • afterCompletion()方法:该方***在整个请求完成,即视图渲染结束之后执行。可以通过此方法实现一些资源清理、记录日志信息等工作。

四、@bean

@Bean注解通常出现在带有@Configuration注解的类中,但这不是必要的条件,它也可以出现在带有@Component注解的类中,甚至是普通的类中。

bean的作用域由@scope注解来修改,该注解有五个不同的取值,分别是:singleton、prototype、request、session、global-session。

  1. singleton:当scope的值设置为singleton的时候,整个spring容器中只会存在一个bean实例,通过容器多次查找bean的时候(调用BeanFactory的getBean方法或者bean之间注入依赖的bean对象的时候),返回的都是同一个bean对象,singleton是scope的默认值,所以spring容器中默认创建的bean对象是单例的,通常spring容器在启动的时候,会将scope为singleton的bean创建好放在容器中(有个特殊的情况,当bean的lazy被设置为true的时候,表示懒加载,那么使用的时候才会创建),用的时候直接返回。
     
  2. prototype:如果scope被设置为prototype类型的了,表示这个bean是多例的,通过容器每次获取的bean都是不同的实例,每次获取都会重新创建一个bean实例对象。
  3. request,在一次HTTP请求中,每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文(例如SpringMVC)中才有效
  4. session,在一个HTTP Session中,每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文(例如SpringMVC)中才有效
  5. global-session,在一个全局HTTP Session中,每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文(例如SpringMVC)中才有效

五、@Autowired

注解@Autowired首先会根据类型找到对应的Bean,如果对应类型的Bean 不是唯一的,那么它会根据其属性名称和Bean的名称进行匹配。如果匹配得上,就会使用该Bean ,如果还无法匹配,就会抛出异常。
如果有多个实现类,可以使用注解@Primary表明优先权。
如果多个实现类都声明了优先权,那么还可以使用注解@Qualifier根据类型和名称去寻找对应的Bean。

六、

IoC是控制反转的意思,是一种面向对象编程的设计思想。在不采用这种思想的情况下,我们需要自己维护对象与对象之间的依赖关系,很容易造成对象之间的耦合度过高,在一个大型的项目中这十分的不利于代码的维护。IoC则可以解决这种问题,它可以帮我们维护对象与对象之间的依赖关系,并且降低对象之间的耦合度。

IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂,Spring提供的I0C容器实现的两种方式(两个接口)(面试)
(1)BeanFactory接口:IOC容器基本实现是Spring内部接口的使用接口,不提供给开发人员进行使用(加载配置文件时候不会创建对象,在获取对象时才会创建对象。)
(2)ApplicationContext接口:BeanFactory接口的子接口,提供更多更强大的功能,提供给开发人员使用(加载配置文件时候就会把在配置文件对象进行创建)推荐使用!
 

七、@EnableAutoConfiguration

@EnableAutoConfiguration由@SpringBootApplication引入,它的主要功能是启动Spring应用程序上下文时进行自动配置,它会尝试猜测并配置项目可能需要的Bean。该注解会扫描各个jar包下的spring.factories文件,并加载文件中注册的AutoConfiguration类等。

从源代码得知@Import是@EnableAutoConfiguration注解的组成部分,也是自动配置功能的核心实现者。

八、Spring MVC视图

SpringMVC的视图是View接口,视图的作用是渲染数据,将模型Model中的数据展示给用户

SpringMVC的视图种类很多,默认有转发视图和重定向视图

当工程引入jstl的依赖,转发视图会自动转换为JstlView

若使用的视图技术为Thymeleaf,在SpringMVC的配置文件中配置了Thymeleaf的视图解析器,由此视图解析器解析之后所得到的是ThymeleafView

View是视图的顶层接口

AbstractUrlBasedView是逻辑视图,它依赖ViewResolver定位模板,然后将模型传入模板并渲染

AbstractJackson2View不是逻辑视图,它不依赖ViewResolver的定位,直接将模型渲染为json。

 
  
 
  

你可能感兴趣的:(mvc,spring,java)