构建spingboot项目
1、构建 Spring Boot 项目,事实上建立的就是一个 Maven 项目
2、使用idea/eclipse工具构建一个maven项目
3、修改maven项目的pom文件:
1)、在 pom.xml 中添加 Spring Boot 相关的父级依赖, spring-boot-starter-parent 是一个特殊的starter:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
</parent>
注意:这里要使用的版本是:2.0.6.RELEASE,现在官网上的版本是2.1.4.RELEASE,如果使用官网上的版本,则在启动类中不能使用**@SpringBootApplication**注解
2)、在pom文件中添加Web 项目相关的依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3)、这一点是可选的,如果需要将springboot项目打成jar包运行,则需要添加下面的插件:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
4、构建springboot的启动类:
package com.dss.springboot;
@SpringBootApplication
public class HelloMainApplication {
public static void main(String[] args) {
SpringApplication.run(HelloMainApplication.class, args);
}
}
5、构建一个Controller类
package com.dss.springboot.controller;
@Controller
public class HelloController {
@RequestMapping(value="/hello", method=RequestMethod.GET)
@ResponseBody
public String hello() {
return "hello world...";
}
}
6、启动springboot项目:
1)、直接运行HelloMainApplication类中的main方法,即可启动springboot项目,启动之后,可在 控制台 看到启动日志:
可以看到项目启动的端口是8080,因为springboot启动是通过内置的tomcat启动的,此时在浏览器访问:localhost:8080/hello ,即可访问成功
2)、通过maven package指令打包项目,再运行java -jar xxxxx.jar 也可以启动spingboot项目
SpingBoot项目底层原理简单分析
1、pom文件分析:
<!--
spring-boot-starter-parent: 是当前项目的父依赖
spring-boot-starter-parent 项目继承了spring-boot-dependencies 项目
spring-boot-dependencies 项目中主要定义了很多的组件版本,所以我们在引用对应的依赖时,不需要指定<version>
-->
<!-- 使用springboot的版本:2.0.6.RELEASE -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
</parent>
<!--
spring-boot-starter-web 分为两部分:
spring-boot-starter :他是springboot的场景启动器,它针对不同的场景定义了不同的场景启动器
spring-boot-starter-web:就是springboot众多启动器中的web启动器,功能是构建web项目,通过这个启动器可以引入 tomcat、springmvc等等
项目需要哪些场景启动器,只需要直接依赖对应的启动器就ok:例如:需要单元测试,则引入 spring-boot-start-test
-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2、启动类分析:
/**
* @SpringBootApplication用于表示一个引导类,说明 当前是一个 springboot 项目
* 该注解主要由三个注解组成:
* @SpringBootConfiguration (这个注解的组成如下:通过这个注解,表示将当前类添加到spring容器中,它是一个组件,并且它是sping的一个配置类)
* @Configuration 它属于spring底层的一个注解,用于定义配置类,等价于spring的xml配置文件
* @Component 它用于将该注解表明的类添加到spring容器中,表示 是一个组件
*
* @EnableAutoConfiguration
* @AutoConfigurationPackage 将引导类所在包 及子包下面所有的组件添加 到spring 容器中
* @Import(AutoConfigurationImportSelector.class)
* 1、将所有的组件 以 全类名 的方式放回,并且添加到 spring 容器中
* 2、会向 spring 容器中导入非常多的 自动配置类 ,这些配置类都是spring 定义好的,省去我们手动编写 配置文件中的bean标签来注入组件
*
* @ComponentScan
* 被该注解标识的类会被 spring 容器进行管理
*
* 注意:spring项目在启动时,会以引导类所在的包为基准,将所有子包下面的组件扫描到spring容器中,所以,引导类要定义在package的最上层
* @author asong
*
*
*/
@SpringBootApplication
public class HelloMainApplication {
public static void main(String[] args) {
SpringApplication.run(HelloMainApplication.class, args);
}
}