spring boot

1、简介

Boot可以很容易地创建独立的、基于Spring的生产级应用程序,可以"直接运行"。第三方库采取了一种固执己见的看法,这样你就可以以最小的麻烦开始。Spring Boot应用程序需要最少的Spring配置。

2、特性

  1. SpringBoot Starter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中。

2,使编码变得简单,SpringBoot采用 JavaConfig的方式对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率,比如@Configuration和@bean注解结合,基于@Configuration完成类扫描,基于@bean注解把返回值注入IOC容器。

3.自动配置:SpringBoot的自动配置特性利用了Spring对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们。

4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了,SpringBoot的项目可以打成一个jar包。

3、简单搭建

3.1、创建maven项目

点击create

3.2、 导入依赖

XML 复制代码
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

并且刷新一下

3.3、 创建启动类

java 复制代码
package com;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

3.4、创建控制类

java 复制代码
package com.controller;


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello(){
        System.out.println(" 访问成功!");
        return "hello world";
    }
}

3.5、运行启动类main方法

3.6、运行成功后访问localhost:8080/hello

SpringBoot内部已经约定会自动递归扫描启动类(@SpringBootApplication注解的类)所在的包,所以启动类必须放在包级别较高的位置。

SpringBoat中内嵌tomcat,所以main启动时,其实是启动了内嵌的tomcat。

main方法:把当前项目打成jar包,发布到内嵌的tomcat的webapps下,并修改server.xml配置文件,通过启动命令启动。

dependencyManagement:依赖管理工

它只负责定义版本号,进行版本管理,不负责导入依赖jar包。但当我们真的引入对应依赖的时候,就不需要再写版本号了。

SpringBoat中有很多starter启动器。每一个其实就相当于一个项目包,这里面依赖了很多其它的项目包。我们只需要引入starter,其它的依赖也跟着引引入进来。

starter-web: .SpringMVC所需要的jar包。

@SpringBootApplication 是---个组合注解,里面主要包含以下三个注解:

复制代码
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
        excludeFilters = {@ComponentScan.Filter(type = FilterType.CUSTOM,
                classes = {TypeExcludeFilter.class}
        ) ,@ComponentScan.Filter(
                type = FilterType.CUSTOM,
                classes = {AutoConfigurationExcludeFilter.class}
        )}
)

@SpringBootConfiguration

  1. 它只是@Configuration注解的派生注解;

  2. 它与@Configuration注解的功能一致;

  3. 只不过@SpringBootConfiguration是springboot的注解,而@Configuration是spring的注解。

@Configuration 可以理解为一个Configuration就是对应的一个Spring的xml版的容器;(beans)

@Component

@Bean

是两种使用注解来定义bean的方式。

@Component(和@Service和@Repository)用于自动检测和使用类路径扫描自动配置bean。注释类和bean之间存在隐式的一对一映射(即每个类一个bean)。

@Bean用于显式声明单个bean,而不是让Spring像上面那样自动执行它。它将bean的声明与类定义分离,并允许您精确地创建和配置bean。

@Bean则常和@Configuration注解搭配使用:

@Configuration

public class WebSocketConfig {

@Bean

public Student student(){

return new Student();

}

}

都可以使用@Autowired或者@Resource注解注入;

@Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑。

两者的区别:

如果想将第三方的类变成组件,你又没有没有源代码,也就没办法使用@Component进行自动配置,这种时候使用@Bean就比较合适了。

另外@Bean注解的方法返回值是对象,可以在方法中为对象设置属性。

@EnableAutoConfiguration

帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot,并创建对应配置类的Bean,并把该Bean实体交给IoC容器进行管理。

@ComponentScan: 扫描被@Component (@Service,@Controller)注解的 bean,注解默认会扫描该类所在的包下所有的类。

4、打包

打包插件

XML 复制代码
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

加之前

加入后

双击

进入target目录

启动后别关闭和窗口

去浏览器访问

5、热部署

1、引入依赖

XML 复制代码
  <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <optional>true</optional>
                <scope>true</scope>
            </dependency>

运行后

ctrl + f9 进行热刷新

相关推荐
蓝天星空25 分钟前
spring cloud gateway 3
java·spring cloud
罗政30 分钟前
PDF书籍《手写调用链监控APM系统-Java版》第9章 插件与链路的结合:Mysql插件实现
java·mysql·pdf
一根稻草君36 分钟前
利用poi写一个工具类导出逐级合并的单元格的Excel(通用)
java·excel
kirito学长-Java38 分钟前
springboot/ssm网上宠物店系统Java代码编写web宠物用品商城项目
java·spring boot·后端
木头没有瓜1 小时前
ruoyi 请求参数类型不匹配,参数[giftId]要求类型为:‘java.lang.Long‘,但输入值为:‘orderGiftUnionList
android·java·okhttp
奋斗的老史1 小时前
Spring Retry + Redis Watch实现高并发乐观锁
java·redis·spring
high20111 小时前
【Java 基础】-- ArrayList 和 Linkedlist
java·开发语言
键盘侠0071 小时前
springboot 上传图片 转存成webp
android·spring boot·okhttp
老马啸西风1 小时前
NLP 中文拼写检测纠正论文 C-LLM Learn to CSC Errors Character by Character
java
Cosmoshhhyyy1 小时前
LeetCode:3083. 字符串及其反转中是否存在同一子字符串(哈希 Java)
java·leetcode·哈希算法