コースの春の雲の春シリーズ(mercyblitze)

クラウド最初のネイティブアプリケーション(クラウドネイティブアプリケーション)(コースウェア)[Q]

package com.ikadmin.sr.springcloudlesson1.demo;

import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

public class SpringApplicationDemo {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DefaultApplicationListener.class);
//        context.addApplicationListener(new DefaultApplicationListener());
//        context.register(DefaultApplicationListener.class);
//        context.refresh();
        context.publishEvent(new DefaultApplicationEvent(new Double(1.0)));
        context.publishEvent(new DefaultApplicationEvent("test"));
        context.publishEvent(new DefaultApplicationEvent(1));


//        context.publishEvent(new DefaultApplicationEvent(null));
    }

    @Component
    private static class DefaultApplicationListener implements ApplicationListener<DefaultApplicationEvent> {

        @Override
        public void onApplicationEvent(DefaultApplicationEvent event) {
            System.err.printf("DefaultApplicationEvent source: %s \n", event.getSource());
        }
    }


    private static class DefaultApplicationEvent extends ApplicationEvent{
        /**
         * Create a new ApplicationEvent.
         *
         * @param source
         *         the object on which the event initially occurred (never {@code null})
         */
        public DefaultApplicationEvent(Object source) {
            super(source);
        }
    }
}

CTRL + G springlistener道を探します

これは、自動confiure春の雲の文脈で見ることができます

# AutoConfiguration
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration,\
org.springframework.cloud.autoconfigure.LifecycleMvcEndpointAutoConfiguration,\
org.springframework.cloud.autoconfigure.RefreshAutoConfiguration,\
org.springframework.cloud.autoconfigure.RefreshEndpointAutoConfiguration,\
org.springframework.cloud.autoconfigure.WritableEnvironmentEndpointAutoConfiguration
# Application Listeners
org.springframework.context.ApplicationListener=\
org.springframework.cloud.bootstrap.BootstrapApplicationListener,\
org.springframework.cloud.bootstrap.LoggingSystemShutdownListener,\
org.springframework.cloud.context.restart.RestartListener
# Bootstrap components
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration,\
org.springframework.cloud.bootstrap.encrypt.EncryptionBootstrapConfiguration,\
org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration,\
org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration

 あなたは6のロード順序を見ることができます

public class BootstrapApplicationListener
		implements ApplicationListener<ApplicationEnvironmentPreparedEvent>, Ordered {

	/**
	 * Property source name for bootstrap.
	 */
	public static final String BOOTSTRAP_PROPERTY_SOURCE_NAME = "bootstrap";

	/**
	 * The default order for this listener.
	 */
	public static final int DEFAULT_ORDER = Ordered.HIGHEST_PRECEDENCE + 5;
SpringCloudLesson1Applicationは、クラスコンストラクタ着信SpringApplication、注釈相乗効果として構成されています
@SpringBootApplication
public class SpringCloudLesson1Application {

	public static void main(String[] args) {
//		SpringApplication.run(SpringCloudLesson1Application.class, args);
		SpringApplication application = new SpringApplication(SpringCloudLesson1Application.class);
		ConfigurableApplicationContext context = application.run(args);



	}

}

アプリは、ロード順序を開始すると:

listeners.starting();

listener.onApplicationEvent(event);

BootstrapApplicationListener  
//通过spring.factories加载 (D:\shen\java\.m2\repos\org\springframework\cloud\spring-cloud-context\2.1.5.RELEASE\spring-cloud-context-2.1.5.RELEASE.jar!\META-INF\spring.factories)

ApplicationEnvironmentPreparedEvent // publish ApplicationEnvironmentPreparedEvent

onApplicationEvent 监听到事件,执行相应动作(创建bootstrap上下文)

context = createApplicationContext(); //spring boot 上下文创建


所有spring cloud BootStrap上下文先于spring boot 上下文创建,并且是spring boot的双亲


有时是事件触发创建上下文,有时是上下文创建触发事件,涉及spring的设计哲学

 

 

org.springframework.web.servlet.FrameworkServlet#のdoGet

org.springframework.web.servlet.FrameworkServlet#doService

org.springframework.context.event.SimpleApplicationEventMulticaster#doInvokeListener

 

 

// 20200307154719
// http://localhost:7000/actuator/health

{
  "status": "UP"
}

// 20200307155543
// http://localhost:7000/actuator/metrics/jvm.gc.max.data.size/

{
  "name": "jvm.gc.max.data.size",
  "description": "Max size of old generation memory pool",
  "baseUnit": "bytes",
  "measurements": [
    {
      "statistic": "VALUE",
      "value": 1417674752
    }
  ],
  "availableTags": [
    
  ]
}

 

management.endpoints.web.exposure.include=*
management.endpoint.restart.enabled=true
server.port=7000


http://localhost:7000/actuator/restart
http://localhost:7000/actuator/resume
http://localhost:7000/actuator/pause

 すべてのデモを再度実行書籍のDDのgithubの

実務経験の文書は、本、穏やかにそれを設定するための設定項目の多くを見に行く、ソースコードを見つけ出します。

 

セクションでは、クライアント(春クラウドコンフィグクライアント)(コースウェア)[Q]を設定します

 

第III章構成サーバー(春クラウドコンフィグサーバ)(コースウェア)[Q]

セクションIV、サービス発見/登録(サービス発見/登録)(コースウェア)[Q]

セクションVの高可用性サービス管理(HAサービス政府)(コースウェア)[Q]

VIロードバランシング(負荷分散)(コースウェア)[Q]

解釈VII Netflixのリボン源(教材)[Q]

VIIIサービス短絡(サーキットブレーカー)(コースウェア)[Q]

解釈IXスプリングクラウドHystrix源(教材)[Q]

セクションXサービスコール(サービスコール)(コースウェア)[Q]

第XI春クラウドサービスゲートウェイ(コースウェア)[Q]

セクションXIIメッセージドリブンインテグレーション(教材)[Q]

第XIII春クラウドストリームバインダー達成(コースウェア)[Q]

セクションXIVメッセージ・バス

第XV分散アプリケーションの追跡

第XVI春の雲シリーズレビュー

公開された105元の記事 ウォン称賛33 ビュー30000 +

おすすめ

転載: blog.csdn.net/github_38596081/article/details/104145295