《Spring实战第五版》学习日记(一)

    技术2023-11-14  69

    Spring简介与起步

    1.1

    ​ 第一节其实就讲了两个东西

    关于Spring上下文和bean

    Spring的核心就是提供了一个容器,通常被称为Spring上下文,他们会创建和管理应用组件,而这些组件就称为是bean,会在Spring上下文中装配在一起,从而形成一个完整的程序。而装配在一起的方法就是通过依赖注入(Dependency Injection,DI),通常,这是通过构造器参数和属性访问方法来实现的。

    在核心容器上,Spring及其一系列的相关库提供了各种框架来满足线代应用开发的特性。

    通常有两种方式来装配bean:

    ​ 1)使用一个或多个XML文件指导Spring应用上下文将bean装配在一起。

    ​ 2)使用JAVA的配置

    @Configuration 注解告知Spring 这是一个配置类,会为Spring的上下文提供bean。这个配置类的方法使用@Bean 进行标 注,表明这些方法所返回的对象回以bean的形式添加到Spring的应用上下文中(默认情况,这些bean对应得beanID与定义 定义他们的方法名称是相同的。)相对于XML的配置方式,基于JAVA的配置会带来更多项额外的收益,包括更强的类型安全性以及更好的重构能力。但是无论是 使用XML显示配置还是JAVA配置,都是只有当Spring 不能进行自动配置的时候才是必要的。在Spring技术中,自动配置起源于所谓的自动装配(autowiring)和组件扫描(Component scanning)。借助组件扫描技术,Spring能够自动发现应用路径下的组件,并将他们创建成Spring应用上下文中的bean。借助自动装配技术,Spring能够自动为组件注入他们所依赖的其他的bean。SpringXML配置是一种过时的方式,所以我们要关注Spring基于JAVA的配置

    SpringBoot和Spring的关系:

    **SpringBoot 就是Spring框架的拓展。**SpringBoot中提供了很多增强生产效率的方法,自动配置就是SpringBoot所提供的,SpringBoot能够基于类路径中的条目、环境变量和其他因素合理猜测需要配置的组件并将他们装配起来。

    SpringBoot极大的改善了Spring的开发。

    初建Spring项目

    Spring Initializr 是一个基于浏览器的web应用,同时也是一个REST API,能够生成一个Spring 项目结构的骨架,同时使用各种想要的功能来填充它

    Spring项目的项目结构

    很显然这就是一个典型的Maven或Gradle项目结构,其中应用的源码放到src/main/java目录下,测试代码放置到/src/test目录下,而非JAVA的资源放置到src/main/resources 目录下

    mvnw和mvnw.cmd是Maven包装器的脚本,借助这些脚本,即使本机没有安装Maven,也可以构建项目pom.xml Maven的构建规范

    ​ 在pom.xml中已经包含了:打包成Jar的依赖和SpringBoot的插件

    ​ 传统上在任何的服务器平台都是部署的war包,但是对于大多数它不是最佳的选择,任何JAVA云平台都可以运行.JAR包,但是不一定所有的云平台都能运行.WAR程序

    TcaoCloudApplication.java是SpringBoot的主类,它会启动项目

    application.properties:这个文件起初是空的,但是它为我们提供了指定配置属性的地方

    static:存放任意为浏览器提供服务的静态内容

    templates:存放用来渲染内容到浏览器的模板文件,起初也是空的

    引导类

    @SpringBootApplication 标明它是一个SpringBoot应用,它是一个组合注解,结合了三个其他的注解

    @SpringBootConfiguration:**将该类声明为配置类。**之后我们可以按照需求添加基于JAVA 的Spring框架配置,这个注解其实是

    @Congiguration的特殊形式

    @EnableAutoConfiguration:启动SpringBoot的自动配置。

    @ComponentScan:启动组件扫描。这样我们就能够通过像@Component、@Controller,@Service 这样的注解声明其他类,Spring会自动发现它们并注册成Spring应用上下文中的组件

    TacoCloudApplication 另一个重要的地方是它的main方法,这是JAR文件执行命令行时要运行的方法。这个main方法会调用SpringApplication中静态的run()方法,后者会真正执行应用的引导过程,也就是创建Spring的应用上下文。传递给run方法的两个参数分别是:配置类和命令行参数。

    测试类

    TacoCloudApplicationTests 类中的内容并不多:只有一个空的测试方法,但是即使这样,这个测试类还会执行必要的检查,确保Spring应用上下文能够成功的加载,如果变更导致Spring应用上下文无法创建,那么这个测试将会失败,也就可以做出相应的反应来解决相关的问题,@RunWith(SpringRunner.class):@RunWith 是JUnit的注解,它会提供一个测试运行器(runner)来指导JUnit如何运行测试。可以将其想象为给JUnit 应用的一个插件,以提供自定义的测试行为。SpringRunner是SpringJUnit4ClassRunner的别名,引用的目的是便于移除对特定JUnit版本的关联,毫无疑问这个别名更易于阅读和输入@SpringBootTest 会告诉JUnit在启动测试的时候要添加上SpringBoot的功能,可以将这个测试类视为同为在main方法中调用SpringApplication.run()。
    Processed: 0.015, SQL: 9