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 Initializr 是一个基于浏览器的web应用,同时也是一个REST API,能够生成一个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方法的两个参数分别是:配置类和命令行参数。