SpringBoot环境搭建
环境
eclipse-jee-mars
JDK8
maven3.6
springboot1.5.10
git+github
1、创建maven项目
2、添加springboot约束
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
<relativePath />
</parent>
3、创建springboot启动类
package springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//@SpringBootApplication:标识这是springboot的启动类
@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
}
4、编写测试controller
控制类要写在启动类所在包或所在包的下级
package springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TestController {
@RequestMapping("/hi")
public @ResponseBody String hi() {
return "hi, I'm springboot !";
}
}
5、直接运行启动类测试
在浏览器中输入:http://localhost:8080/hi
6、简化部署
-
添加插件(pom.xml)
<build> <plugins> <!-- 这个插件可以将springboot应用打包成一个jar包 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
-
如果项目的打包方式为war,则改为jar(pom.xml)
<packaging>jar</packaging>
-
项目右键->run as ->maven build…
-
找到打包生成jar
-
cmd运行:java -jar jar包名称
C:\Users\Administrator>cd C:\Users\Administrator\Desktop C:\Users\Administrator\Desktop>java -jar 01s.jar
http://localhost:8080/hi
7、将该项目推送到github
- 右键项目->team->shareProject:初始化本地仓库
-
将本地仓库的文件推送到远程仓库:team->remote->push
先将未追踪的文件add index,然后再push
分析
1、pom.xml文件
父项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
<relativePath />
</parent>
它的父项目是:他来真正管理springboot应用里面的所有依赖版本。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.10.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
springboot的版本仲裁中心;
以后我们导入依赖默认是不需要写版本的;(没有在dependencies里面管理的依赖自然需要声明版本号)
导入的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-web:
spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件。
springboot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starte,r相关场景的所有依赖都会导入进来,要用什么功能就导入什么场景的启动器。
主程序类、主入口类
package springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//@SpringBootApplication:标识这是springboot的启动类.
@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
}
@SpringBootApplication: springboot应用标注在某个类上,说明这个类是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 {
- @SpringBootConfiguration:springboot的配置类,标志在某个类上表示该类是springboot的配置类。它的实现如下:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
}
@Configuration:spring的注解,标识这个类为配置类相当于(bean.xml)
-
@EnableAutoConfiguration:自动配置包(自动扫描主入口类所在包下的所有类)
@SuppressWarnings("deprecation") @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage @Import(EnableAutoConfigurationImportSelector.class) public @interface EnableAutoConfiguration {
-
@AutoConfigurationPackage:
底层为:@Import(AutoConfigurationPackages.Registrar.class)
spring的底层注解,给容器中导入一个类。
将主配置类(@SpringBootApplication注解的类)所在包以及下面所有的子包中的所有类导入到spring容器中。所以上诉controller需要写在主入口类所在包或所在包的下及包中,这样spring才能扫描到。
-
@Import(EnableAutoConfigurationImportSelector.class):导入哪些组件的选择器。
将所有需要导入的组件以全类名的方式返回,这些组件将会被添加到容器中。(例如aop的配置,则有相关的自动配置类:org.springframework.boot.autoconfigure.aop.AopAutoConfiguration)
会给容器导入非常多的自动配置类(×××AutoConfiguration):对事务、aop、mvc的配置……
-
从类路径:META-INF/spring.factories下获取需要导入的配置类。Libraries -> Maven Dependencies -> spring-boot-autoconfigure-1.5.10.RELEASE.jar -> META-INF ->spring.factories
J2EE的整体解决方案和自动配置都在spring-boot-autoconfigure-1.5.10.RELEASE.jar包中。
eclipse快速生成springboot项目
安装插件sts 直接 new->spring starter project即可。