小弟,日前遇到一个问题,webapp在web.xml里面加载spring配置文件代码如下:
<!-- 在web中配置spring 
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
-->
然后在程序中使用注解生成sessionfactory
@Resource
protect SessionFactory sessionFactory;
却无法拿到对象,sessionFactory为null。于是乎就换了一种方式,代码如下:
ApplicationContext cxt = new ClassPathXmlApplicationContext(
"applicationContext.xml");protected SessionFactory sessionFactory = (SessionFactory) cxt
.getBean("sessionFactory");
运行发现这样就能获得sessionFactory了
求教有经验的大哥大姐,这是为啥呢?

解决方案 »

  1.   

    额,我不会用xml方式的配置,只会annotation方式的配置
      

  2.   

    protect SessionFactory sessionFactory;
    有SET方法吗?
      

  3.   

    @Component(value="CSH100DAO")
    public class CSH100DAOImpl implements CSH100DAO{
    private SessionFactory sessionFactory;
    public SessionFactory getSessionFactory() {
    return sessionFactory;
    }
    @Resource(name="sessionFactory")
    public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;


    要想依赖注入,那就必需将类交给SPRING管理,加上@Component(value="name")
      

  4.   

    你想注入sessionFactory的类必须被Spring管理才行的。
      

  5.   


    <context:annotation-config />没有set方法。
      

  6.   

    谢谢兄弟们,原来是因为前面用了servlet的原因导致的不过讲set哥们们比较靠谱~~