SpringBoot-基础入门

SpringBoot

为什么使用SpringBoot

  • SpringBoot能快速创建出生产级别的Spring应用

SpringBoot的优点

  • 创建独立Spring应用
  • 内嵌web服务器,不用再去配置服务器
  • 自动starter依赖,简化构建配置,引入对应的starter,SpringBoot会自动导入相关的依赖
  • 自动配置Spring以及第三方功能
  • 提供生产级别的监控、健康检查及外部化配置
  • 无代码生成、无需编写XML,不需要配置复杂的配置文件

综上所述:
SpringBoot是整合Spring技术栈的一站式框架
SpringBoot是简化Spring技术栈的快速开发脚手架

缺点

  • 迭代快,需要时刻关注版本的迭代更新
  • 封装太深,内部原理复杂.不容易精通

编写第一个SpringBoot程序

版本要求

  • JDK 8 及以上
  • Maven 3.3以上

导入SpringBoot依赖

	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

创建主程序类

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
		SpringApplication.run(MainApplication.class, args);
    }
}
  • @SpringBootApplication注解的作用是:表明这是一个SpringBoot配置类(依赖自动导入等)

编写测试程序

  • 在MainApplication同级的目录下新建controller包,包中新建Controller类如下
@RestController // 相当于 @Controller @ResponseBody的合体
public class HelloController {

    @RequestMapping("/hello")
    public String handle01() {
        return "Hello,SpringBoot 2";
    }

}

项目的整体结构

在这里插入图片描述

测试运行

  • 运行MainApplication 方法,控制台输出以下内容
    在这里插入图片描述

  • 浏览器访问http://localhost:8080/hello,页面输出Hello,SpringBoot 2
    在这里插入图片描述

SpringBoot的配置文件

  • 在Resource包下新建application.properties文件,在文件中进行配置,springboot会自动将配置文件进行加载
    在这里插入图片描述

SpringBoot的快速打包,简化部署

  • 不需要在pom文件中配置打包形式war包等,直接在pom文件中导入maven插件
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
  • 执行mvn package命令
    在这里插入图片描述
  • 自动打包成jar包,可在服务器直接执行,命令行使用java -jar springboot-study-1.0-SNAPSHOT.jar
    在这里插入图片描述
    在这里插入图片描述
  • 如果windows窗口启动项目跑一半暂停,可能是因为鼠标点击了窗口,导致项目启动暂停,需要关闭cmd的快速编辑模式,右击cmd窗口,选择默认值,关闭快速编辑模式
    在这里插入图片描述
    在这里插入图片描述

SpringBoot的依赖管理

  • 在SpringBoot的父项目中,几乎声明到了所有开发中常用的依赖以及版本号
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
</parent>
  • 在SpringBoot中需要开发什么功能只需要导入相关的starter场景启动器,比如web
<dependency>
	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency> 
  • 无需关注导入的版本号,springBoot会自动仲裁,如果需要引入非仲裁版本中的仲裁jar,则配置版本号
  <properties>
        <mysql.version>5.1.43</mysql.version>
    </properties>

SpringBoot的组件添加(使用配置文件)

  • 首先新建配置文件,声明@Configuration,声明这是一个配置类,在类中书写带返回值的方法,使用@Bean注解进行标注,代表 给容器中添加组件,以方法名作为组件的id,返回类型就是组件类型,返回的值,就是组件在容器中的实例,默认是单实例,在bean中添加名字,则代表注入的实例名字
@Configuration // 告诉SpringBoot这是一个配置类,等同于配置文件
public class MyConfig {
   
    @Bean // 给容器中添加组件,以方法名作为组件的id,返回类型就是组件类型,返回的值,就是组件在容器中的实例
    public User user01(){
        return new User("zhangsan",12);
    }
     @Bean("tom")
    public Pet tomcatPet(){
        return new Pet("tomcatCat");
    }
}
  • 测试上述的组件是否添加
@SpringBootApplication
public class MainApplication {

    public static void main(String[] args) {
       
        ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
		// 打印出所有注入的组件的名字
        String[] beanDefinitionNames = run.getBeanDefinitionNames();
        for (String beanDefinitionName : beanDefinitionNames) {
            System.out.println(beanDefinitionName);
        }

        // 从容器中获取组件,默认为单例模式,获取的都是一个实例
        Pet tom01 = run.getBean("tom",Pet.class);
        // 如果@Configuration(proxyBeanMethods = true)  代理对象调用方法,SprngBoot总会检查这个组件是否在容器中有
        // 保证组件在容器中单实例
        Pet tom02 = run.getBean("tom",Pet.class);

        System.out.println(tom01==tom02);
    }
}
  • 输出结果,输出了myConfig,证明配置类本身也是一个组件
    在这里插入图片描述
    在这里插入图片描述

配置类上的 @Configuration(proxyBeanMethods = true) 注解,当proxyBeanMethods 为true时,代表使用代理对象方法,表示该配置类中的所有相关注入方法只生成一个实例对象,所以上述才会输出true,当需要生成多个对象时,可以将该值置为false,则每一次生成都是一个新的对象
Full(proxyBeanMethods = true) 全模式 单例,容器中对象唯一,启动时检查容器中是否有该组件实例
Lite(proxyBeanMethods = false) 轻量级,不再是单例 ,不会检查,直接new

导入类的第二种方法

  • 在配置类上增加@Import注解,给容器中自动创建出组件、默认组件的名字就是全类名
@Import({User.class, DBHelper.class})
@Configuration(proxyBeanMethods = true) // 告诉SpringBoot这是一个配置类,等同于配置文件
public class MyConfig {
}
  • 查看注入结果
    在这里插入图片描述

导入外部文件进行添加组件

  • 配置类上使用@ImportResource(“classpath:beans.xml”) 导入外部的Spring配置文件(Spring的原生配置文件)

条件添加注解@Conditional

在这里插入图片描述

@Configuration(proxyBeanMethods = true) // 告诉SpringBoot这是一个配置类,等同于配置文件
public class MyConfig {

    //@ConditionalOnBean(name="tom") 判断当容器中有tom组件时,注册user01组件,可以标注在类上,也可以标注在方法上
    //@ConditionalOnMissingBean(name="tom") 当容器中没有tom时装配
    @ConditionalOnBean(name="tom") //当容器中有tom时进行装配
    @Bean // 给容器中添加组件,以方法名作为组件的id,返回类型就是组件类型,返回的值,就是组件在容器中的实例
    public User user01(){
        return new User("zhangsan",12);
    }
     @Bean("tom")
    public Pet tomcatPet(){
        return new Pet("tomcatCat");
    }

}

SpringBoot配置文件与类的绑定

  • 新定义Car类型
public class Car {

    private String brand;
    private Integer price;

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Car{" +
                "brand='" + brand + '\'' +
                ", price=" + price +
                '}';
    }
}

  • 配置文件配置属性
mycar.brand  = BYD
mycar.price = 1000000
  • 将配置文件与类相绑定一共有两种方式,无论哪种方式,都是先将实体类注入到容器中,只有容器中的对象,才能使用SpringBoot的功能
  1. 在上述的Car类上添加@Component + @ConfigurationProperties ,@Component 注解代表将该类注入到容器,@ConfigurationProperties 代表将配置文件中对应前缀的属性与类相绑定
    @Component
    @ConfigurationProperties(prefix = "mycar")
    
  2. 使用@EnableConfigurationProperties + @ConfigurationProperties,@ConfigurationProperties还是在对应的实体类上,但是@EnableConfigurationProperties 需要在配置类上配置,这个注解会将实体类导入到容器中
    @Configuration(proxyBeanMethods = true) // 告诉SpringBoot这是一个配置类,等同于配置文件
    @EnableConfigurationProperties(Car.class)
    public class MyConfig {
    }
    
    
@ConfigurationProperties(prefix = "mycar")
public class Car {

    private String brand;
    private Integer price;

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Car{" +
                "brand='" + brand + '\'' +
                ", price=" + price +
                '}';
    }
}

  1. 测试,在Controller中写测试类,返回该Car对象,查看输出内容
@RestController
public class HelloController {

    @Autowired
    Car car;
    
    @RequestMapping("/car")
    public Car getCar() {
        return car;
    }
}

在这里插入图片描述

尚硅谷B站SpringBoot教程: SpringBoot2零基础入门

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 是一个基于 Spring 框架的开发框架,它简化了 Spring 应用程序的开发和部署。它提供了一种快速开发的方式,可以帮助开发人员更加专注于业务逻辑的实现,而不是过多地关注底层框架的细节。 以下是 Spring Boot基础入门的步骤: 1. 安装 Java 开发环境:在开始学习 Spring Boot 之前,需要先安装 Java 开发环境。可以从官网下载 Java SE 开发工具包 (JDK)。 2. 下载并安装 Spring Boot:可以从 Spring 官方网站下载 Spring Boot,并按照官方文档安装。 3. 创建一个 Spring Boot 应用程序:可以使用 Spring Boot CLI 命令行工具创建一个新的 Spring Boot 应用程序。在命令行中输入以下命令即可创建一个新的 Spring Boot 应用程序: ``` spring init --dependencies=web my-spring-boot-app ``` 这个命令会创建一个名为“my-spring-boot-app”的新应用程序,并添加一个“web”依赖。这个依赖包含了 Spring MVC 和 Tomcat 服务器,可以用于创建 Web 应用程序。 4. 编写代码:使用你喜欢的代码编辑器打开创建的 Spring Boot 应用程序,并编写代码。在这里,可以使用 Spring Boot 提供的自动配置功能来简化应用程序的开发。 5. 运行应用程序:在命令行中输入以下命令,即可运行应用程序: ``` cd my-spring-boot-app ./mvnw spring-boot:run ``` 这个命令会启动应用程序,并在浏览器中打开它。 6. 学习 Spring Boot 的核心功能:学习 Spring Boot 的核心功能可以帮助你更好地理解 Spring Boot 的工作原理,以及如何使用它来构建更加复杂的应用程序。可以通过阅读官方文档、参加在线课程或者参考书籍来学习 Spring Boot 的核心功能。 以上是 Spring Boot基础入门的步骤,希望对你有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值