有不懂的可以留言我,我尽力帮你哈哈哈
springboot的特点
轻松创建spring应用程序.
内嵌tomcat,jetty等web容器,不需要部署war文件(我们之前的项目都是要将文件打包成war包然后放到tomcat中再运行的).
简化了第三方jar包的引用,通过提供的一系列的"starter(启动器)"来简化Maven的配置,不需要添加很多依赖包.
开箱即用,尽可能自动配置spring.
springboot入门案例
这里创建的是maven项目,关于如何创建maven项目的话,大家看我写的这篇博客: 关于maven
我们创建两个项目
- 一个war结构的maven项目(就是创建maven项目的时候使用了maven骨架中的maven-web-app那个),war结构的maven项目的使用看这篇博客:
[war包maven项目使用]()
.
- war包: 是指web archive,web归档文件,以.war结尾,war包代表一个web应用程序,打包放在tomcat这样的容器的webapp目录下,启动容器就可以在上面跑的.
- 一个jar包的maven项目(就是创建maven项目的时候使用maven骨架中的maven-quickstart那个),这篇博客都是jar包的maven项目.
- jar包: 是指java archive,java归档文件,以.jar结尾,就是我们平时导入的那些jar包,里面放的都是编译生成的class文件.
先以jar包的maven项目为例
在pom.xml中添加spring-boot-starter-web依赖和它的父依赖,如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-parent</artifactId>
<version>2.1.6.RELEASE</version>
</parent>
<!--添加了web启动器依赖以后,他会自动导入web-mvc需要的依赖以及自动配置依赖等->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
- spring-boot-parent父依赖的作用:
- 在pom.xml中引入
spring-boot-parent
,它用来提供相关的默认dependency management,即相关的Maven默认依赖管理,引入以后再申明其他常用的dependency依赖的时候就不需要声明version了,上面配置文件中的spring-boot-starter-web
就没有放版本,因为它默认使用父依赖中的版本,如果没有设置父依赖,就必须设置版本属性
- spring-boot-starter-web的作用:
- 这是springweb的核心组件,支持全栈式Web开发,包括Tomcat和spring-webmvc.
写一个控制器,然后写一个main方法,把程序跑起来,如下:
/**
* 声明一个控制器
* RestController注解,相当于@Controller+@ResponseBody两个注解的结合,
* 返回json数据不需要在方法前面加@ResponseBody注解了,
* 但使用@RestController这个注解,和@Controller一样不能返回jsp,html页面,视图解析器无法解析jsp,html页面,只能直接返回return的数据
*
* 声明自动配置:相当于写了spring的配置文件
*/
@RestController
@EnableAutoConfiguration
public class HelloController {
/**
* 因为要通过浏览器地址栏访问,所以映射路径肯定是要有的,也就是资源路径
* @RequestMapping(path = "/hello") = @RequestMapping("hello")
* 有参数的话,我们把参数放在路径后面,然后写在方法中获取,如下所示
* @return
*/
@RequestMapping(path = "/hello/{name}")
@ResponseBody //把返回值转换为json,声明为@RestController,这里就可以不写了
public String hello(@PathVariable("name") String name) {
return "Hello Spring Boot!" + name;
}
//启动springboot的项目
public static void main(String[] args) {
SpringApplication.run(HelloController.class, args);
}
}
当访问`http://localhost:8080/hello/张三`的时候
界面就会输出`"Hello Spring Boot!"张三`
springboot启动的两种方式_都是以jar方式为例
这种方式的项目不用部署到tomcat中,打包后启动main方法就相当于所有的控制器都跑起来了,就可以运行了哈哈哈.
第一种: 如下面的例子,在每个控制器中都配置
EnableAutoConfiguration
,并使用SpringApplication
启动程序.*这种方法不推荐,因为只能启动一个控制器,也就是每个类中都要写main方法,因为一个类就是一个控制器嘛.
- 例如下面的这个控制器
@RestController
@EnableAutoConfiguration
@RequestMapping("user")
public class UserController {
//这样配置要和上面的连起来看,相当于@RequestMapping("/user/{id}")
@RequestMapping("{id}")
/**
* 通过id查询用户的信息
*
* 启动后在地址栏输入:http://localhost:8080/user/10
* 在页面上显示:{"id":10,"username":"user","password":"123"}
*/
public User findUserInfo(@PathVariable() int id) {
//User类中有id,姓名,密码三个字段,
User user = new User(id, "user", "123");
//会将user对象转换为json对象输出,就算我User类中没有toString()方法也一样
return user;
}
public static void main(String[] args) {
//启动springboot项目
SpringApplication.run(App.class, args);
}
}
启动之后,当访问`http://localhost:8080/user/10`的时候
界面就会输出: {"id":18,"username":"user","password":"123"}
第二种: 自己创建一个类,假设为
App类
,在该类里面配置两个东西(推荐使用),如下:
/**
* @ComponentScan()中的参数
* basePackages={"包1","包2",...},它的参数是一个数组,
* 表示这个包下面的类的控制器都会被扫描
* 而且包路径是相对路径,相对于以java为名的这个包,如果为java.springboot.controller只需要写springboot.controller就可以了
*/
@EnableAutoConfiguration
@ComponentScan(basePackages = {"springboot.controller","springboot.model"})
public class App {
public static void main(String[] args) {
//启动springboot项目
SpringApplication.run(App.class, args);
}
}
此时上面两个控制器的main方法还有@EnableAutoConfiguration都可以删掉了
App类的main方法启动之后,就相当于HelloController和UserController两个控制器都运行了
输入对应的网址都可以访问到两个控制器对应的方法,得到相应的输出
与各自运行main方法效果完全一致
springboot的
依赖
介绍maven项目的核心就是pom.xml文件,POM( Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等。
EnableAutoConfiguration
这个注解的作用在于让springboot根据应用所声明的依赖来对spring框架进行自动配置,减少开发人员的工作量,就相当于applicationPageContext的功能.
springboot推荐采用基于java注解的配置方式而不是传统的xml,只需要在主配置java类上添加
@EnableAutoConfiguration
注解就可以启动自动配置.*** @RestController(设置该类为控制器)和@RequestMapping(配置映射路径)**由springmvc提供,用来创建rest服务,本身和springboot冒的关系.
spring-boot-starter: 核心pom,包含自动配置支持,日志库以及对YAML配置文件的支持.
spring-boot-starter-web: 这是springweb的核心组件,支持全栈Web开发,包括Tomcat和spring-webmvc.
spring-boot-starter-amqp: 通过 spring-rabbit 支持 AMQP
spring-boot-starter-aop: 包含 spring-aop 和 AspectJ 来支持面向切面编程(AOP).
spring-boot-starter-batch: 支持 Spring Batch,包含 HSQLDB。
spring-boot-starter-data-jpa: 包含 spring-data-jpa、spring-orm 和 Hibernate 来支持 JPA。
spring-boot-starter-data-mongodb: 包含 spring-data-mongodb 来支持 MongoDB。
spring-boot-starter-data-rest: 通过 spring->data-rest-webmvc 支持以 REST 方式暴露 Spring Data 仓库。
spring-boot-starter-jdbc: 支持使用 JDBC 访问数据库.
spring-boot-starter-security: 包含 spring-security。
spring-boot-starter-test: 包含常用的测试所需的依赖,如 JUnit、Hamcrest、Mockito 和 spring-test 等。
spring-boot-starter-velocity: 支持使用 Velocity 作为模板引擎。
spring-boot-starter-websocket: 支持使用 Tomcat 开发 WebSocket 应用。
spring-boot-starter-ws: 支持Spring Web Services
spring-boot-starter-actuator: 添加适用于生产环境的功能,如性能指标和监测等功能。
spring-boot-starter-remote-shell: 添加远程 SSH 支持
spring-boot-starter-jetty: 使用 Jetty 而不是默认的 Tomcat 作为应用服务器。
spring-boot-starter-log4j: 添加 Log4j 的支持
spring-boot-starter-logging: 使用 Spring Boot 默认的日志框架 Logback
spring-boot-starter-tomcat: 使用 Spring Boot 默认的 Tomcat 作为应用服务器。