SpringBoot的学习之路(一)

第一部分:

2.Working with Spring Boot


构建系统:

Maven

Maven用户可以从spring-boot-starter-parent项目继承以获得合理的默认值。父项目提供以下功能:

  • Java 1.8作为默认编译器级别。
  • UTF-8源编码。
  • 继承自spring-boot-dependencies pom 的依赖关系管理部分,用于管理公共依赖关系的版本。此依赖关系管理允许您在自己的pom中使用时省略这些依赖项的标记。
  • 使用执行ID 执行repackage 目标repackage
  • 明智的 资源过滤
  • 明智的插件配置(exec插件Git提交ID阴影)。
  • 明智的资源用于滤波application.propertiesapplication.yml 包括特定轮廓文件(例如,application-dev.propertiesapplication-dev.yml

请注意,由于application.propertiesapplication.yml文件接受Spring样式占位符(${…​}),因此Maven过滤被更改为使用@..@占位符。(您可以通过设置调用的Maven属性来覆盖它resource.delimiter。)

继承Starter Parent

要将项目配置为继承spring-boot-starter-parent,请parent按如下所示进行设置 :

<! - 继承默认值为Spring Boot  - > 
<parent> 
	<groupId> org.springframework.boot </ groupId> 
	<artifactId> spring-boot-starter-parent </ artifactId> 
	<version> 2.1.3.RELEASE < / version> 
</ parent>
在没有父POM的情况下使用Spring Boot

不是每个人都喜欢从spring-boot-starter-parentPOM 继承。您可能拥有自己需要使用的公司标准父级,或者您可能更愿意明确声明所有Maven配置。

如果您不想使用spring-boot-starter-parent,您仍然可以通过使用scope=import依赖项来保持依赖项管理(但不是插件管理)的好处 ,如下所示:

<dependencyManagement> 
		<dependencies> 
		<dependency> 
			<! - 从Spring Boot导入依赖关系管理 - > 
			<groupId> org.springframework.boot </ groupId> 
			<artifactId> spring-boot-dependencies </ artifactId> 
			<version> 2.1 .3.RELEASE </ version> 
			<type> pom </ type> 
			<scope> import </ scope> 
		</ dependency> 
	</ dependencies> 
</ dependencyManagement>

如上所述,前面的示例设置不允许您使用属性覆盖单个依赖项。要获得相同的结果,您需要在输入之前在dependencyManagement项目中添加一个 条目。例如,要升级到另一个Spring Data版本系列,您可以将以下元素添加到:spring-boot-dependenciespom.xml

	<dependencies> 
		<! - 覆盖Spring Boot提供的Spring Data版本系列 - > 
		<dependency> 
			<groupId> org.springframework.data </ groupId> 
			<artifactId> spring-data-releasetrain </ artifactId> 
			< version> Fowler-SR2 </ version> 
			<type> pom </ type> 
			<scope> import </ scope> 
		</ dependency> 
		<dependency> 
			<groupId> org.springframework.boot </ groupId> 
			<artifactId> spring-boot -dependencies </ artifactId> 
			<version>2.1.3.RELEASE </ version> 
			<type> pom</ type> 
			<scope> import </ scope> 
		</ dependency> 
	</ dependencies> 
</ dependencyManagement>
使用Spring Boot Maven插件

Spring Boot包含一个Maven插件,可以将项目打包为可执行jar。<plugins>如果要使用它,请将插件添加到您的 部分,如以下示例所示:

<build> 
	<plugins> 
		<plugin> 
			<groupId> org.springframework.boot </ groupId> 
			<artifactId> spring-boot-maven-plugin </ artifactId> 
		</ plugin> 
	</ plugins> 
</ build>

#####Starters
启动器是一组方便的依赖关系描述符,您可以在应用程序中包含这些描述符。您可以获得所需的所有Spring和相关技术的一站式服务,而无需查看示例代码和复制粘贴依赖描述符的负载。例如,如果要开始使用Spring和JPA进行数据库访问,请spring-boot-starter-data-jpa在项目中包含依赖项。

启动器包含许多依赖项,这些依赖项是使项目快速启动和运行所需的依赖项,以及一组受支持的托管传递依赖项。

名称描述Pom
spring-boot-starter核心启动器,包括自动配置支持,日志记录和YAMLPom
spring-boot-starter-activemq使用Apache ActiveMQ进行JMS消息传递的入门者Pom
spring-boot-starter-amqp使用Spring AMQP和Rabbit MQ的入门者Pom
spring-boot-starter-aop使用Spring AOP和AspectJ进行面向方面编程的入门者Pom
spring-boot-starter-artemis使用Apache Artemis进行JMS消息传递的入门者Pom
spring-boot-starter-batch使用Spring Batch的入门者Pom
spring-boot-starter-cache用Spring Framework的缓存支持的初学者Pom
spring-boot-starter-cloud-connectors使用Spring Cloud Connectors的初学者简化了Cloud Foundry和Heroku等云平台中的服务连接Pom
spring-boot-starter-data-cassandra使用Cassandra分布式数据库和Spring Data Cassandra的入门者Pom
spring-boot-starter-data-cassandra-reactive使用Cassandra分布式数据库和Spring Data Cassandra Reactive的入门者Pom
spring-boot-starter-data-couchbase使用Couchbase面向文档的数据库和Spring Data Couchbase的入门者Pom
spring-boot-starter-data-couchbase-reactive使用Couchbase面向文档的数据库和Spring Data Couchbase Reactive的入门者Pom
spring-boot-starter-data-elasticsearch使用Elasticsearch搜索和分析引擎以及Spring Data Elasticsearch的初学者Pom
spring-boot-starter-data-jdbc使用Spring Data JDBC的入门者Pom
spring-boot-starter-data-jpa将Spring Data JPA与Hibernate一起使用的初学者Pom
spring-boot-starter-data-ldap使用Spring Data LDAP的入门者Pom
spring-boot-starter-data-mongodb使用MongoDB面向文档的数据库和Spring Data MongoDB的初学者Pom
spring-boot-starter-data-mongodb-reactive使用MongoDB面向文档的数据库和Spring Data MongoDB Reactive的入门者Pom
spring-boot-starter-data-neo4j使用Neo4j图形数据库和Spring Data Neo4j的入门者Pom
spring-boot-starter-data-redis在Spring Data Redis和Lettuce客户端上使用Redis键值数据存储的初学者Pom
spring-boot-starter-data-redis-reactive使用带有Spring Data Redis被动的Redis键值数据存储和Lettuce客户端的入门者Pom
spring-boot-starter-data-rest使用Spring Data REST通过REST公开Spring Data存储库的入门者Pom
spring-boot-starter-data-solr在Spring Data Solr中使用Apache Solr搜索平台的初学者Pom
spring-boot-starter-freemarker使用FreeMarker视图构建MVC Web应用程序的入门者Pom
spring-boot-starter-groovy-templates使用Groovy模板视图构建MVC Web应用程序的入门者Pom
spring-boot-starter-hateoas使用Spring MVC和Spring HATEOAS构建基于超媒体的RESTful Web应用程序的入门者Pom
spring-boot-starter-integration使用Spring Integration的入门者Pom
spring-boot-starter-jdbc将JDBC与HikariCP连接池一起使用的入门者Pom
spring-boot-starter-jersey使用JAX-RS和Jersey构建RESTful Web应用程序的初学者。替代spring-boot-starter-webPom
spring-boot-starter-jooq使用jOOQ访问SQL数据库的初学者。替代spring-boot-starter-data-jpaspring-boot-starter-jdbcPom
spring-boot-starter-json阅读和写作json的初学者Pom
spring-boot-starter-jta-atomikos使用Atomikos进行JTA交易的入门者Pom
spring-boot-starter-jta-bitronix使用Bitronix进行JTA事务的入门者Pom
spring-boot-starter-mail使用Java Mail和Spring Framework的电子邮件发送支持的入门者Pom
spring-boot-starter-mustache使用Mustache视图构建Web应用程序的入门者Pom
spring-boot-starter-oauth2-client使用Spring Security的OAuth2 / OpenID Connect客户端功能的入门者Pom
spring-boot-starter-oauth2-resource-server使用Spring Security的OAuth2资源服务器功能的入门者Pom
spring-boot-starter-quartz使用Quartz调度程序的入门者Pom
spring-boot-starter-security使用Spring Security的入门者Pom
spring-boot-starter-test使用JUnit,Hamcrest和Mockito等库来测试Spring Boot应用程序的初学者Pom
spring-boot-starter-thymeleaf使用Thymeleaf视图构建MVC Web应用程序的入门者Pom
spring-boot-starter-validation使用Java Bean Validation和Hibernate Validator的初学者Pom
spring-boot-starter-web使用Spring MVC构建Web(包括RESTful)应用程序的入门者。使用Tomcat作为默认嵌入式容器Pom
spring-boot-starter-web-services使用Spring Web Services的入门者Pom
spring-boot-starter-webflux使用Spring Framework的Reactive Web支持构建WebFlux应用程序的初学者Pom
spring-boot-starter-websocket使用Spring Framework的WebSocket支持构建WebSocket应用程序的初学者Pom

Spring Boot制作首发

名称描述Pom
spring-boot-starter-actuator使用Spring Boot的Actuator的初学者,它提供生产就绪功能,帮助您监控和管理您的应用程序Pom

Spring Boot技术首发

名称描述Pom
spring-boot-starter-jetty使用Jetty作为嵌入式servlet容器的入门。替代spring-boot-starter-tomcatPom
spring-boot-starter-log4j2使用Log4j2进行日志记录的入门。替代spring-boot-starter-loggingPom
spring-boot-starter-logging使用Logback进行日志记录的入门。默认日志启动器Pom
spring-boot-starter-reactor-netty使用Reactor Netty作为嵌入式响应式HTTP服务器的入门者。Pom
spring-boot-starter-tomcat使用Tomcat作为嵌入式servlet容器的入门者。使用的默认servlet容器启动器spring-boot-starter-webPom
spring-boot-starter-undertow使用Undertow作为嵌入式servlet容器的入门者。替代spring-boot-starter-tomcatPom

最佳实践:

构建您的代码

Spring Boot不需要任何特定的代码布局即可工作。但是,有一些最佳实践可以提供帮助。

使用“默认”包

当一个类不包含package声明时,它被认为是在“默认包”中。通常不鼓励使用“默认包”,应该避免使用。这可能会导致使用了Spring启动应用程序的特殊问题@ComponentScan,@EntityScan或@SpringBootApplication注解,因为从每一个罐子每一个类被读取。

找到主应用程序类

我们通常建议您将主应用程序类放在其他类之上的根包中。该@SpringBootApplication注解往往放在你的主类,它隐含地定义为某些项目一基地“搜索包”。例如,如果您正在编写JPA应用程序,@SpringBootApplication则使用带注释的类的包来搜索@Entity项目。使用根包还允许组件扫描仅应用于您的项目。

配置类

Spring Boot支持基于Java的配置。尽管可以使用 SpringApplicationXML源,但我们通常建议您的主要源是单个@Configuration类。通常,定义main方法的类是主要的候选者@Configuration。

导入其他配置类

你不需要把所有的@Configuration东西都放在一个班级里。所述@Import注释可以用于导入额外的配置类。或者,您可以使用 @ComponentScan自动获取所有Spring组件,包括 @Configuration类。

导入XML配置

如果您绝对必须使用基于XML的配置,我们建议您仍然从一个@Configuration类开始。然后,您可以使用@ImportResource注释来加载XML配置文件。

自动配置

Spring Boot自动配置尝试根据您添加的jar依赖项自动配置Spring应用程序。例如,如果HSQLDB 在您的类路径上,并且您尚未手动配置任何数据库连接bean,则Spring Boot会自动配置内存数据库。

您需要通过向其中一个类添加@EnableAutoConfiguration或 @SpringBootApplication注释来选择自动配置@Configuration。

逐步更换自动配置

自动配置是非侵入性的。在任何时候,您都可以开始定义自己的配置以替换自动配置的特定部分。例如,如果添加自己的DataSourcebean,则默认的嵌入式数据库支持会退回。

如果您需要了解当前正在应用的自动配置以及原因,请使用–debug交换机启动应用程序。这样做可以为选择的核心记录器启用调试日志,并将条件报告记录到控制台。

Spring Beans和依赖注入

您可以自由地使用任何标准的Spring Framework技术来定义bean及其注入的依赖项。为简单起见,我们经常发现使用 @ComponentScan(找到你的bean)和使用@Autowired(做构造函数注入)效果很好。

如果按照上面的建议构建代码(在根包中定位应用程序类),则可以添加@ComponentScan不带任何参数的代码。您的所有应用程序组件(的@Component,@Service,@Repository,@Controller等)自动注册为SpringBean。

使用@SpringBootApplication Annotation

许多Spring Boot开发人员喜欢他们的应用程序使用自动配置,组件扫描,并能够在他们的“应用程序类”上定义额外的配置。@SpringBootApplication可以使用单个 注释来启用这三个功能,即:

  • @EnableAutoConfiguration:启用Spring Boot的自动配置机制
  • @ComponentScan@Component在应用程序所在的包上启用扫描(请参阅最佳实践
  • @Configuration:允许在上下文中注册额外的bean或导入其他配置类

@SpringBootApplication注释是相当于使用@Configuration@EnableAutoConfiguration以及@ComponentScan与他们的默认属性,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值