Spring Boot 簡介java
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員再也不須要定義樣板化的配置。經過這種方式,Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成爲領導者。程序員
Spring Boot特色web
Spring Boot 主要目標是redis
爲全部 Spring 的開發提供一個從根本上更快的入門體驗spring
開箱即用,但經過本身設置參數,便可快速擺脫這種方式。mongodb
提供了一些大型項目中常見的非功能性特性,如內嵌服務器、安全、指標,健康檢測、外部化配置等數據庫
絕對沒有代碼生成,也無需 XML 配置。apache
能夠在Spring Boot項目的src/main/resources目錄下或者在類路徑下建立一個全局的配置文件application.properties或者application.yml的文件用於修改Spring Boot項目的默認配置值,例如修改項目的默認端口,或者進入DispatcherServlet的請求地址規則等。一般,在實際開發中咱們習慣使用application.properties文件做爲應用的全局配置文件,通常咱們放到src/main/resources目錄下。例如,在src/main/resources目錄下建立一個名稱爲application.yml的文件,配置內容以下:編程
spring: application: name: spring-boot-demo server: port: 8080 servlet: context-path: /demo
Spring Boot爲咱們提供了簡化項目開發的Starter啓動器,例如咱們在項目中使用的pom.xml文件下配置:api
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
Spring Boot就會自動關聯web開發相關的依賴,如Tomcat以及spring-webmvc等,進而對web開發進行支持,同時相關技術的配置也將實現自動配置,程序員便可從繁瑣的配置文件中脫身而出了。除此以外,官方還提供了以下Starters:
spring-boot-starter:這是Spring Boot的核心啓動器,包含了自動配置、日誌和YAML文件的支持。
spring-boot-starter-activemq:爲JMS使用Apache ActiveMQ ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線
spring-boot-starter-amqp:經過spring-rabbit來支持AMQP協議(Advanced Message Queuing Protocol)。
spring-boot-starter-aop:支持面向方面的編程即AOP,包括spring-aop和AspectJ。
spring-boot-starter-artemis:經過Apache Artemis支持JMS的API(Java Message Service API)。
spring-boot-starter-batch:支持Spring Batch,包括HSQLDB數據庫。
spring-boot-starter-cache:支持Spring的Cache抽象。
spring-boot-starter-cloud-connectors:支持Spring Cloud Connectors,簡化了在像Cloud Foundry或Heroku這樣的雲平臺上鍊接服務。
spring-boot-starter-data-cassandra:使用Cassandra分佈式數據庫、Spring Data Cassandra,Apache Cassandra是一套開源分佈式NoSQL數據庫系統。
spring-boot-starter-data-couchbase:使用Couchbase 文件存儲數據庫、Spring Data Couchbase。Spring Data是一個用於簡化數據庫訪問,並支持雲服務的開源框架。
spring-boot-starter-data-elasticsearch:支持ElasticSearch搜索和分析引擎,包括spring-data-elasticsearch。
spring-boot-starter-data-gemfire:支持GemFire分佈式數據存儲,包括spring-data-gemfire。
spring-boot-starter-data-jpa:支持JPA(Java Persistence API),包括spring-data-jpa、spring-orm、Hibernate。
spring-boot-starter-data-ldap:支持 Spring Data LDAP。
spring-boot-starter-data-mongodb:支持MongoDB數據,包括spring-data-mongodb。
spring-boot-starter-data-neo4j:使用Neo4j圖形數據庫、Spring Data Neo4j Neo4j是一個高性能的,NOSQL圖形數據庫,它將結構化數據存儲在網絡上而不是表中。
spring-boot-starter-redis:支持Redis鍵值存儲數據庫,包括spring-redis。
spring-boot-starter-data-rest:經過spring-data-rest-webmvc,支持經過REST暴露Spring Data數據倉庫。
spring-boot-starter-data-solr:支持Apache Solr搜索平臺,包括spring-data-solr。
spring-boot-starter-freemarker:支持FreeMarker模板引擎。
spring-boot-starter-groovy-templates:支持Groovy模板引擎。
spring-boot-starter-hateoas:經過spring-hateoas支持基於HATEOAS的RESTful Web服務。
spring-boot-starter-integration:支持通用的spring-integration模塊。
spring-boot-starter-jdbc:支持JDBC數據庫。
spring-boot-starter-jersey:支持Jersey RESTful Web服務框架。
spring-boot-starter-hornetq:經過HornetQ支持JMS。
spring-boot-starter-jta-atomikos:經過Atomikos支持JTA分佈式事務處理。
spring-boot-starter-jta-bitronix:經過Bitronix支持JTA分佈式事務處理。
spring-boot-starter-mail:支持javax.mail模塊。
spring-boot-starter-mobile:支持spring-mobile。
spring-boot-starter-mustache:支持Mustache模板引擎。
spring-boot-starter-security:支持spring-security。
spring-boot-starter-social-facebook:支持spring-social-facebook
spring-boot-starter-social-linkedin:支持pring-social-linkedin
spring-boot-starter-social-twitter:支持pring-social-twitter
spring-boot-starter-test:支持常規的測試依賴,包括JUnit、Hamcrest、Mockito以及spring-test模塊。
spring-boot-starter-thymeleaf:支持Thymeleaf模板引擎,包括與Spring的集成。
spring-boot-starter-velocity:支持Velocity模板引擎。
spring-boot-starter-web:支持全棧式Web開發,包括Tomcat和spring-webmvc。
spring-boot-starter-websocket:支持WebSocket開發。
spring-boot-starter-ws:支持Spring Web Services。
Spring Boot在進行SpringApplication對象實例化時會加載META-INF/spring.factories文件,將該配置文件中的配置載入到Spring容器,進行自動配置。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.andy</groupId> <version>1.0.0.RELEASE</version> <artifactId>spring-boot-demo</artifactId> <dependencyManagement> <dependencies> <dependency> <groupId>io.spring.platform</groupId> <artifactId>platform-bom</artifactId> <version>Cairo-SR2</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> </project>
@SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }
@RestController public class HelloWorldController { @RequestMapping("/hello") public String hello() { return "Hello,World!"; } }