org.springframework.beans.factory.wiring.BeanWiringInfo.BeanWiringInfo用空名称初始化

org.springframework.beans.factory.wiring.BeanWiringInfo.BeanWiringInfo用空名称初始化,spring,spring-boot,vaadin,aspectj,spring-session,Spring,Spring Boot,Vaadin,Aspectj,Spring Session,在使用Spring会话和Aspectj对Redis进行会话序列化之后,我正在尝试重新连接一个@Autowired字段 这是bean: @UIScope() @SpringComponent(value = AboutView.VIEW_NAME) @SpringView(name = AboutView.VIEW_NAME) // @Configurable(autowire = Autowire.BY_NAME, value = AboutView.VIEW_NAME, depende

在使用Spring会话和Aspectj对Redis进行会话序列化之后,我正在尝试重新连接一个
@Autowired
字段

这是bean:

@UIScope()
@SpringComponent(value = AboutView.VIEW_NAME)
@SpringView(name = AboutView.VIEW_NAME)    
//
@Configurable(autowire = Autowire.BY_NAME, value = AboutView.VIEW_NAME, dependencyCheck = false, preConstruction = true)
public class AboutView extends AbstractView {

    public static final String VIEW_NAME = "butterfly-effect-frontend-system:about";

    private Table tableFrontEndInformation;

    private GridLayout backendLayout;

    private GridLayout frontendLayout;

    @Autowired
    private transient DiscoveryClient discoveryClient;
这个bean使用@Configurable和bean定义的名称(值)。不幸的是,方面正在创建一个带有空bean名称的
BeanWiringInfo
,这将在需要名称时引发错误

@Configurable(autowire = Autowire.BY_NAME, value = AboutView.VIEW_NAME, dependencyCheck = false, preConstruction = true)
由于以下构造函数被AnnotationBeanWiringForesolver调用而发生错误

/**
     * Create a new BeanWiringInfo that points to the given bean name.
     * @param beanName the name of the bean definition to take the property values from
     * @param isDefaultBeanName whether the given bean name is a suggested
     * default bean name, not necessarily matching an actual bean definition
     * @throws IllegalArgumentException if the supplied beanName is {@code null},
     * is empty, or consists wholly of whitespace
     */
    public BeanWiringInfo(String beanName, boolean isDefaultBeanName) {
        Assert.hasText(beanName, "'beanName' must not be empty");
        this.beanName = beanName;
        this.isDefaultBeanName = isDefaultBeanName;
    }
注释BeanWiringForesolver根据以下代码实例化BeanWiringInfo:

protected BeanWiringInfo buildWiringInfo(Object beanInstance, Configurable annotation) {
        if (!Autowire.NO.equals(annotation.autowire())) {
            return new BeanWiringInfo(annotation.autowire().value(), annotation.dependencyCheck());
        }
        else {
            if (!"".equals(annotation.value())) {
                // explicitly specified bean name
                return new BeanWiringInfo(annotation.value(), false);
            }
            else {
                // default bean name
                return new BeanWiringInfo(getDefaultBeanName(beanInstance), true);
            }
        }
    }
这就是错误:

Caused by: java.lang.IllegalArgumentException: 'name' must not be null
    at org.springframework.util.Assert.notNull(Assert.java:115) ~[spring-core-4.3.5.RELEASE.jar:4.3.5.RELEASE]
    at org.springframework.beans.factory.BeanFactoryUtils.transformedBeanName(BeanFactoryUtils.java:72) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.transformedBeanName(AbstractBeanFactory.java:1109) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedBeanDefinition(AbstractBeanFactory.java:970) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
    at com.vaadin.spring.internal.SpringViewDisplayPostProcessor.postProcessAfterInitialization(SpringViewDisplayPostProcessor.java:66) ~[classes/:na]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:423) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1594) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:400) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
    at org.springframework.beans.factory.wiring.BeanConfigurerSupport.configureBean(BeanConfigurerSupport.java:142) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
    at org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect.configureBean(AnnotationBeanConfigurerAspect.aj:63) ~[spring-aspects-4.3.5.RELEASE.jar:4.3.5.RELEASE]
    at org.springframework.beans.factory.aspectj.AbstractDependencyInjectionAspect.ajc$before$org_springframework_beans_factory_aspectj_AbstractDependencyInjectionAspect$1$e854fa65(AbstractDependencyInjectionAspect.aj:79) ~[spring-aspects-4.3.5.RELEASE.jar:4.3.5.RELEASE]
    at com.scipionyx.butterflyeffect.frontend.configuration.ui.view.AboutView.<init>(AboutView.java:72) ~[classes/:na]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_45]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_45]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_45]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[na:1.8.0_45]
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
    ... 107 common frames omitted
原因:java.lang.IllegalArgumentException:“name”不能为null
在org.springframework.util.Assert.notNull(Assert.java:115)~[spring-core-4.3.5.RELEASE.jar:4.3.5.RELEASE]
在org.springframework.beans.factory.BeanFactoryUtils.transformedBeanName(BeanFactoryUtils.java:72)~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
在org.springframework.beans.factory.support.AbstractBeanFactory.transformedBeanName(AbstractBeanFactory.java:1109)~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
在org.springframework.beans.factory.support.AbstractBeanFactory.getMergedBeanDefinition(AbstractBeanFactory.java:970)~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
在com.vaadin.spring.internal.SpringViewDisplayPostProcessor.postProcessAfterInitialization(SpringViewDisplayPostProcessor.java:66)~[classes/:na]
在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:423)~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1594)~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:400)~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
在org.springframework.beans.factory.willing.BeanConfigurerSupport.configureBean(BeanConfigurerSupport.java:142)~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
在org.springframework.beans.factory.aspectj.annotationbeanconfigurespect.configureBean(annotationbeanconfigurespect.aj:63)~[spring-aspects-4.3.5.RELEASE.jar:4.3.5.RELEASE]
在org.springframework.beans.factory.aspectj.AbstractDependencyInjectionSpect.ajc$fore$org\u springframework\u beans\u factory\u AbstractDependencyInjectionSpect$1$e854fa65(AbstractDependencyInjectionSpect.aj:79)~[spring-aspects-4.3.5.RELEASE.jar:4.3.5.5.RELEASE]
在com.scipionx.butterflyeffect.frontend.configuration.ui.view.AboutView.(AboutView.java:72)~[classes/:na]
在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)~[na:1.8.0\u 45]
在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)~[na:1.8.0\U 45]
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)~[na:1.8.045]
在java.lang.reflect.Constructor.newInstance(Constructor.java:422)~[na:1.8.0_45]
在org.springframework.beans.BeanUtils.instanceClass(BeanUtils.java:142)~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE]
... 107省略公共帧
是否有人知道此配置中可能出现的错误


非常感谢您的帮助。

我仍在试图理解原因,但从@Configuration中删除
autowire=autowire.BY_NAME
似乎可以解决问题

现在,该类如下所示:

@UIScope()
@SpringComponent(value = AboutView.VIEW_NAME)
@SpringView(name = AboutView.VIEW_NAME)

//
@Configurable(value = AboutView.VIEW_NAME)
public class AboutView extends AbstractView {