优点:
给maven 的settings.xml配置文件的profiles标签添加下面的代码:
- <profile>
- <id>jdk-1.8</id>
- <activation>
- <activeByDefault>true</activeByDefault>
- <jdk>1.8</jdk>
- </activation>
- <properties>
- <maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
- <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
- </properties>
- </profile>
表示maven使用jdk1.8。
实现功能:
浏览器发送hello请求,服务器接受请求并处理,响应Hello Springboot! 字符串;即浏览器输入 localhost:8080/hello可以看到浏览器显示Hello SpringBoot!字符串;
① 创建一个maven工程(jar);
② 导入spring boot相关的依赖;
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring‐boot‐starter‐parent</artifactId>
- <version>1.5.9.RELEASE</version>
- </parent>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring‐boot‐starter‐web</artifactId>
- </dependency>
- </dependencies>
③ 编写一个主程序,启动Spring Boot应用
- /**
- * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
- */
- @SpringBootApplication
- public class HelloWorldMainApplication {
-
- public static void main(String[] args) {
-
- // Spring应用启动起来
- SpringApplication.run(HelloWorldMainApplication.class, args);
- }
- }
④ 编写相关的Controller
- @Controller
- public class HelloController {
-
- @ResponseBody
- @RequestMapping("/hello")
- public String hello(){
- return "Hello SpringBoot!";
- }
- }
⑤ 运行主程序测试
⑥简化部署
将这个应用打成jar包,直接使用java-jar的命令进行执行;
- <!-- 这个插件,可以将应用打包成一个可执行的jar包;-->
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
结果:
父项目
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>1.5.9.RELEASE</version>
- </parent>
他的父项目:
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>1.5.9.RELEASE</version>
- <relativePath>../../spring-boot-dependencies</relativePath>
- </parent>
他来真正管理Spring Boot应用里面的所有依赖版本;
也就是Spring Boot的版本仲裁中心;
以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然需要声明版本号)
启动器:
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
spring-boot-starter-web:
Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器。
- @SpringBootApplication
- public class HelloWorldMainApplication {
-
- public static void main(String[] args) {
-
- // Spring应用启动起来
- SpringApplication.run(HelloWorldMainApplication.class,args);
- }
- }
① @SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;这是一个组合注解。
- @Target({ElementType.TYPE})
- @Retention(RetentionPolicy.RUNTIME)
- @Documented
- @Inherited
- @SpringBootConfiguration
- @EnableAutoConfiguration
- @ComponentScan(
- excludeFilters = {@Filter(
- type = FilterType.CUSTOM,
- classes = {TypeExcludeFilter.class}
- ), @Filter(
- type = FilterType.CUSTOM,
- classes = {AutoConfigurationExcludeFilter.class}
- )}
- )
- public @interface SpringBootApplication {
- ...
- }
下面看里面的每个注解含义:
- @Target({ElementType.TYPE})
- @Retention(RetentionPolicy.RUNTIME)
- @Documented
- @Configuration
- public @interface SpringBootConfiguration {
- }
配置类 —–> 配置文件;配置类也是容器中的一个组件:@Component
- @Target({ElementType.TYPE})
- @Retention(RetentionPolicy.RUNTIME)
- @Documented
- @Component //组件注解
- public @interface Configuration {
- @AliasFor(
- annotation = Component.class
- )
- String value() default "";
- }
② @EnableAutoConfiguration:开启自动配置功能;
以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能,这样自动配置才能生效;
- @AutoConfigurationPackage
- @Import({AutoConfigurationImportSelector.class})
- public @interface EnableAutoConfiguration {
- }
有了自动配置类,免去了我们手动编写配置注入功能组件等的工作; 里面的getCandidateConfigurations调用了下面的一个方法: SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader) Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的东西,自动配置类都帮我们;
J2EE的整体整合解决方案和自动配置都在spring-boot-autoconfigure-xxx.RELEASE.jar;
IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目。选择我们需要的模块,向导会联网创建Spring Boot项目,默认生成的Spring Boot项目; 主程序生成好了,我们只需要我们自己的逻辑。
结构目录:
简单Controller,注意@RestController注解。
- package com.zxin.springboot.controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.springframework.web.bind.annotation.RestController;
-
- //@ResponseBody // 这个类的所有方法返回的数据直接写给浏览器(如果是对象 -> 转成json)
- //@Controller
-
- @RestController // 这个注解的作用和上面两个一起的作用相同 (就是 ResponseBody和Controller的合体)
- public class HelloController {
-
- @ResponseBody //如果每个类都需要写,麻烦
- @RequestMapping("/hello")
- public String hello(){
- return "hello quick SpringBoot!";
- }
- }