Java框架篇_01 SpringBoot入门


SpringBoot简介

SpringBoot 是一个快速开发的框架, 封装了Maven常用依赖、能够快速的整合第三方框架;简化XML配置,全部采用注解形式,内置Tomcat、Jetty、Undertow,帮助开发者能够实现快速开发,SpringBoot的Web组件(spring-boot-starter-web),默认集成的是SpringMVC框架。

对应的SpringBoot原理介绍:

  1. 能够帮助开发者实现快速整合第三方框架 (原理:Maven依赖封装)
  2. 去除xml配置 完全采用注解化 (原理:Spring体系中内置注解方式)
  3. 无需外部Tomcat、内部实现服务器(原理:Java语言支持内嵌入Tomcat服务器)

SpringBoot、SpringMVC、SpringCloud的区别

SpringBoot 是一个快速开发的框架,能够快速的整合第三方框架;简化xml配置,全部采用注解的形式,内置Tomcat容器,帮助开发者实现快速开发。
Springboot的默认组件是SpringMVC框架,SpringMVC是控制层。
比如,Springboot框架中用到的RestController注解就是SpringMVC提供的。

SpringCloud依赖于Springboot默认情况下已经整合好的SpringBoot组件,可以使用SpringMVC编写Http协议接口,同时SpringCloud是一套完整的微服务解决框架,提供微服务技术解决方案。

SpringBoot快速入门

SpringBoot依赖:

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent -->
  <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.1.8.RELEASE</version>
   </parent>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
   <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.1.8.RELEASE</version>
        </dependency>
   </dependencies>

在pom.xml中引入spring-boot-start-parent,它可以提供dependency management(依赖管理),引入以后在引入其它dependency的时候就不需要注明version了。
spring-boot-starter-web是Springboot的核心组件,它默认已经帮你整合好了Spring、SpringMVC。

我们可以看导入的jar包:
他已经给我们整合好tomcat,Spring,SpringMVC了
在这里插入图片描述
我们点开spring-boot-starter-web查看实现原理(底层封装依赖)就可以理解了
在这里插入图片描述

注解@RestController

首先应该建包:
controller下放的是web+接口,即视图层和业务逻辑层;
service下放到的是接口,即业务逻辑层

写一个类,文档注释介绍得很清晰

/**
 * @Author: Forward Seen
 * @CreateTime: 2022/03/09 14:51
 * @Description: @RestController、@ResponseBody使用
 * 如果在类上加上@RestController,该类中所有的SpringMVCUrl接口映射都是返回json格式
 * 如果在类上用的是@Controller,则需要在方法上加上@ResponseBody,该方法返回json格式
 * 要注意,@RestController是SpringMVC提供的注解,而不是Springboot提供的。
 *
 * 在微服务接口开发中,我们一般都使用Rest风格,也就是数据传输的格式都是json格式,它的协议
 * 采用的是http协议
 *
 * 注解@Controller是控制层注解,SpringMVCUrl接口映射,默认的情况下返回页面跳转,
 * 如果需要返回json格式,则还需要在方法上添加@ResponseBody注解;
 * 当该类中大量方法都需要返回json格式的话,使用@Controller就显得冗余,这时直接在类上
 * 添加@RestController注解即可。
 */
@RestController
public class HelloWorldService {
    @RequestMapping
    public String getUser(){
        return "Forward";
    }
}

Springboot启动

首先,我们要在类上加上@EnableAutoConfiguration 1 注解,然后在启动类入口添加一个main方法,调用SpringApplication.run(启动类,参数)

@RestController
@EnableAutoConfiguration
public class HelloWorldService {
    @RequestMapping("/getUser")
    public String getUser(){
        return "Forward";
    }

    public static void main(String[] args) {
        /**
         * 启动类入口class
         */
        SpringApplication.run(HelloWorldService.class,args);
    }
}

然后成功启动界面:
在这里插入图片描述
我们可以看到启动的信息,他默认启动并初始化了Tomcat,端口8080,http协议。
在这里插入图片描述
之后我们就可以在浏览器中访问了
在这里插入图片描述
如果我们要是使用@Controller注解,就需要在方法上添加@ResponseBody,否则返回的就不是json格式,我们在页面上访问就会报404 2

当然这种方式还是推荐@RestController

@EnableAutoConfiguration
@Controller
public class HelloWorldService {
    @RequestMapping("/getUser")
    @ResponseBody
    public String getUser(){
        return "Forward";
    }

    public static void main(String[] args) {
        SpringApplication.run(HelloWorldService.class,args);
    }
}

上面那个是在本类中运行的,若现在我想在访问其它类是否可以?答案是不行的。需要加上在运行类上加上@ComponentScan(basePackages = "包名") 3才可以。

@RestController
@EnableAutoConfiguration
public class HelloWorldService {
    @RequestMapping("/getUser")
    public String getUser(){
        return "Forward";
    }
}
@ComponentScan(basePackages = "com.symc.service")
@EnableAutoConfiguration
public class App {
    public static void main(String[] args) {
        SpringApplication.run(HelloWorldService.class,args);
    }
}

对于上面的方式上面的方式,我们发现:@EnableAutoConfiguration@ComponentScan 它们还是比较冗余的。
在这里插入图片描述
我们可以在启动类上加上@SpringBootApplication 4注解。

最后我们将项目注解改成这样:

@SpringBootApplication
@RestController
public class HelloWorldService {
    @RequestMapping("/getUser")
    public String getUser(){
        return "Forward";
    }
}
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(HelloWorldService.class,args);
    }
}

所以使用Springboot框架是不是特别简单呢!但是要注意@SpringBootApplication注解的扫包范围 4 !


  1. @EnableAutoConfiguration注解:作用在于让 SpringBoot 根据应用所声明的依赖来对 Spring 框架进行自动配置,这个注解告诉SpringBoot根据添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。它是springboot提供的注解。 ↩︎

  2. 404状态码,找不到资源,在开发者的角度很可能是资源存放路径不对。 ↩︎

  3. @ComponentScan :控制器扫包范围。它是spring-context提供的注解。 ↩︎

  4. @SpringBootApplication : 该注解被@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan 所修饰,换言之 Springboot 提供了统一的注解来替代以上三个注解。扫包范围:在启动类上加上该注解,当前包下或者子包下所有的类都可以扫到。 ↩︎ ↩︎

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值