认识Spring Boot应用程序(一)

概述

相比于Spring, Spring Boot 具有以下优点:

  • 实现约定大于配置,是一个低配置的应用系统框架。不像Spring 那样“地狱般的配置
    体验”, Spring Boot 不需要配置或者极少配置,就能使用Spring 大量的功能。
  • 提供了内置的Tomcat 或者Jetty 容器。
  • 通过依赖的jar 包管理、自动装配技术,容易支持与其他技术体系、工具集成。
  • 支持热加载,开发体验好。也支持Spring Boot 系统监控,方便了解系统运行状况。

springboot jar

名称作用
spring -boot- starter-webWeb开发支持, 默认使用Tomcat
spring-boot-starter-aopAOP 开发支持,使用AspectJ
spring-boot- starter-jdbcSpring JDBC
spring-boot-starter-data-jpa JPA方式访问数据库,使用Hibernate 作为JPA 实现
spring-boot-starter-data-elasticsearch
spring-boot-starter-data-red is集成Red is ,使用JRedis ,默认连接localhost:6379
spring-boot-starter-cache缓存, 支持多种缓存方式,如本地的、Redis 、Ehcache 等
spring-boot-devtools应用程序快速重启的工具,提升开发体验
spring-boot-starter-data-mongodb集成MongoDB ,默认访问mongo db : // localhosνtest
spring-boot-starter-data-neo4j集成neo4j , 默认访问localhost:7474
spring-boot-starter-data-gemfire 集成分布式缓存
spring-boot-starter-data-soIr基于Apache lucene 的搜索平台,默认访问http: //localhost:8983/solr
spring-boot-s tarter-data-cassandra集成Cassandra,默认访问localhost:7474
spring-boot-sta此er-data-ldap集成ldap
spring-boot-starter-activemq消息集成ActiveMQ 支持
spring-boot-starter-amqp消息集成AMQP 协议支持,如支持RabbitMQ
spring-boot-starter-jta-atomikos分布式事务支持,使用atomikos
spring-boot-starter-jta-bitronix一个开源的分布式事务支持
spring-boot-starter-test包含JUnit 、Spring Test、Hamcrest 、Mockito 等测试工具
spring-boot-starter-webserviceswebservice 支持
spring-boot-starter-websocketwebsocket 支持
spring-boot-starter-jerseyREST 应用和Jersey 支持
spring-boot” starter-freemarkerFreemaker 支持

系统要求

名称版本
Tomcat8+
Maven3.2+
JDK1.8+

servlet容器

开发Spring Boot应用程序

创建maven项目

初始化POM

1.打开pom.xm , 添加如下内容,使工程变成Spring Boot 应用:

 <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.7.RELEASE</version>
  </parent>

或者

 <properties>
        <spring.boot-version>2.1.3.RELEASE</spring.boot-version>
 </properties>
<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
       </dependencies>
</dependencyManagement>
    

2 因为我们搭建的是Web 应用,必须添加spring-boot-starter-web 依赖, 因此增加如下内容:

 <dependencies>
  		<dependency>
  			<groupId>org.springframework.boot</groupId> 
			<artifactId>spring-boot-starter-web</artifactId>
  		</dependency>
  </dependencies>

3 因为本文使用2.0.7.RELEASE版本,在以前spring boot已经把hibernate-validator内置了,但是在2.0.7.RELEASE版本需要新增hibernate-validator配置,否则启动异常,如下:

<dependency>
		    <groupId>org.hibernate</groupId>
		    <artifactId>hibernate-validator</artifactId>
		    <version>5.3.0.Final</version>
</dependency>

spring-boot-dependencies 默认会使用内置的Tomcat ,井支持Spring MVC 、阻STFul 服务。
做好上面的配置后,整个Maven 文件看起来是这个样子的:

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.7.RELEASE</version>
  </parent>
  <groupId>com.gz</groupId>
  <artifactId>spring-boot2-example</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <dependencies>
  		<dependency>
  			<groupId>org.springframework.boot</groupId> 
			<artifactId>spring-boot-starter-web</artifactId>
  		</dependency>
  		<dependency>
		    <groupId>org.hibernate</groupId>
		    <artifactId>hibernate-validator</artifactId>
		    <version>5.3.0.Final</version>
		</dependency>
  </dependencies>
  
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
</project>

编写代码

@SpringBootApplication
public class ClientApplication {
	public static void main(String[] args) {
        SpringApplication.run(ClientApplication.class, args);
    }
}
@RestController
public class HelloworldController {
	@RequestMapping("/")
	String home() {
		return "Hello World!!";
	}
}

如果您打开Web浏览器localhost:8080,您应该看到以下输出:Hello World!!

使用热部署

1 在上面的过程中, 修改类时必须再次重新运行应用, 对于开发者来说非常不方便。Spring Boot 提供了spring-boot-devtools , 它能在修改类或者配置文件的时候自动重新加载Spring Boot应用,需要打开porn 文件,添加如下依赖:

<dependency>
	<groupid>org . springframework . boot</groupid>
	<artifactid>spring-boot-devtools</artifactid>
	<optional>true</optional>
</dependency>

2 然后重启应用,这时修改home方法,改成如下:

@RestController
public class HelloworldController {
	@RequestMapping("/index")
	String home() {
		return "Hello World!!";
	}
}

不需要重新在启动项目,直接访问http://localhost:8080/index,可以看到输出:Hello World!!

注:可能你增加热部署配置文件会报java.lang.IllegalStateException: Failed to read Class-Path attribute from manifest of jar file:/XXX,解决方法就是删掉对应的jar然后maven update

可执行的Jar

1 要创建可执行jar,我们需要添加spring-boot-maven-plugin到我们的 pom.xml。为此,请在该dependencies部分下方插入以下行:

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

2 保存pom.xml并从命令行运行mvn package,如下所示:

$ mvn package

3 查看target目录,会看到一个spring-boot2-example-0.0.1-SNAPSHOT,要运行该应用程序,请使用以下java -jar命令:

java -jar target/spring-boot2-example-0.0.1-SNAPSHOT.jar

访问http://localhost:8080/index,可以看到输出:Hello World!!

构建代码

自动配置

Spring Boot自动配置尝试根据您添加的jar依赖项自动配置Spring应用程序,需要在我们的主程序上增加@SpringBootApplication或@EnableAutoConfiguration 注释,

  1. 如果您不想使用@SpringBootApplication,它隐含地会搜索该目录的子包,相当于加了@ComponentScan扫描。
  2. @SpringBootApplication == @Configuration @EnableAutoConfiguration @ComponentScan

示例:

com 
 +  -  example 
     +  -  myapplication 
         +  -  Application.java 
         | 
         +  - 客户
         | +  -  Customer.java 
         | +  -  CustomerController.java 
         | +  -  CustomerService.java 
         | +  -  CustomerRepository.java 
         | 
         +  - 订单
             +  -  Order.java 
             +  -  OrderController.java 
             +  -  OrderService.java 
             +  -  OrderRepository.java

如果在Application.java中包含@SpringBootApplication注解,会扫描com.example-myapplication包下的所有类

禁用特定的自动配置类

如果不需要的特定自动配置类,则可以使用exclude属性@EnableAutoConfiguration禁用它们,如以下示例所示:

@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}

如果类不在类路径上,则可以使用excludeName注释的属性并指定完全限定名称。最后,您还可以使用该spring.autoconfigure.exclude属性控制要排除的自动配置类列表 。

配置类

Spring Boot支持基于Java的配置。在该类上增加@Configuration注解,或者直接用传统的XML配置

导入java配置类

@Import注释可以用于导入额外的配置类。或者可以使用 @ComponentScan自动获取所有Spring组件,包括 @Configuration类。

导入XML配置

@ImportResource注释来加载XML配置文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值