美文网首页
Spring起步

Spring起步

作者: yuq329 | 来源:发表于2020-06-06 21:59 被阅读0次

Spring起步

什么是Spring?

  • Spring的核心是提供一个容器container),通常称为Spring应用上下文String application context),它们会创建和管理应用组件bean
  • 通过一种基于依赖注入的模式将bean装配在一起
    • 通常通过构造器参数和属性访问方法来实现的
    • 优点
      • 组件不会再去创建它所依赖的组件并管理它们的生命周期
      • 使用依赖注入的应用:依赖于单独的实体(容器)来创建和维护所有的组件,并将其注入到需要它们的bean
    • 配置方式
      • 历史上,指导Spring应用上下文bean装配在一起的方式是使用一个或者多个XML文件(描述各个组件以及它们与其他组件的关联关系)
      • 最近的Spring版本中,基于Java的配置更为常见
        • @Configuration注解会告知Spring这是一个配置类
        • 配置类中的方法使用@Bean注解进行了标注,表明这些方法返回的对象会以bean的形式添加到Spring的应用上下文中(默认情况下,bean id与方法名相同)
      • 基于Java方式的优点:
        • 更强的类型安全性以及更好的重构能力
      • 不管何种方式,只有当Spring不能自动配置才需要
  • Spring自动配置
    • 组件扫描:自动发现应用类路径下的组件,并将它们创建成Spring应用上下文中的bean
    • 自动装配:自动为组件注入它们所依赖的其他bean
  • Spring Boot
    • Spring框架的扩展
    • Spring自动配置技术进行了增强
    • 优点
      • 大幅度减少了构建应用所需的显式配置的数量

初始化Spring应用

  • 使用Spring Initializr初始化应用
    • 它是一个基于浏览器的Web应用,同时也是一个REST API
    • 能够生成一个Spring项目结构的骨架
    • 可以使用各种想要的功能填充它
    • 相当于一个模版
  • 构建规范
    • 打包成jar文件还是war文件?
      • 传统的Java Web应用都是打包成war文件,jar只是用来打包库和较为少见的桌面UI应用的
      • 打包jar文件是基于云思维做出的选择,所有的Java云平台都能够运行和执行jar文件,但war不一定Spring Initializr默认使用基于jar的打包方式
    • 什么是pom.xml文件?
      • 项目Maven构建规范
      • Project Object Model
    • pom.xml文件中依赖项的artifact ID上的starter单词的作用?
      • Spring Boot Starter依赖的特别之处在于它们本身并不包含库代码,而是传递性地拉取其他的库
      • 好处:
        • 构建文件显著减小并且更易于管理,不必为每个所需的依赖库都声明依赖
        • 能够根据它们所提供的功能来思考依赖,而不是根据库的名称
        • 不必担心库版本的问题
    • 引导类
      • @SpringBootApplication注解
        • 表明这是一个Spring Boot应用
        • 是一个组合注解
          • @SpringBootConfiguration:将该类设置为配置类,此注解实际上是@Configuration注解的特殊形式
          • @EnableAutoConfiguration: 启用Spring Boot的自动配置
          • @ComponentScan:启用组件扫描。这样我们能通过@Component@Controller@Service这样的注解声明其他类,Spring会自动发现它们并将它们注册为Spring应用上下文中的组件
      • SpringApplication中静态run()方法执行应用的引导过程,查创建Spring上下文

编写Spring应用

  • SpringMVC:其核心控制器的理念
    • 控制器是处理请求并以某种方式进行信息响应的类
    • 浏览器应用中,控制器负责填充可选的Model并将请求传递给一个View,以便于生成返回给浏览器的HTML
    • @Controller注解主要让组件扫描将类识别为一个组件(@Component@Service以及@Repository有着类似的目的)
    • @GetMapping注解将HTTP GET请求的路径与处理方法进行绑定
  • Spring Boot DevTools
    • 开发辅助工具
      • 代码变更后应用自动重启
      • 当面向浏览器的资源(HTMLJSCSS等)发生变化时,自动刷新浏览器
      • 自动禁用模版缓存
      • 如果使用H2数据库,内置H2控制台
    • 应用自动重启
      • DevTools运行的时候,应用程序会被加载到JVM两个 独立的类加载器 中,分别加载:
        • 你的Java代码属性文件以及项目中“src/main”路径下几乎所有内容
        • 依赖的库(这些库不太可能经常发生变化)
      • 当探测到变更时,DevTools只会 重新加载 包含项目代码的类加载器,并 重启 Spring的应用上下文,这样减少应用启动时间
      • 不足:自动重启无法应对依赖项的变化
        • 当我们在构建规范中 添加、变更、移除依赖 的时候,需要手动重新启动应用
    • 浏览器自动刷新和禁用模版缓存
      • 目的:为了在代码变更后,立即看到最新的结果,而不是之前结果的缓存
      • DevTools运行时,自动启动一个LiveReload服务器,当其与LiveReload浏览器插件结合起来的时候,就能够在模版图片样式表JavaScript等发生变化的时候自动刷新浏览器
    • 内置的H2控制台
      • 如果使用H2数据库开发,DevTools自动启用H2.通过浏览器访问“http://localhost:8080/h2-console”就能看到应用使用的数据

俯瞰Spring风景线

  • Spring核心框架
    • web框架:Spring MVC
    • 数据持久化:JdbcTemplate
    • 反应时Web框架Spring WebFlux
  • Spring Boot
    • starter依赖
    • 自动配置
    • Actuator能够洞察应用运行时的内部工作状况,包括指标线程dump信息健康状况以及应用可用的环境属性
    • 灵活的环境属性规范
    • 在核心框架的测试辅助功能之上提供了对测试的额外支持
    • 提供一个基于Groovy脚本的编程模型,称为Spring Boot CLICommand—Line Interface
  • Spring Data
    • 将应用程序的数据repository定义为简单的Java接口,在定义驱动存储和检索数据的方法时使用一种命名约定即可
    • 能够处理多种不同类型的数据库,包扩关系型数据库、文档数据库(Mongo)、图数据库(Neo4j)等
  • Spring Security
    • 解决应用程序通用的安全性需求,包括身份验证、授权和API安全性
  • Spring IntegrationSpring Batch
    • 提供对应用程序之间集成或者与本应用中的其他组件进行集成的一些方法
    • Spring Integration解决了实时集成问题。在实时集成中,数据在可用时马上就会得到处理;
    • Spring Batch解决的是批处理集成问题
  • Spring Cloud
    • 应用开发的新趋势不再将应用程序作为单个部署单元来开发,而是使用由微服务组成的多个独立部署单元来组合形成应用程序
    • Spring Cloud直面一系列微服务问题,Spring Cloud是使用Spring开发云原生应用程序的一组项目

Reference

相关文章

  • 手写MyBatis起步依赖

    spring-boot起步依赖 自动整合第三方组件 与 spring/springMVC框架 起步依赖本质就是 利...

  • spring起步

    一、后端开发的概念和技术栈 1.1什么是后端开发 后端开发 1.2Java后端技术图谱 二、JavaEE概...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? 后端开发含义 1.2 Java后端技术图谱? 二、JavaE...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发 (https://blog.csdn.net/o4dc8ojo...

  • Spring起步

    一. 后端开发的概念和技术栈 1.1 什么是后端开发? https://blog.csdn.net/o4dc8oj...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发 (https://blog.csdn.net/o4dc8ojo...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? https://blog.csdn.net/jly59476...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? 什么是后端开发 Java后端技术栈梳理 1.2 Java后端...

  • Spring起步

    一、后端开发的概念和技术栈 1.1 什么是后端开发? 后端开发 后端开发需要的技能 1.2 Java后端技术图谱 ...

  • Spring起步

    Spring起步 什么是Spring? Spring的核心是提供一个容器(container),通常称为Sprin...

网友评论

      本文标题:Spring起步

      本文链接:https://www.haomeiwen.com/subject/utqgzhtx.html