栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springBoot2(1基础入门)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springBoot2(1基础入门)

本教程来源于b站尚硅谷雷神SpringBoot2零基础入门springboot全套完整版(spring boot2)

环境:这里用的是jdk8和maven3.6.3

1 spring与springboot

1.1 为什么用SpringBoot?

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

springboot优点:

简单点说,

  • 使用spring就是所有东西我自己配,springboot就是配置都给我默认配好,我只需要按需改配置就行了。
  • 依赖的各种jar包版本兼容自动做好。
  • 内嵌默认tomcat,打jar包,不用部署在tomcat服务器上,java -jar xxx.jar就能运行。
1.2 什么是微服务?

● 微服务是一种架构风格
● 一个应用拆分为一组小型服务
● 每个服务运行在自己的进程内,也就是可独立部署和升级
● 服务之间使用轻量级HTTP交互
● 服务围绕业务功能拆分
● 可以由全自动部署机制独立部署
● 去中心化,服务自治。服务可以使用不同的语言、不同的存储技术

微服务独立部署、去中心化就会导致分布式。
分布式需要解决的问题:
● 远程调用
● 服务发现
● 负载均衡
● 服务容错
● 配置管理
● 服务监控
● 链路追踪
● 日志管理
● 任务调度

1.3 如何解决分布式问题?

springcloud各种框架处理分布式的问题,但现在很多SpringCloud的分布式框架被springcloudalibaba的分布式框架代替了。

1.4 分布式如何部署上云?

上云的困难:
● 服务自愈
● 弹性伸缩
● 服务隔离
● 自动化部署
● 灰度发布
● 流量治理

解决方案:
云原生(Cloud Native)

2 springboot2入门案例 2.1 前期准备 maven 设置:


      
        nexus-aliyun
        central
        Nexus aliyun
        http://maven.aliyun.com/nexus/content/groups/public
      
  
 
  
         
              jdk-1.8
              
                true
                1.8
              
              
                1.8
                1.8
                1.8
              
         
  
2.2 HelloWorld入门

需求:浏览发送/hello请求,响应 Hello,Spring Boot 2
1.创建maven工程
2.引入依赖
pom.xml:



    4.0.0

    com.atguigu
    boot-01-helloworld
    1.0-SNAPSHOT

    
    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.4.RELEASE
    

    
        
        
            org.springframework.boot
            spring-boot-starter-web
        
    

    
        
            
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    
    

3.编写主程序类和业务

MainApplication:

@SpringBootApplication
public class MainApplication {

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

HelloController :

@RestController
public class HelloController {

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

运行main方法,输入

http://localhost:8080/hello


运行成功。
4.打包
停掉服务,点击maven-clean-package

可以看到target中打了jar包

在jar包所在目录内,cmd窗口命令运行:

java -jar boot-01-helloworld-1.0-SNAPSHOT.jar

同样可以启动,测试页面成功即可,停掉服务就直接关cmd窗口。
5.配置

所有配置在这个里面。
具体怎么配可以去官网查:https://docs.spring.io/spring-boot/docs/2.3.4.RELEASE/reference/html/appendix-application-properties.html#common-application-properties

3 了解自动配置原理 3.1 springboot特点 3.1.1 依赖管理



版本号标签是这样得到的:

3.1.2 自动配置


3.1.3 容器功能

这里介绍springboot使用的常用容器相关注解。

1 组件添加 @Configuration

@Bean、@Component、@Controller、@Service、@Repository @ComponentScan、@import

@Conditional


2 原生配置引入 @importResource

3 配置绑定

如何使用Java读取到properties文件中的内容,并且把它封装到JavaBean中,以供随时使用

方法1:@Component + @ConfigurationProperties

方法2:@EnableConfigurationProperties + @ConfigurationProperties



这种情况是用在当要使用第三方jar包里面的类,但他又没加@component,只能这样用一下。

3.2 自动配置原理入门 3.2.1 引导加载自动配置类

首先看主程序类的注解@SpringBootApplication里面,是下面这些注解的结合:

再看看@EnableAutoConfiguration这个重要的自动配置注解里面:

看import导入的AutoConfigurationimportSelector.class这个类里面,得到的信息:

1、利用getAutoConfigurationEntry(annotationmetadata);给容器中批量导入一些组件
2、调用List configurations = getCandidateConfigurations(annotationmetadata, attributes)获取到所有需要导入到容器中的配置类
3、利用工厂加载 Map> loadSpringFactories(@Nullable ClassLoader classLoader);得到所有的组件
4、从meta-INF/spring.factories位置来加载一个文件。
	默认扫描我们当前系统里面所有meta-INF/spring.factories位置的文件
    spring-boot-autoconfigure-2.3.4.RELEASE.jar包里面也有meta-INF/spring.factories,文件里面写死了spring-boot一启动就要给容器中加载的所有配置类。



哪些配置生效,哪些不生效,就是下节的《2 按需开启自动配置项》解决的问题。

3.2.2 按需开启自动配置项


我们点开其中一个配置类,看到它需要按照之前我们了解过的条件注解@ConditionalXXX注解来判断生不生效:

判断了生不生效,配置怎么默认注入,怎么和配置文件application.properties绑定?
以上面截图为例,就在刚刚自动配置类上的@EnableConfigurationProperties({BatchProperties.class})注解需要的BatchProperties.class类里:

3.2.3 修改默认配置

直接通过application.properties修改属性修改默认配置,
甚至根据判断配置类生效的条件@Conditionalxxxx让它自带的不生效,然后自己写个组件注册进去就完成了定制化替换。

3.2.4 总结

● SpringBoot先加载所有的自动配置类 xxxxxAutoConfiguration
● 每个自动配置类按照条件进行生效,默认都会绑定配置文件指定的值,指定的值从xxxxProperties里面拿。xxxProperties和配置文件进行了绑定。
● 生效的配置类就会给容器中装配很多组件
● 只要容器中有这些组件,相当于这些功能就有了
● 定制化配置
○ 用户直接自己@Bean替换底层的组件
○ 用户去看这个组件是获取的配置文件什么值就去修改。

3.2.5 最佳实践
  1. 引入场景依赖
    https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter
  2. 查看自动配置了哪些(选做)
    ○ 自己分析,引入场景对应的自动配置一般都生效了
    ○ 配置文件中debug=true开启自动配置报告。Negative(不生效)Positive(生效)
  3. 是否需要修改
    ○ 参照文档修改配置项
    ■ https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#common-application-properties
    ■ 自己分析。xxxxProperties绑定了配置文件的哪些。
    ○ 自定义加入或者替换组件
    ■ @Bean、@Component。。。
    ○ 自定义器 XXXXXCustomizer;
3.2.6 开发小技巧
  1. lombok
    简化JavaBean开发,不用写setter-getter之类的常规方法,@data注解一键添加。
    (1)添加依赖,springboot也默认管理了版本号

	org.projectlombok
	lombok

(2)安装插件,重启idea

(3)使用

  1. dev-tools
    项目或者页面修改以后:Ctrl+F9;不用重启。
  2. Spring Initailizr(项目初始化向导)
    自动添加主程序类、pom依赖、properties文件啥的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352126.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号