springboot_day01

有不懂的可以留言我,我尽力帮你哈哈哈

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 作为应用服务器。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值