Spring学习4(1)

 Springboot是用来简化spring开发的全新框架,我们通过重新实现spring学习3中的例子来熟悉体会springboot的开发流程。该框架使用了特定的方式来进行配置,使得我们可以节省配置的时间,专注于核心业务开发。

Spring Boot简介

Spring Boot启动器

 Spring Boot是由一系列启动器组成的,这些启动器构成一个强大的助手。我们根据项目需要,选择并组合相应的启动器就可以快速搭建一个适合项目需要的基础运行框架。
 如果要用创建一个web项目本来需要在pom.xml中增加大量的依赖的模块,现在直接引用一个spring-boot-starter-web即可。spring-boot就提供了大量这样的启动器并且这些启动器都是经过了大量的评估的,所以开发者可以大胆使用。

快速入门

 我们可以创建一个Maven项目来快速体验Spring Boot,创建完成后在pom.xml中输入如下代码:

<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">

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

 <modelVersion>4.0.0</modelVersion>

 <groupId>com.smart</groupId>
 <artifactId>chapter3_1</artifactId>
 <version>1.0</version>
 <packaging>jar</packaging>

 <name>chapter3_1</name>
 <url>http://maven.apache.org</url>

 <properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 </properties>

 <dependencies>
 	<dependency>
 		<groupId>org.springframework.boot</groupId>
 		<artifactId>spring-boot-starter-web</artifactId>
 		<version>1.3.3.RELEASE</version>
 	</dependency>
 </dependencies>
</project>

 我们可以注意到这个配置方式和原来有很大的不同,首先在顶部多出了一个parent,这是用来完成jar版本的控制管理,pom只允许一个parent标签,对于学习够用了,但是对于大型的项目还是要使用自己定义的parent。
 可以使用dependency:tree命令(在run->run configuration->goal中使用)来查看所下载的所有依赖包。
 完成后进入com.smart.web目录创建BbsDaemon.java,其中代码如下:

package com.smart.web;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@EnableAutoConfiguration
public class BbsDaemon{

	@RequestMapping("/")
	public String index() {
		return "welcome to xiaochun bbs";
	}

	public static void main(String[] args) throws Exception{
		SpringApplication.run(BbsDaemon.class, args);
	}

}

 这里@EnableAutoConfiguration是由Boot提供的,对于Spring框架进行自动配置,减少了开发人员的工作量。@RestController@RequestMapping是由Spring MVC提供的,用于创建Rest服务。
 然后直接启动springboot(在run as中有一个spring boot app)后在localhost:8080中就可以发现一个网页已经出来啦。(默认使用的是tomcat)

安装配置

配置

 spring boot可以有多种配置方式,如maven,,gradle乃至spring boot CLI。我们这里使用maven来配置环境。
 那么其实这个环境配置就是上面的方法,在pom中引入所需要的spring-boot-starter-*,这里针对这个项目代码如下:

<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">
  <parent>
  	<groupId>org.springframework.boot</groupId>
  	<artifactId>spring-boot-starter-parent</artifactId>
  	<version>1.3.3.RELEASE</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.smart</groupId>
  <artifactId>chapter3_s</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>

  <name>chapter3_s</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

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

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

 这里用spring-boot-start-jetty来将默认服务器改为jetty,spring-boot-maven-plugin是一个spring boot运行插件(还是别用的好)。

代码包结构规划

 spring bobt没有强制要求工程代码的规划但是还是建议使用如下的结构:

chapter3
	idea
	src
		main
			java
				com.smart
					dao
					domain
					web
					service
				Application
			resources
			webapp

 这里的Application是主类,其中声明了main方法,并且标注@SpringBootApplication来注解配置。其中代码如下:

package com.smart;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application{
	public static void main(String[] args)throws Exception{
		SpringApplication.run(Application.class,args);
	}
}
10-04 17:24