`
yangyangmyself
  • 浏览: 233253 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring boot 入门实例

    博客分类:
  • Java
阅读更多
写道
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 

  常用的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层;

 

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数据库连接

 

# 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

 

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方法入口

    相关源码请下载附件

  • 大小: 80.3 KB
  • 大小: 19.7 KB
2
2
分享到:
评论
4 楼 wangyudong 2018-03-14  
学习了,不错的Spring boot实例,参考着很快写出了REST API实例
用Wisdom RESTClient顺利测通,生成精美的测试报告和API文档
https://github.com/Wisdom-Projects/rest-client

谢谢作者的分享!赞一个!
3 楼 李鬼989 2016-11-07  
李鬼989 写道
访问不需要项目名了?只是作为服务开放吗?

好吧,我搞错了.项目名也是写在配置文件里面的
2 楼 李鬼989 2016-11-07  
访问不需要项目名了?只是作为服务开放吗?
1 楼 java_web_hack1 2016-10-29  
spring boot视频教程
http://edu.51cto.com/course/course_id-6558.html

相关推荐

    一个简单的Spring boot入门级实例

    #### 二、Spring Boot 入门实例步骤 **1. 创建 Spring Boot 项目:** - 使用 Spring Initializr 工具或 IDE(如 IntelliJ IDEA、Eclipse)创建一个新的 Spring Boot 项目。 - 在项目初始化过程中选择需要的依赖项...

    springboot入门实例

    SpringBoot入门实例旨在帮助开发者快速理解并掌握Spring Boot的核心特性及使用方式。Spring Boot是由Pivotal团队开发的,旨在简化Spring应用的初始搭建以及开发过程。它通过提供默认配置来简化Spring应用的搭建,...

    spring boot入门

    ### Spring Boot 入门详解 #### 一、Spring 发展历程与 Java 配置方式 Spring 是一个开源框架,最初由 Rod Johnson 创建,目的是为了简化企业级应用的开发。随着时间的发展,Spring 框架经历了多个重要的阶段: #...

    spring boot入门例子

    在“Spring Boot入门例子”中,我们通常会遇到以下几个核心概念和知识点: 1. **起步依赖(Starter Dependency)**:Spring Boot 通过“起步依赖”来简化构建配置。比如,添加`spring-boot-starter-web`依赖,就能...

    Spring Boot实战 ,丁雪丰 (译者) 1

    本书通过实例讲解了Spring Boot在实际场景中的应用,不仅适合初学者了解Spring Boot的基础知识,也对有经验的Java开发者有很高的参考价值。书中不仅涵盖了Spring Boot的主要特性,还提供了详尽的附录,包含了整理好...

    springboot实例2

    SpringBoot实例2是一个基于SpringBoot框架的简单应用示例,主要展示了如何利用SpringBoot的自动配置和便捷特性来快速构建一个可运行的Web项目。在本实例中,开发者可以通过添加多个Controller类来处理不同的HTTP请求...

    《Spring Boot企业级开发教程》配套资源.zip

    源代码是实践环节的重要组成部分,它提供了完整的Spring Boot项目实例,让用户能动手操作并看到代码运行效果。这些代码可能包括了不同场景的应用,如RESTful API设计、事务管理、AOP切面编程、邮件服务、任务调度、...

    十分钟上手spring boot

    Spring CLI示例快速入门** - 通过示例来快速上手Spring Boot CLI。 **11. 开发你的第一个Spring Boot应用** - **11.1. 创建POM** - 使用Maven创建一个新的项目,并在pom.xml文件中添加Spring Boot Starter Web...

    spring-boot入门实例(jpa+postgresql+aop实现valid切面式校验)

    这个入门实例将向我们展示如何使用Spring Boot与JPA(Java Persistence API)、PostgreSQL数据库以及AOP(面向切面编程)来实现数据验证。 首先,让我们详细了解一下Spring Boot。Spring Boot的核心理念是“约定...

    Spring Boot 基础讲解到 综合案例

    Spring Boot 基础讲解到 综合案例

    Spring Boot快速入门

    ### 四、myspringboot和myspringboot-maven子项目 这两个子项目可能分别代表了一个基于Maven构建的Spring Boot应用实例和一个包含Maven配置的示例。在`myspringboot`项目中,你可以看到一个完整的Spring Boot应用...

    spring boot集成beetl极简入门实例.zip

    spring boot集成beetl极简入门实例 项目描述 springboot集成beetl极简入门实例 Beetl 是新一代 Java 模板引擎典范。相对于其他 java 模板引擎,具有功能齐全,语法直观,性能超高,开发和维护模板有很好的体验。是...

    Springboot入门到精通完整版.pdf

    Spring Boot 是一个由 Pivotal 团队开发的框架,其设计目的是简化...通过阅读《Springboot入门到精通【完整版】》,你可以系统地学习这个框架,通过实例和实践练习加深理解,逐步成为一名精通Spring Boot的开发者。

    spring boot 简单实现

    总结来说,这个"spring boot简单实现"项目涵盖了Spring Boot的基本使用,包括自动配置、内嵌式容器的利用,以及拦截器的实现,是一个典型的Spring Boot入门示例。通过这个项目,开发者可以快速了解Spring Boot的核心...

    Spring cloud和Spring boot介绍

    - **易于上手**:Spring Boot 的入门门槛相对较低,即使是初学者也能很快上手并构建出复杂的应用。 #### 二、Spring Cloud **2.1 Spring Cloud 的定位与作用** - **微服务治理框架**:Spring Cloud 是一系列框架...

    spring boot入门--创建项目到数据库连接

    在这个“spring boot入门--创建项目到数据库连接”的教程中,我们将深入探讨如何从零开始创建一个 Spring Boot 项目,并实现与数据库的连接。 首先,我们需要理解 Spring Boot 的核心特性。它内置了一个内嵌的...

    非注解Springmvc+spring+hibernate 入门实例

    下面我们将深入探讨"非注解SpringMVC+Spring+Hibernate入门实例"中的关键知识点。 首先,让我们从SpringMVC开始。SpringMVC是一个Model-View-Controller架构模式的实现,用于构建Web应用程序。在非注解方式下,我们...

    Spring Boot 官方文档1.4.0.M3

    Spring Boot是由Pivotal团队提供的全新框架,旨在简化新Spring应用的初始搭建以及开发...官方文档不仅涵盖了从入门到高级特性的完整学习路径,还提供了丰富的实例和最佳实践,帮助开发者能够深入理解并应用这一框架。

    spring-boot示例项目

    本项目示例基于spring boot 最新版本(2.1.9)实现,Spring Boot、Spring Cloud 学习示例,将持续更新…… 在基于Spring Boot、Spring Cloud 分布微服务开发过程中,根据实际项目环境,需要选择、集成符合项目...

Global site tag (gtag.js) - Google Analytics