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 进行热刷新

相关推荐
coffee_baby1 分钟前
享元模式详解:解锁高效资源管理的终极武器
java·spring boot·mybatis·享元模式
爱学习的真真子8 分钟前
菜鸟也能轻松上手的Java环境配置方法
java·开发语言
曳渔34 分钟前
Java-数据结构-二叉树-习题(三)  ̄へ ̄
java·开发语言·数据结构·算法·链表
shark-chili1 小时前
数据结构与算法-Trie树添加与搜索
java·数据结构·算法·leetcode
白乐天_n1 小时前
FRIDA-JSAPI:Java使用
java·jsapi·frida
无奇不有 不置可否1 小时前
JVM基础篇学习笔记
java·jvm
小电玩2 小时前
JAVA SE8
java·开发语言
努力的布布2 小时前
Spring源码-从源码层面讲解声明式事务的运行流程
java·spring
程序员大金2 小时前
基于SpringBoot的旅游管理系统
java·vue.js·spring boot·后端·mysql·spring·旅游
小丁爱养花2 小时前
记忆化搜索专题——算法简介&力扣实战应用
java·开发语言·算法·leetcode·深度优先