这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
package com.bolingcavalry;import com.bolingcavalry.service.impl.NormalApplicationScoped;import com.bolingcavalry.service.impl.NormalSingleton;import io.quarkus.logging.Log;import io.quarkus.test.junit.QuarkusTest;import org.junit.jupiter.api.Test;import javax.inject.Inject;@QuarkusTestclass ChangeLazyLogicTest { @Inject NormalSingleton normalSingleton; @Inject NormalApplicationScoped normalApplicationScoped; @Test void ping() { Log.info("start invoke normalSingleton.ping"); normalSingleton.ping(); Log.info("start invoke normalApplicationScoped.ping"); normalApplicationScoped.ping(); }}
package com.bolingcavalry;
import com.bolingcavalry.service.impl.NormalApplicationScoped;
import com.bolingcavalry.service.impl.NormalSingleton;
import io.quarkus.logging.Log;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.Test;
import javax.inject.Inject;
@QuarkusTest
class ChangeLazyLogicTest {
@Inject
NormalSingleton normalSingleton;
NormalApplicationScoped normalApplicationScoped;
@Test
void ping() {
Log.info("start invoke normalSingleton.ping");
normalSingleton.ping();
Log.info("start invoke normalApplicationScoped.ping");
normalApplicationScoped.ping();
}
package com.bolingcavalry.service.impl;import io.quarkus.logging.Log;import javax.inject.Singleton;@Singletonpublic class NormalSingleton { public NormalSingleton() { Log.info("Construction from " + this.getClass().getSimpleName()); } public String ping() { return "ping from NormalSingleton"; }}
package com.bolingcavalry.service.impl;
import javax.inject.Singleton;
@Singleton
public class NormalSingleton {
public NormalSingleton() {
Log.info("Construction from " + this.getClass().getSimpleName());
public String ping() {
return "ping from NormalSingleton";
让bean尽早实例化的第一种手段,是让bean消费StartupEvent事件,这是quarkus框架启动成功后发出的事件,从时间上来看,此事件的时间比注入bean的时间还要早,这样消费事件的bean就会实例化
咱们给NormalApplicationScoped增加下图红框中的代码,让它消费StartupEvent事件
官方都这么说了,我岂敢不信,不过流程还是要完成的,把修改后的代码再运行一遍,截个图贴到文中,走走过场...
然而,这次运行的结果,却让人精神一振,StartupEvent和Startup效果是不一样的!!!
运行结果如下图,最先实例化的居然不是被Startup注解修饰的NormalApplicationScoped,而是它的代理类!
@ApplicationScoped@Startuppublic class NormalApplicationScoped {
@ApplicationScoped
@Startup
public class NormalApplicationScoped {
学习路上,你不孤单,欣宸原创一路相伴...
原文链接:https://www.cnblogs.com/bolingcavalry/p/17608098.html
本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728