不能得到春豆?

时间:2014-04-25 03:47:53

标签: spring

无法在侦听器或过滤器类中从spring容器中获取bean。

2 个答案:

答案 0 :(得分:2)

你有没有用过这样的东西:

@Autowired
private ApplicationContext context;

ICustomer customer = (ICustomer) context.getBean("name"); // here name is the name of the bean you want to get context

看起来我已经在我的项目中使用了这个,并且效果很好:

String processorName = Introspector.decapitalize(command.getClass().getSimpleName() + "Processor");
ICommandProcessor processor = (ICommandProcessor) context.getBean(processorName);

如果我将通过command Add,那么它将通过processorName = AddProcessor并获取它的上下文。

你的要求是什么?你可以发布代码吗?

查看此xml文件,然后从中检查:

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">            
            <property name="packagesToScan" value="com.domain"/>
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
                    <prop key="hibernate.show_sql">true</prop>
                    <prop key="hibernate.format_sql">true</prop>
                    <prop key="hibernate.generate_statistics">true</prop>
                </props>
            </property>
        </bean>

<!-- Transaction Manager -->
    <bean id="txManager"
          class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <tx:annotation-driven transaction-manager="txManager" />

此处:<property name="packagesToScan" value="com.domain"/>非常重要,如果您想在我的项目@Autowired中使用com.domain,请参阅此内容并根据需要进行更改。然后再发帖。

答案 1 :(得分:0)

所有问题都是在org.springframework.web.servlet.DispatcherServlet加载之前你无法初始化servlet上下文。 init service / dao bean int对应用程序是公共的,但是如果在加载DispatcherServlet之后扫描它们,bean将是private.All看起来像这样!