SpringBoot学习总结——HelloWorld程序分析

最近开始学ssm框架才知道了框架的方便之处,然后有人告诉我springboot是ssm框架的升级版,所以准备学一下,在这里记录一下学习的历程和碰到的坑

使用idea可以快速创建springboot项目选择我们需要的模块;向导会联网创建Spring Boot项目;在这里插入图片描述先看一下pom文件中为我们自动生成的依赖

父项目

在这里插入图片描述ctrl点击spring-boot-starter-parent

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.1.8.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
  </parent>

点进去之后可以看到这个父项目,他来真正管理Spring Boot应用里面的所有依赖版本;以后我们导入依赖默认是不需要写版本(没有在dependencies里面管理的依赖自然需要声明版本号)

启动器

在这里插入图片描述对于spring-boot-starter-web
spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件;
Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器

接下来看一下生成的代码

默认生成的Spring Boot项目;

  • 主程序已经生成好了,我们只需要我们自己的逻辑
  • resources文件夹中目录结构
    • static:保存所有的静态资源; js css images;
    • templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面【现在流行前后端分离,JSP正在逐渐被淘汰】);可以使用模板引擎(freemarker、thymeleaf);
    • application.properties:Spring Boot应用的配置文件;可以修改一些默认设置(例如tomcat的端口号);

主程序类,主入口类

在生成的项目中,会自动为我们生成主程序类

/**
 *  @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
 */
@SpringBootApplication
public class HelloWorldMainApplication {

    public static void main(String[] args) {

        // Spring应用启动起来
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

@SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;

ctrl点击@SpringBootApplication进入可以看到详细的注解

@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:标注在某个类上,表示这是一个Spring Boot的配置类

    在这个注解的底层其实标注了@Configuration注解,并对其进行了增强

    @Configuration注解标注在一个配置类上,来代替ssm框架中的配置文
    件(在@Configuration注解底层标注了@Component注解,表明这个配置 类也是容器中的一个组件,交给容器管理)

  • @EnableAutoConfiguration:开启自动配置功能
    添加了这个注解,会告诉SpringBoot开启自动配置功能;这样自动配置才能生效,以前我们需要配置的东西,Spring Boot会帮我们自动配置

    在这个注解底层有@AutoConfigurationPackage注解 @AutoConfigurationPackage注解底层会调用 @Import(AutoConfigurationPackages.Registrar.class)给容器中导入一个组件;

    导入的组件由AutoConfigurationPackages.Registrar.class将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器(如果此时把Controller层放到主配置类所在包之外,则会报404错误)

    @EnableAutoConfiguration注解底层还有@Import(AutoConfigurationImportSelector.class)注解会给容器中导入非常多的自动配置类(xxxAutoConfiguration),就是给容器中导入这个场景需要的所有组件,并配置好这些组件

    有了@EnableAutoConfiguration自动配置类,免去了我们手动编写配置注入功能组件等的工作

Controller

控制器则是和ssm中一样,需要我们自己编写

// @ResponseBody//这个类的所有方法返回的数据直接写给浏览器(如果对象是转为json数据)
// @Controller
@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello() {
        return "hello world quick!";
    }
}
  • @ResponseBody:这个类的所有方法返回的数据直接写给浏览器(如果对象是转为json数据)
  • @Controller:标注这是一个控制器
  • @RestController:作用相当于@ResponseBody+@Controller
  • @RequestMapping:用于映射url到控制器类或一个特定的处理程序方法。可用于类或方法上。用于方法上,表示方法的请求路径,用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

这样的话,springboot的第一个hello world代码就运行成功了
在这里插入图片描述
小结:相对于ssm框架来说,springboot采用了自动配置,省去了对配置文件的编写,减少了代码量和错误量,对于程序员可以说是非常友好了,由此可以看出框架的美还需要我们慢慢去体会

发布了37 篇原创文章 · 获赞 16 · 访问量 6062

猜你喜欢

转载自blog.csdn.net/qq_44039966/article/details/101645909
今日推荐