抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

Spring Boot Starter Webflux

Guava

RateLimiter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
RateLimiter rateLimiter = RateLimiter.create(10);
for (int i = 0; i < 20; i++) {
int finalI = i;
new Thread(new Runnable() {
@Override
public void run() {
int cnt = 0;
while (true) {
if (rateLimiter.tryAcquire()) {
cnt++;
System.out.println("thread: " + finalI + " cnt: " + cnt);
}
}
}
}).start();
}
Thread.sleep(1000 * 100 * 1000);

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial reactive响应式编程,是一种非阻塞的编程方式,在Spring5中,Spring WebFlux出现了,他就是使用的reactive,传统的servlet和filter是同步的,传统的getPa...

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial EurekaNetfilx在设计Eureka的时候遵守的就是AP原则,Eureka是一个Netfix的子模块, 也是核心模块之一,Eureka是一个基于REST的服务,用于实现云端中间层服务发现和故...

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 架构约定 > 配置 > 编码先写pom,xml,yml,sql,然后写dao,写Mapper,Service,Controller 起步用上面的方法建立一个Restful风格的服务端生产...

入门资料

中文文档
官方文档
中文文档
社区
嘿嘿

微服务于微服务架构

微服务强调服务的大小,他关注某一个点,一个模块只做一种事情
微服务架构通常而言,他提倡将单一的程序划分为一组小的服务,每个服务运行在独立的进程中,采用轻量级的通信机制 doubbo是rpc,springcloud是restful

如何编写

理清依赖

自动配置

@Configuration 指定这个是配置类
@ConditionalOnxxx 在某些条件下才生效
@AutoConfigureAfter 指定自动配置类的顺序
@Bean 给IOC加组件
@ConfiguretionProperties 结合相关的xxxProperties配置类来绑定配置
@EnableConfigurationProperties 让xxxProperties生效加入到容器中
讲自动配置类配置在META-INF/spring.factories中

启动配置原理

几个重要的事件回调机制

  • ApplicationContextInitializer
  • SpringApplicationRunListener
  • ApplicationRunner
  • CommandLineRunner

启动流程

1
return new SpringApplication(primarySources).run(args);
  • 创建SpringApplication对象
  • 运行run方法

创建对象

现在左边的参数是null

1
2
3
4
5
6
7
8
9
10
11
12
public SpringApplication(Class<?>... primarySources) {
this(null, primarySources);
}
public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) {
this.resourceLoader = resourceLoader;
Assert.notNull(primarySources, "PrimarySources must not be null");
this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources));
this.webApplicationType = WebApplicationType.deduceFromClasspath();
setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));
setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));
this.mainApplicationClass = deduceMainApplicationClass();
}

创建项目

选择MySQL+JDBC+Web

链接数据库

1
2
3
4
5
6
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/jdbc
driver-class-name: com.mysql.jdbc.Driver