首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在使用BeanNotOfRequiredTypeException的同时在春季获得BeanPostProcessor

在使用BeanNotOfRequiredTypeException的同时在春季获得BeanPostProcessor
EN

Stack Overflow用户
提问于 2014-04-14 06:06:09
回答 1查看 234关注 0票数 0

我正在尝试使用BeanPostProcessor运行一个Spring示例。

下面是bean后置处理器

代码语言:javascript
运行
复制
public class DisplayNamePostProcessor implements BeanPostProcessor{

    DisplayNamePostProcessor(){
        System.out.println("DisplayNamePostProcessor instantiated");
    }

    public Object postProcessBeforeInitialization(Object bean, String beanName)
            throws BeansException {
        System.out.println("postProcessBeforeInitialization for bean "+beanName);

        return this;
    }

    public Object postProcessAfterInitialization(Object bean, String beanName)
            throws BeansException {
        System.out.println("postProcessAfterInitialization for bean "+beanName);
        return this;
    }

}

这里是spring配置文件。

代码语言:javascript
运行
复制
    <bean id="car" class="com.core.Car" >
            <property name="wheel" value="four" />
        </bean>
<bean class="com.core.DisplayNamePostProcessor"></bean>

这是我的豆类

代码语言:javascript
运行
复制
public class Car {

    private String wheel; 

    public String getWheel() {
        return wheel;
    } 
    public void setWheel(String wheel) {
        this.wheel = wheel;
    } 


    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        System.out.println("application context loaded");
        Car car = context.getBean("car", Car.class);
    }
}

在运行上述主方法时,我将得到以下异常

代码语言:javascript
运行
复制
Exception in thread "main" org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'car' must be of type [com.core.Car], but was actually of type [com.core.DisplayNamePostProcessor]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:361)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1121)

有人能告诉我我做错了什么以及如何解决这个异常吗?此外,造成这种情况的根本原因是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-14 06:08:39

您声明的任何BeanPostProcessor bean都将被ApplicationContext bean工厂获取并使用。您的实现是这样做的

代码语言:javascript
运行
复制
public Object postProcessBeforeInitialization(Object bean, String beanName)
        throws BeansException {
    System.out.println("postProcessBeforeInitialization for bean "+beanName);

    return this;
}

它不会对目标bean做任何事情,它只是返回自己。因此,它用DisplayNamePostProcessor bean覆盖它处理的所有bean。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23053011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档