写道
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
可以 Maven | Gradle | Ant | Starters构建项目,参考:http://start.spring.io/ 可以选择Maven或Gradle生成Demo,Spring boot微服务架构结合Docker容器运行。
软件版本运行要求请参考官网: Spring boot官网
本实例软件版本:JDK1.7 + Spring boot 1.3.5 + Spring 4.2.6
可以 Maven | Gradle | Ant | Starters构建项目,参考:http://start.spring.io/ 可以选择Maven或Gradle生成Demo,Spring boot微服务架构结合Docker容器运行。
软件版本运行要求请参考官网: Spring boot官网
本实例软件版本:JDK1.7 + Spring boot 1.3.5 + Spring 4.2.6
常用的starter以及用处可以列举如下:
- spring-boot-starter: 这是核心Spring Boot starter,提供了大部分基础功能,其他starter都依赖于它,因此没有必要显式定义它。
- spring-boot-starter-actuator:主要提供监控、管理和审查应用程序的功能。
- spring-boot-starter-jdbc:该starter提供对JDBC操作的支持,包括连接数据库、操作数据库,以及管理数据库连接等等。
- spring-boot-starter-data-jpa:JPA starter提供使用Java Persistence API(例如Hibernate等)的依赖库。
- spring-boot-starter-data-*:提供对MongoDB、Data-Rest或者Solr的支持。
- spring-boot-starter-security:提供所有Spring-security的依赖库。
- spring-boot-starter-test:这个starter包括了spring-test依赖以及其他测试框架,例如JUnit和Mockito等等。
- spring-boot-starter-web:该starter包括web应用程序的依赖库。
<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>ygnet</groupId> <artifactId>boot</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>Springboot</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.7</java.version> </properties> <!-- Spring Boot 启动父依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.5.RELEASE</version> <relativePath /> </parent> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.2.6.RELEASE</version> </dependency> <!-- Spring Boot web依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!--dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId><scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <versionRange>[2.0,)</versionRange> <goals> <goal>copy-dependencies</goal> </goals> </pluginExecutionFilter> <action> <ignore /> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <!-- 打Jar包(META-INF) --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>yg.boot.App</mainClass> </manifest> </archive> </configuration> </plugin> <!-- 项目资源文件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.5</version> <executions> <execution> <phase>compile</phase> </execution> </executions> <configuration> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> <!-- 是否启动测试 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.17</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin> <!-- 复制依赖包到项目lib文件夹下 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.8</version> <executions> <execution> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> </execution> </executions> <configuration> <outputDirectory>${project.basedir}/lib</outputDirectory> <includeScope>compile</includeScope> </configuration> </plugin> <!-- Spring boot 打包 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Controller
Spring Boot框架提供的机制便于工程师实现标准的RESTful接口,编写Controller代码,首先我们要在pom文件中添加对应的starter,即spring-boot-starter-web,对应的xml代码示例为:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直接填入HTTP响应体中,是REST风格的控制器。
@RequestMapping("/test")表示该控制器处理所有“/test”的URL请求,具体由那个函数处理,要根据HTTP的方法来区分:GET表示查询、POST表示提交、PUT表示更新、DELETE表示删除。
Restful设计指南请参考:RESTFul
Controller的角色,大家可以看到,我这里将很多业务代码混淆在Controller的代码中。实际上,根据程序员必知之前端演进史一文所述Controller层应该做的事是: 处理请求的参数 渲染和重定向 选择Model和Service 处理Session和Cookies,我基本上认同这个观点,最多再加上OAuth验证(利用拦截器实现即可)。而真正的业务逻辑应该单独分处一层来处理,即常见的service层;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直接填入HTTP响应体中,是REST风格的控制器。
@RequestMapping("/test")表示该控制器处理所有“/test”的URL请求,具体由那个函数处理,要根据HTTP的方法来区分:GET表示查询、POST表示提交、PUT表示更新、DELETE表示删除。
Restful设计指南请参考:RESTFul
Controller的角色,大家可以看到,我这里将很多业务代码混淆在Controller的代码中。实际上,根据程序员必知之前端演进史一文所述Controller层应该做的事是: 处理请求的参数 渲染和重定向 选择Model和Service 处理Session和Cookies,我基本上认同这个观点,最多再加上OAuth验证(利用拦截器实现即可)。而真正的业务逻辑应该单独分处一层来处理,即常见的service层;
package yg.boot.action; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @EnableAutoConfiguration @RequestMapping("/test") public class AppController { @RequestMapping("/sayhello") public String sayHello(){ return "Hello World!"; } }
Spring Boot启动 写道
@SpringBootApplication是这个注解是该应用程序入口的标志,然后有熟悉的main函数,通过SpringApplication.run(xxxApplication.class, args)来运行Spring Boot应用。打开SpringBootApplication注解可以发现,它是由其他几个类组合而成的:@Configuration(等同于spring中的xml配置文件,使用Java文件做配置可以检查类型安全)、@EnableAutoConfiguration(自动配置)、@ComponentScan(组件扫描,大家非常熟悉的,可以自动发现和装配一些Bean)
pom文件里可以看到,org.postgresql这个库起作用的范围是runtime,也就是说,当应用程序启动时,如果Spring Boot在classpath下检测到org.postgresql的存在,会自动配置postgresql数据库连接
pom文件里可以看到,org.postgresql这个库起作用的范围是runtime,也就是说,当应用程序启动时,如果Spring Boot在classpath下检测到org.postgresql的存在,会自动配置postgresql数据库连接
# DataSource settings spring.datasource.url=jdbc:postgresql://localhost:5432/jcbk spring.datasource.username=jcbk spring.datasource.password=123456 spring.datasource.driver-class-name=org.postgresql.Driver # Tomcat Server settings (ServerProperties) server.port= 9080 server.address= 127.0.0.1 server.sessionTimeout= 30 server.contextPath= / # Tomcat specifics tomcat.accessLogEnabled= false tomcat.protocolHeader= x-forwarded-proto tomcat.remoteIpHeader= x-forwarded-for tomcat.basedir= tomcat.backgroundProcessorDelay=30 \# secs
package yg.boot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * Hello world! */ @SpringBootApplication public class App { public static void main(String[] args ){ SpringApplication.run(App.class,args); } }
写道
直接运行App后,结果如下图所示。启动后访问http://localhost:9080/test/sayhello, 输出 Hello World!
项目打包 写道
项目打包使用maven-jar-plugin插件即可,生成boot-0.0.1-SNAPSHOT.jar。spring-boot-maven-plugin插件将boot-0.0.1-SNAPSHOT.jar重命名为boot-0.0.1-SNAPSHOT.jar.original,然后生成新boot-0.0.1-SNAPSHOT.jar包,目录结构为:
+---yg
boot
+---org
springframework
boot
loader
+----lib
+----META-INF
+----application.properties
+---yg
boot
+---org
springframework
boot
loader
+----lib
+----META-INF
+----application.properties
Manifest-Version: 1.0 Implementation-Vendor: Pivotal Software, Inc. Implementation-Title: Springboot Implementation-Version: 0.0.1-SNAPSHOT Implementation-Vendor-Id: ygnet Built-By: oy Build-Jdk: 1.7.0_45 Class-Path: lib/spring-test-4.2.6.RELEASE.jar lib/spring-core-4.2.6.RE LEASE.jar lib/spring-boot-starter-web-1.3.5.RELEASE.jar lib/spring-bo ot-starter-tomcat-1.3.5.RELEASE.jar lib/tomcat-embed-core-8.0.33.jar lib/tomcat-embed-el-8.0.33.jar lib/tomcat-embed-logging-juli-8.0.33.j ar lib/tomcat-embed-websocket-8.0.33.jar lib/spring-boot-starter-vali dation-1.3.5.RELEASE.jar lib/hibernate-validator-5.2.4.Final.jar lib/ validation-api-1.1.0.Final.jar lib/jboss-logging-3.3.0.Final.jar lib/ classmate-1.1.0.jar lib/jackson-databind-2.6.6.jar lib/jackson-annota tions-2.6.6.jar lib/jackson-core-2.6.6.jar lib/spring-web-4.2.6.RELEA SE.jar lib/spring-aop-4.2.6.RELEASE.jar lib/aopalliance-1.0.jar lib/s pring-beans-4.2.6.RELEASE.jar lib/spring-context-4.2.6.RELEASE.jar li b/spring-webmvc-4.2.6.RELEASE.jar lib/spring-expression-4.2.6.RELEASE .jar lib/spring-boot-starter-1.3.5.RELEASE.jar lib/spring-boot-1.3.5. RELEASE.jar lib/spring-boot-autoconfigure-1.3.5.RELEASE.jar lib/sprin g-boot-starter-logging-1.3.5.RELEASE.jar lib/logback-classic-1.1.7.ja r lib/logback-core-1.1.7.jar lib/slf4j-api-1.7.21.jar lib/jcl-over-sl f4j-1.7.21.jar lib/jul-to-slf4j-1.7.21.jar lib/log4j-over-slf4j-1.7.2 1.jar lib/snakeyaml-1.16.jar lib/spring-boot-starter-jdbc-1.3.5.RELEA SE.jar lib/tomcat-jdbc-8.0.33.jar lib/tomcat-juli-8.0.33.jar lib/spri ng-jdbc-4.2.6.RELEASE.jar lib/spring-tx-4.2.6.RELEASE.jar lib/postgre sql-9.4.1208.jre7.jar lib/spring-boot-starter-actuator-1.3.5.RELEASE. jar lib/spring-boot-actuator-1.3.5.RELEASE.jar Start-Class: yg.boot.App Created-By: Apache Maven 3.0.4 Spring-Boot-Version: 1.3.5.RELEASE Main-Class: org.springframework.boot.loader.JarLauncher Archiver-Version: Plexus Archiver
Start-Class为Spring boot启动类,Main-Class为main方法入口
相关源码请下载附件
相关推荐
#### 二、Spring Boot 入门实例步骤 **1. 创建 Spring Boot 项目:** - 使用 Spring Initializr 工具或 IDE(如 IntelliJ IDEA、Eclipse)创建一个新的 Spring Boot 项目。 - 在项目初始化过程中选择需要的依赖项...
SpringBoot入门实例旨在帮助开发者快速理解并掌握Spring Boot的核心特性及使用方式。Spring Boot是由Pivotal团队开发的,旨在简化Spring应用的初始搭建以及开发过程。它通过提供默认配置来简化Spring应用的搭建,...
### Spring Boot 入门详解 #### 一、Spring 发展历程与 Java 配置方式 Spring 是一个开源框架,最初由 Rod Johnson 创建,目的是为了简化企业级应用的开发。随着时间的发展,Spring 框架经历了多个重要的阶段: #...
在“Spring Boot入门例子”中,我们通常会遇到以下几个核心概念和知识点: 1. **起步依赖(Starter Dependency)**:Spring Boot 通过“起步依赖”来简化构建配置。比如,添加`spring-boot-starter-web`依赖,就能...
本书通过实例讲解了Spring Boot在实际场景中的应用,不仅适合初学者了解Spring Boot的基础知识,也对有经验的Java开发者有很高的参考价值。书中不仅涵盖了Spring Boot的主要特性,还提供了详尽的附录,包含了整理好...
SpringBoot实例2是一个基于SpringBoot框架的简单应用示例,主要展示了如何利用SpringBoot的自动配置和便捷特性来快速构建一个可运行的Web项目。在本实例中,开发者可以通过添加多个Controller类来处理不同的HTTP请求...
源代码是实践环节的重要组成部分,它提供了完整的Spring Boot项目实例,让用户能动手操作并看到代码运行效果。这些代码可能包括了不同场景的应用,如RESTful API设计、事务管理、AOP切面编程、邮件服务、任务调度、...
Spring CLI示例快速入门** - 通过示例来快速上手Spring Boot CLI。 **11. 开发你的第一个Spring Boot应用** - **11.1. 创建POM** - 使用Maven创建一个新的项目,并在pom.xml文件中添加Spring Boot Starter Web...
同时,文档还涉及了Spring Boot项目的文件结构及配置文件的使用,包括properties和yml两种格式,并提供了相应的实例解析。 适合人群:适用于初学者或希望深入了解Spring Boot的企业级开发者。 使用场景及目标:帮助...
这个入门实例将向我们展示如何使用Spring Boot与JPA(Java Persistence API)、PostgreSQL数据库以及AOP(面向切面编程)来实现数据验证。 首先,让我们详细了解一下Spring Boot。Spring Boot的核心理念是“约定...
Spring Boot 是一个由 Pivotal 团队开发的框架,其设计目的是简化...通过阅读《Springboot入门到精通【完整版】》,你可以系统地学习这个框架,通过实例和实践练习加深理解,逐步成为一名精通Spring Boot的开发者。
Spring Boot 基础讲解到 综合案例
### 四、myspringboot和myspringboot-maven子项目 这两个子项目可能分别代表了一个基于Maven构建的Spring Boot应用实例和一个包含Maven配置的示例。在`myspringboot`项目中,你可以看到一个完整的Spring Boot应用...
spring boot集成beetl极简入门实例 项目描述 springboot集成beetl极简入门实例 Beetl 是新一代 Java 模板引擎典范。相对于其他 java 模板引擎,具有功能齐全,语法直观,性能超高,开发和维护模板有很好的体验。是...
总结来说,这个"spring boot简单实现"项目涵盖了Spring Boot的基本使用,包括自动配置、内嵌式容器的利用,以及拦截器的实现,是一个典型的Spring Boot入门示例。通过这个项目,开发者可以快速了解Spring Boot的核心...
- **易于上手**:Spring Boot 的入门门槛相对较低,即使是初学者也能很快上手并构建出复杂的应用。 #### 二、Spring Cloud **2.1 Spring Cloud 的定位与作用** - **微服务治理框架**:Spring Cloud 是一系列框架...
在这个“spring boot入门--创建项目到数据库连接”的教程中,我们将深入探讨如何从零开始创建一个 Spring Boot 项目,并实现与数据库的连接。 首先,我们需要理解 Spring Boot 的核心特性。它内置了一个内嵌的...
下面我们将深入探讨"非注解SpringMVC+Spring+Hibernate入门实例"中的关键知识点。 首先,让我们从SpringMVC开始。SpringMVC是一个Model-View-Controller架构模式的实现,用于构建Web应用程序。在非注解方式下,我们...
Spring Boot是由Pivotal团队提供的全新框架,旨在简化新Spring应用的初始搭建以及开发...官方文档不仅涵盖了从入门到高级特性的完整学习路径,还提供了丰富的实例和最佳实践,帮助开发者能够深入理解并应用这一框架。