无法在侦听器或过滤器类中从spring容器中获取bean。
答案 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看起来像这样!