您的位置:首页 > 健康 > 养生 > 大片网站建设_青岛网站制作工具_seo排名点击器_最权威的品牌排行榜网站

大片网站建设_青岛网站制作工具_seo排名点击器_最权威的品牌排行榜网站

2025/4/13 5:38:58 来源:https://blog.csdn.net/Sweeping_Robot/article/details/147042295  浏览:    关键词:大片网站建设_青岛网站制作工具_seo排名点击器_最权威的品牌排行榜网站
大片网站建设_青岛网站制作工具_seo排名点击器_最权威的品牌排行榜网站

Spring MVC

  1. 描述一下 Spring MVC 的执行流程
    • 用户发送请求至前端控制器(DispatcherServlet
      • 用户通过浏览器或其他客户端发送 HTTP 请求到 Spring MVC 的前端控制器 DispatcherServlet
    • DispatcherServlet 收到请求调用处理器映射器(HandlerMapping
      • DispatcherServlet 接收到请求后,会调用 HandlerMapping 来查找能够处理该请求的处理器(Handler)。
    • 处理器映射器找到具体的处理器(Handler
      • HandlerMapping 根据请求的 URL、HTTP 方法等信息,查找并返回一个处理器对象,该对象可以是一个具体的控制器方法或一个控制器类。
    • DispatcherServlet 调用处理器适配器(HandlerAdapter
      • DispatcherServlet 根据 HandlerMapping 返回的处理器对象,调用 HandlerAdapter 来执行具体的处理器。
    • 处理器适配器经过适配调用具体的处理器(Controller
      • HandlerAdapter 会根据处理器的类型(如注解方式的控制器方法或传统方式的控制器类),进行适配,并调用具体的处理器方法。
    • Controller 执行完成返回 ModelAndView
      • 控制器方法处理完请求后,会返回一个 ModelAndView 对象,该对象包含了视图名和模型数据(即业务逻辑处理后的结果数据)。
    • HandlerAdapterController 执行结果 ModelAndView 返回给 DispatcherServlet
      • HandlerAdapter 将控制器方法的执行结果(ModelAndView)返回给 DispatcherServlet
    • DispatcherServletModelAndView 传给视图解析器(ViewResolver
      • DispatcherServlet 接收到 ModelAndView 后,会调用 ViewResolver 来解析视图名,找到对应的视图模板。
    • 视图解析器解析后返回具体的视图(View
      • ViewResolver 根据视图名解析出具体的视图对象(如 JSP 页面、Thymeleaf 模板等)。
    • DispatcherServlet 根据视图进行渲染视图(即将模型数据填充至视图中)
      • DispatcherServlet 根据解析后的视图对象,将模型数据填充到视图模板中,完成视图的渲染。
    • DispatcherServlet 响应用户
      • 最后,DispatcherServlet 将渲染后的视图响应给用户,用户在浏览器或其他客户端看到最终的页面或数据。
    • 总结
      • Spring MVC 的执行流程是一个典型的 MVC 模式,将请求的处理分为控制器(Controller)、模型(Model)和视图(View)三个部分,通过 DispatcherServlet 作为前端控制器来协调整个流程,实现了请求的处理和响应。

Spring Boot

  1. 对 Spring Boot 的理解

    • Spring Boot 是一个用于简化 Spring 应用程序开发的框架。它通过提供一种快速启动的方式、自动配置和约定优于配置的原则,极大地简化了 Spring 应用的开发过程。
    • 快速启动能力
      • Spring Boot 提供快速启动的能力,通过内嵌的服务器(如 Tomcat、Jetty 等),可以将应用程序打包成一个可执行的 JAR 文件,从而简化部署和运行。开发者无需手动配置服务器,只需编写少量的代码即可完成应用的开发。
    • 自动配置机制
      • Spring Boot 采用基于条件注解(如 @Conditional)和 SPI(Service Provider Interface)的自动配置机制。根据应用程序中引入的依赖和配置,Spring Boot 可以自动配置整个应用程序的环境。这大大减少了开发者需要进行的手动配置工作。
      • 条件注解根据满足的条件加载对应的配置类或 Bean。这样,Spring Boot 可以智能地判断并加载所需的配置,无需开发者手动配置。自动配置模块包含大量的条件注解,根据条件注解的匹配规则,自动加载对应的配置类或 Bean,从而完成自动配置的过程。
    • 遵循 “约定优于配置” 的原则
      • Spring Boot 遵循 “约定优于配置” 的原则,它提供一系列默认的配置和约定。如果开发者按照这些约定进行开发,就可以大大减少配置文件的编写和配置项的设置。这样,开发者可以更专注于业务逻辑的实现,而不是配置文件的编写。
      • 例如,Spring Boot 默认会根据类路径下的依赖自动配置相关的 Bean,如果开发者需要自定义配置,只需在 application.propertiesapplication.yml 文件中添加相应的配置项即可。
  2. Spring Boot Starter 有什么用

    • Spring Boot Starter 是一种预配置的模块,它封装了特定功能的依赖项,简化和加速项目的配置和依赖管理。
    • 常用 Starter
      • spring-boot-starter-web
        • 用于 Web 应用和配置,包括 Spring MVC、Tomcat 等。开发者只需引入相关的 Starter 依赖,无需手动配置大量的参数和依赖项。
      • spring-boot-starter-data-jpa
        • 用于数据库访问,包括 JPA、Hibernate 等。引入这个 Starter 后,会自动配置所需的组件和 Bean,无需开发者手动添加大量配置。
      • spring-boot-starter-security
        • 用于安全相关的功能,如用户认证、授权等。
      • spring-boot-starter-test
        • 用于测试相关的依赖,如 JUnit、Mockito 等。
    • Starter 的作用
      • 简化配置:Starter 封装了特定功能的依赖项和配置,开发者只需引入相关的 Starter 依赖,无需手动配置大量的参数和依赖项。
      • 管理依赖:Starter 还管理相关功能的依赖项,包括其他 Starter 和第三方库,确保它们能够良好地协同工作,避免版本冲突和依赖问题。
      • 模块化开发:Spring Boot Starter 的设计使得应用可以通过引入不同的 Starter 来实现模块化的开发。每个 Starter 都关注一个特定的功能领域,如数据库访问、消息队列、Web 开发等。
      • 创建自定义 Starter:开发者可以创建自定义的 Starter,以便在项目中共享和重用特定功能的配置和依赖。
  3. Spring Boot 常用注解

    • @SpringBootApplication
      • 作用:标识主应用程序类,通常位于项目的顶级包中。这个注解包含了 @Configuration@EnableAutoConfiguration@ComponentScan
    • @Controller
      • 作用:标识类作为 Spring MVC 的 Controller。
    • @RestController
      • 作用:类似于 @Controller,但它是专门用于 RESTful Web 服务的。它包含了 @Controller@ResponseBody
    • @RequestMapping
      • 作用:用于将 HTTP 请求映射到 Controller 的处理方法。可以用在类级别和方法级别。
    • @Autowired
      • 作用:用于自动注入 Spring 容器中的 Bean。可以用在构造方法、字段、Setter 方法上。
    • @Service
      • 作用:用于标识类作为服务层的 Bean。
    • @Repository
      • 作用:用于标识类作为数据访问层的 Bean,通常用于与数据库交互。
    • @Component
      • 作用:通用的组件注解,用于标识任何 Spring 托管的 Bean。
    • @Configuration
      • 作用:用于定义配置类,类中可能包含一些 @Bean 注解用于定义 Bean。
    • @EnableAutoConfiguration
      • 作用:用于启用 Spring Boot 的自动配置机制,根据项目的依赖和配置自动配置 Spring 应用程序。
    • @Value
      • 作用:用于从属性文件或配置中读取值,将值注入到成员变量中。
    • @Qualifier
      • 作用:与 @Autowired 一起使用,指定注入时使用的 Bean 名称。
    • @ConfigurationProperties
      • 作用:用于将配置文件中的属性映射到 Java Bean。
    • @Profile
      • 作用:用于定义不同环境下的配置,可以标识在类或方法上。
    • @Async
      • 作用:用于将方法标记为异步执行。
  4. Spring Boot 的启动流程

    • 加载配置文件
      • Spring Boot 在启动时会加载 application.propertiesapplication.yml 配置文件中的配置项。
    • 初始化 Spring 应用上下文
      • Spring Boot 会初始化 Spring 应用上下文(ApplicationContext),包括加载配置类、解析注解等。
    • 自动配置
      • 根据项目的依赖和配置,Spring Boot 会自动配置相关的 Bean 和组件。
    • 启动嵌入式服务器
      • 如果项目中包含 Web 相关的依赖(如 spring-boot-starter-web),Spring Boot 会启动嵌入式服务器(如 Tomcat)。
    • 启动应用
      • 最后,Spring Boot 会启动应用程序,监听指定的端口(默认为 8080),等待处理请求。

Java 新特性

  1. JDK 8 新特性
    • Lambda 表达式
      • 允许以更简洁的语法编写匿名函数。Lambda 表达式使得代码更加简洁,并支持函数式编程风格。
      • 示例代码:
        Runnable runnableLambda = () -> System.out.println("Hello World!");
        
    • Stream API
      • 提供了一种声明式的方式来对集合进行操作。它支持各种操作,如过滤、映射、排序、归约等。
      • 示例代码:
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
        List<String> uppercaseNames = names.stream().map(String::toUpperCase).collect(Collectors.toList());
        
    • 函数式接口
      • Java 8 提供了一系列函数式接口,如 ConsumerPredicateFunction 等。
      • 示例代码:
        Consumer<String> printConsumer = System.out::println;
        printConsumer.accept("Hello World!");
        
    • 新的日期和时间 API
      • 引入了 java.time 包,提供了更加全面和易用的日期和时间处理方式,解决了旧的 DateCalendar 类的一些问题。
      • 示例代码:
        LocalDate currentDate = LocalDate.now();
        int year = currentDate.getYear();
        
    • 方法引用
      • 方法引用允许通过方法的名称来引用一个方法,而不是执行它。它们提供了一种更简洁的方式来传递方法作为参数。
      • 示例代码:
        Consumer<String> printConsumer = System.out::println;
        printConsumer.accept("Hello World!");
        
    • 接口中的静态方法
      • 在接口中可以定义静态方法,使得接口能够包含一些通用的工具方法。
      • 示例代码:
        interface MyInterface {static void staticMethod() {System.out.println("Static method in interface");}
        }MyInterface.staticMethod();
        

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com