spring boot 学习(一)

来源:互联网 发布:pp助手mac备份 编辑:程序博客网 时间:2024/06/05 21:16

本文参考spring boot官方的文档:https://spring.io/guides/gs/spring-boot/

使用的是gradle构建项目,配置如下:

buildscript {    repositories {        mavenCentral()    }    dependencies {        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.3.RELEASE")    }}apply plugin: 'java'apply plugin: 'eclipse'apply plugin: 'idea'apply plugin: 'org.springframework.boot'jar {    baseName = 'gs-spring-boot'    version =  '0.1.0'}repositories {    mavenCentral()}sourceCompatibility = 1.8targetCompatibility = 1.8dependencies {    // tag::jetty[]    compile("org.springframework.boot:spring-boot-starter-web") {        exclude module: "spring-boot-starter-tomcat"    }    compile("org.springframework.boot:spring-boot-starter-jetty")    // end::jetty[]    // tag::actuator[]    compile("org.springframework.boot:spring-boot-starter-actuator")    // end::actuator[]    testCompile("junit:junit")}
使用 spring-boot-gradle-plugin 插件可以提供一些创建可执行 jar 和从源码运行项目的任务,它提供了一个内置的依赖解析器,以方便依赖中不用写版本号。

写一个简单的控制器:

package hello;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.bind.annotation.RequestMapping;@RestControllerpublic class HelloController {        @RequestMapping("/")    public String index() {        return "Greetings from Spring Boot!";    }    }

创建一个可执行的类:

package hello;import java.util.Arrays;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ApplicationContext;@SpringBootApplicationpublic class Application {        public static void main(String[] args) {        ApplicationContext ctx = SpringApplication.run(Application.class, args);                System.out.println("Let's inspect the beans provided by Spring Boot:");                String[] beanNames = ctx.getBeanDefinitionNames();        Arrays.sort(beanNames);        for (String beanName : beanNames) {            System.out.println(beanName);        }    }}
main 方法使用了 SpringApplication 工具类。这将告诉Spring去读取 Application 的元信息,并在Spring的应用上下文作为一个组件被管理。
@Configuration 注解告诉 spring 该类定义了 application context 的 bean 的一些配置。
@ComponentScan 注解告诉 Spring 遍历带有 @Component 注解的类。这将保证 Spring 能找到并注册 HelloController,因为它被 @RestController 标记,这也是 @Component 的一种。
@EnableAutoConfiguration 注解会基于你的类加载路径的内容切换合理的默认行为。比如,因为应用要依赖内嵌版本的 tomcat,所以一个tomcat服务器会被启动并代替你进行合理的配置(我们代码里用的是jetty)。再比如,因为应用要依赖 Spring 的 MVC 框架,一个 Spring MVC 的 DispatcherServlet 将被配置并注册,并且不再需要 web.xml 文件。
用@SpringBootApplication代替上面三个注解。

进入项目根目录执行:

我是先执行: gradle wrapper,这样就更新配置文件gradle-wrapper.properties,用我自己的gradle,不用再去下载,当然不执行这句命令也行。


./gradlew build

然后执行:

java -jar build/libs/gs-spring-boot-0.1.0.jar
会看到如下所示主函数的打印结果:


查看服务:

curl localhost:8080

或者浏览器输入查看;


加入compile("org.springframework.boot:spring-boot-starter-actuator")作用:在生产环境中,需要实时或定期监控服务的可用性。spring-boot 的actuator(监控)功能提供了很多监控所需的接口。暴露的功能有这些:


例如:


编写测试类:

import static org.hamcrest.Matchers.equalTo;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.http.MediaType;import org.springframework.test.context.junit4.SpringRunner;import org.springframework.test.web.servlet.MockMvc;import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;@RunWith(SpringRunner.class)@SpringBootTest@AutoConfigureMockMvcpublic class HelloControllerTest {    @Autowired    private MockMvc mvc;    @Test    public void getHello() throws Exception {        mvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON))                .andExpect(status().isOk())                .andExpect(content().string(equalTo("Greetings from Spring Boot!")));    }}

原创粉丝点击