binarywang / weixin-java-miniapp-demo

基于Spring Boot 和 WxJava 实现的微信小程序Java后端Demo
1.32k stars 669 forks source link

如果引用了小程序的依赖,但是没有配置appid和对应参数,会导致启动报错。请问如何规避呢? #69

Open ChirsGod opened 12 months ago

ChirsGod commented 12 months ago

使用的依赖为: image image yml文件配置信息为: image 项目运行报错信息为:

2023-09-13 18:16:37.945  WARN 44224 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'wxMaService' defined in class path resource [com/binarywang/spring/starter/wxjava/miniapp/config/WxMaServiceAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [cn.binarywang.wx.miniapp.api.WxMaService]: Factory method 'wxMaService' threw exception; nested exception is java.lang.NullPointerException: null key in entry: null=WxMaRedisBetterConfigImpl{appid='null', token='null', originalId='null', accessTokenLock=me.chanjar.weixin.common.util.locks.RedisTemplateSimpleDistributedLock@443b9ebb, tmpDirFile=null, jsapiTicketLock=me.chanjar.weixin.common.util.locks.RedisTemplateSimpleDistributedLock@4830c979, cardApiTicketLock=me.chanjar.weixin.common.util.locks.RedisTemplateSimpleDistributedLock@d98ce13, redisOps=me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps@1e86b2d1, keyPrefix='wa', accessTokenKey='wa:access_token:null', lockKey='wa:lock:null:'}
2023-09-13 18:16:37.998  INFO 44224 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2023-09-13 18:16:38.022 ERROR 44224 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'wxMaService' defined in class path resource [com/binarywang/spring/starter/wxjava/miniapp/config/WxMaServiceAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [cn.binarywang.wx.miniapp.api.WxMaService]: Factory method 'wxMaService' threw exception; nested exception is java.lang.NullPointerException: null key in entry: null=WxMaRedisBetterConfigImpl{appid='null', token='null', originalId='null', accessTokenLock=me.chanjar.weixin.common.util.locks.RedisTemplateSimpleDistributedLock@443b9ebb, tmpDirFile=null, jsapiTicketLock=me.chanjar.weixin.common.util.locks.RedisTemplateSimpleDistributedLock@4830c979, cardApiTicketLock=me.chanjar.weixin.common.util.locks.RedisTemplateSimpleDistributedLock@d98ce13, redisOps=me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps@1e86b2d1, keyPrefix='wa', accessTokenKey='wa:access_token:null', lockKey='wa:lock:null:'}
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1334)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:338)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332)
    at com.herdsric.HerdsricCrmApplication.main(HerdsricCrmApplication.java:24)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [cn.binarywang.wx.miniapp.api.WxMaService]: Factory method 'wxMaService' threw exception; nested exception is java.lang.NullPointerException: null key in entry: null=WxMaRedisBetterConfigImpl{appid='null', token='null', originalId='null', accessTokenLock=me.chanjar.weixin.common.util.locks.RedisTemplateSimpleDistributedLock@443b9ebb, tmpDirFile=null, jsapiTicketLock=me.chanjar.weixin.common.util.locks.RedisTemplateSimpleDistributedLock@4830c979, cardApiTicketLock=me.chanjar.weixin.common.util.locks.RedisTemplateSimpleDistributedLock@d98ce13, redisOps=me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps@1e86b2d1, keyPrefix='wa', accessTokenKey='wa:access_token:null', lockKey='wa:lock:null:'}
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
    ... 19 common frames omitted
Caused by: java.lang.NullPointerException: null key in entry: null=WxMaRedisBetterConfigImpl{appid='null', token='null', originalId='null', accessTokenLock=me.chanjar.weixin.common.util.locks.RedisTemplateSimpleDistributedLock@443b9ebb, tmpDirFile=null, jsapiTicketLock=me.chanjar.weixin.common.util.locks.RedisTemplateSimpleDistributedLock@4830c979, cardApiTicketLock=me.chanjar.weixin.common.util.locks.RedisTemplateSimpleDistributedLock@d98ce13, redisOps=me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps@1e86b2d1, keyPrefix='wa', accessTokenKey='wa:access_token:null', lockKey='wa:lock:null:'}
    at com.google.common.collect.CollectPreconditions.checkEntryNotNull(CollectPreconditions.java:32)
    at com.google.common.collect.SingletonImmutableBiMap.<init>(SingletonImmutableBiMap.java:40)
    at com.google.common.collect.ImmutableBiMap.of(ImmutableBiMap.java:49)
    at com.google.common.collect.ImmutableMap.of(ImmutableMap.java:70)
    at cn.binarywang.wx.miniapp.api.impl.BaseWxMaServiceImpl.setWxMaConfig(BaseWxMaServiceImpl.java:366)
    at com.binarywang.spring.starter.wxjava.miniapp.config.WxMaServiceAutoConfiguration.wxMaService(WxMaServiceAutoConfiguration.java:53)
    at com.binarywang.spring.starter.wxjava.miniapp.config.WxMaServiceAutoConfiguration$$EnhancerBySpringCGLIB$$c0126e69.CGLIB$wxMaService$0(<generated>)
    at com.binarywang.spring.starter.wxjava.miniapp.config.WxMaServiceAutoConfiguration$$EnhancerBySpringCGLIB$$c0126e69$$FastClassBySpringCGLIB$$7d29a5d2.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
    at com.binarywang.spring.starter.wxjava.miniapp.config.WxMaServiceAutoConfiguration$$EnhancerBySpringCGLIB$$c0126e69.wxMaService(<generated>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
    ... 20 common frames omitted

请问如何在不配置的情况下,能使项目正常运行?

binarywang commented 5 months ago

你可以先加个空的参数