springBoot01

SpringBoot

boot source

我们从JavaSE一路走来,Java程序集成mysql实现crud,再到Spring框架MVC
架构,集成mybatis,能够让我们做简单的web开发,也能够大大降低代码量。而
在spring的框架中,我们存在着大量的xml配置文件,也比较复杂。这时候Boot
横空出世,类似于SpringMVC,自动装配,简化开发约定大于配置轻量级,
同时集成了大量的第三方的库配置(Redis,MongoDB,RabbitMQ等),而且boot
项目几乎可以0配置就可以使用。简而言之,boot并不是新框架,只是整合了所有的
框架,类似于maven整合了所有的jar包。

advantage

  • 为所有Spring开发者能够更好的入门,进官网配置一分钟即可搭建好一个boot
    项目。
  • 提供各种默认配置来简化配置。
  • 内嵌式服务器简化web项目。
  • 没有xml文件的配置。

谈谈微服务

微服务是一种架构风格,在开发一个应用的时候,这个应用必须构建成一系列小服务
的组合,通过各种网络协议进行互通,举个栗子,mvc架构中,有adminService,
userService等,随着这些业务变得更加庞大,会把这些不同的业务层放置于不同
的电脑上,这下懂了吧,就是将一个个服务进行拆分。

我刚刚举的例子,这其实就是一个单体应用架构(all in one),将一个应用
中的所有服务,都封装在一个应用中。可进行数据库,web访问等等,最终打成war包
想想这都在同一台电脑上,易于开发和测试,方便部署;缺点就是如果要进行对业务
等的改动,哪怕是一个非常小的地方,都得停掉整个服务,重新进行打包,所以不利
于后期维护与扩展。

微服务架构

将所有的功能放在同一个应用里边,然后把整个应用部署到服务器上,水平复制和
扩展,进行负载均衡。微服务架构就是将每个功能元素独立出来,将独立出来
的元素进行动态组合,即对功能元素进行复制,而没有对整个应用进行复制。一个
大型的微服务架构,就像一个复杂的神经网络,每一个神经元就是一个功能元素,
各自完成任务,然后通过http请求进行调用。如果要对其中的一个模块进行改动或
升级,仅需要更新它所在的服务单元即可。

boot原理

  • 自动装配:核心依赖(版本号)在父工程中自动管理
  • 启动器:示例是web场景下的启动器,自动帮我们导入web环境的所有依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

@SpringBootApplication

//主程序
package com.cyl.back;

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

@SpringBootApplication //标注此类为一个springboot的应用
public class BackApplication {

    public static void main(String[] args) {
        //将springboot应用启动
        SpringApplication.run(BackApplication.class, args);
    }

}

核心注解(source)

@SpringBootConfiguration//指boot项目的配置
    @Configuration//spring配置类
        @Component//组件
@EnableAutoConfiguration//自动配置
    @AutoConfigurationPackage//自动配置包
        @Import(AutoConfigurationPackages.Registrar.class)
        //导入选择器   

boot所有的自动配置都是在启动的时候扫描并加载,spring.factories所有的
自动配置类都在其中,仅需要导入对应的start包,自动装配就会生效,然后配置
成功。整合JavaEE,解决方案和自动配置的东西都在boot-autoconfigure的jar
包中。

vital

  • boot项目在启动的时候,从类路径下/META-INF/spring.factories获取
    指定的值

  • 将这些自动配置的类导入容器(configuration就是一个容器),自动配置就会
    生效

  • spring-boot-autoconfigure-2.2.0RELEASE.jar包解决整合JavaEE
    和自动配置

  • 它会把所有需要的组件,以类名的方式返回,这些组件就会被添加到容器中。

//示例,截取一小段
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\
org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\
org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration,\
org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration,\
org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration,\
org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration,\
  • 容器中存在非常多的xxxAutoConfiguration文件,就是这些类给容器中
    导入这个场景所需的所有组件,举个栗子,我现在创建的是web项目,它就导入
    各种所需的组件包,并进行自动配置,所以就免去了我们手动配置文件的操作 。

主启动类

package com.cyl.back;

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

@SpringBootApplication
public class BackApplication {

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

}
  • 查找并加载所有可能用到的初始化jar包,设置到initializers属性中
  • 设置main方法的定义类,找到运行的主类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值