其他分享
首页 > 其他分享> > 第1章 spring起步

第1章 spring起步

作者:互联网

1.1 什么是Spring

将bean装配在一起的行为是通过一种基于依赖注入(dependency injection, DI)的模式实现的。此时,组件不会再去创建它所依赖的组件并管理它们的生命周期,使用依赖注入的应用依赖于单独的实体(容器)来创建和维护所有的组件,并将其注入到需要它们的bean中。通常,这是通过构造器参数和属性访问方法来实现的。

   

相对于基于XML的配置方式,基于Java的配置会带来多项额外的收益,包括更强的类型安全性以及更好的重构能力。即便如此,不管是使用Java还是使用XML的显示配置,只有当Spring不能进行自动配置的时候才是必要的。

   

在Spring技术中,自动配置起源于所谓的自动装配(autowiring)和组件扫描(component scanning)。借助组件扫描技术,Spring能够自动发现应用类路径下的组件,并将它们创建成Spring应用上下文中的bean。借助自动装配技术,Spring能够自动为组件注入它们所依赖的其他bean。

   

随着Spring Boot的引入,自动配置的能力已经远远超出了组件扫描和自动装配。Spring Boot是Spring框架的扩展,提供了很多增强生产效率的方法。最为大家所熟知的增强方法就是自动配置(auto configuration),Spring Boot能够基于类路径中的条目、环境变量和其他因素合理猜测需要配置的组件并将它们装配在一起。

   

1.2 初始化Spring应用

// 在Eclipse中安装Spring Tool Suite
环境:Windows 10 + Java 8 -> Eclipse 2019-12(Eclipse\Java\STS版本需适应)

无法打开marketplace的情况下,使用install new software…

   

// spring官网上有教程,涉及模块选择;

网络畅通情况下,即可顺利安装。

   

默认情况下,新项目的向导会调用Spring Initializr来生成项目。通常情况下,没有必要覆盖最后一页Base URL的默认值。但是,如果你基于某种原因托管了自己的Initializr克隆版本(可能是本地机器上的副本或者公司防火墙内部运行的自定义克隆版本),那么你可能需要在点击Finish之前修改Base URL输入域,使其指向自己的Initializr实例。

   

pom.xml中,<packaging>设置在Spring Initializr中默认会使用基于JAR的打包方式,除非我们明确告诉它采用其他的方式。

传统的Java Web应用都是打包成WAR文件,JAR只是用来打包库和较为少见的桌面UI应用的。打包为JAR文件是基于云思维做出的选择。

如果想要将应用部署到传统的Java应用服务器上,那么需要选择使用基于WAR的打包方式并要包含一个Web初始化类。

   

// 取消eclipse自动折叠import语句

   

@SpringBootApplication是一个组合注解:

@SpringBootConfiguration:将该类声名为配置类;

这个注解实际上是@Configuration注解的特殊形式;

@EnableAutoConfiguration:启动Spring Boot的自动配置;

@ComponentScan:启动组件扫描;

这样我们能够通过像@Component、@Controller、@Service这样的注解声名其他类,Spring会自动发现它们并将它们注册为Spring应用上下文中的组件。

   

传递给SpringApplication.run()方法的两个参数中,一个是配置类,一个是命令行参数。尽管传递给run()的配置类不一定要和引导类相同,但这是最便利和最典型的做法。

   

即使这个类中只有一个空的测试方法,这个测试类还是会执行必要的检查,确保Spring上下文能够成功加载。如果你所做的变更导致Spring上下文无法创建,那么这个测试将会失败,你就可以做出反应来解决相关的问题了。

即便没有任何断言或代码,这个空的测试方法也会提示这两个注解完成了它们的工作并成功加载Spring应用上下文。

   

1.3 编写Spring应用

@Controller注解的主要目的是让组件扫描将这个类识别为一个组件。

HomeController带有@Controller,所以Spring的组件扫描功能会自动发现它,并创建一个HomeController实例作为Spring应用上下文中的bean。

实际上,有一些其他的注解与@Controller有着类似的目的(包括@Component、@Service和@Repository)。添加上述任意其他注解,其作用是完全相同的。但是选择使用@Controller更能描述这个组件在应用中的角色。

   

模板名称是有逻辑视图名派生而来的,再加上"/templates/"前缀和".html"后缀。最终形成的模板路径将是"/templates/home.html"。

   

Tomcat是应用的一部分。

   

DevTools:

应用自动重启;

但,在构建规范中添加、变更或移除依赖的时候,为了让变更生效,我们需要重启应用。

浏览器自动刷新和禁用模板缓存;

可以对模板进行任意数量的修改,只需刷新一下浏览器。

DevTools运行的时候,会和应用程序一起,同时自动启动一个LiveReload服务器。当它与LiveReload浏览器插件(Chrome\Safari\Firefox)结合起来的时候,就能够在模板、图片、样式表、JavaScript等发生变化时自动刷新浏览器。

内置的H2控制台;

如果使用H2数据库进行开发,DevTools会自动启动H2。http://localhost:8080/h2-console

   

1.4 俯瞰Spring风景线

Spring核心框架

Spring Boot

Spring Data

Spring Security

Spring Integration和Spring Batch

Spring Cloud

   

   

标签:起步,Java,spring,自动,应用,Spring,组件,注解
来源: https://www.cnblogs.com/wufei89/p/15101432.html