2017-07-21 11 views
1

私はXMLベースの設定を持つ私のプロジェクトでspring-hibernate設定をしたいと思います。 sessionFactoryオブジェクトを印刷すると、メモリアドレスのような値を返すはずですが、null値が返されます。sessionfactoryは常にSpringでnullを返します。hibernate xmlベースの設定

私はBeanにsessionFactoryを挿入するために@ Autowireアノテーションを使用したいと思います。 私はhibernate管理対象トランザクションを使用します。

私のコードは

春-config.xmlにある:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation= 
    http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
    http://www.springframework.org/schema/context 

http://www.springframework.org/schema/context/spring-context-3.0.xsd ">ここ

<context:annotation-config /> 

<context:property-placeholder location="classpath:application.properties" /> 
<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" 
    destroy-method="close"> 
    <property name="driverClassName" value="${database.driverClassName}" /> 
    <property name="url" value="${database.url}" /> 
    <property name="username" value="${database.username}" /> 
    <property name="password" value="${database.password}" />  
</bean> 

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource"></property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
      <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto} 
    </prop> 
      <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> 
      <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
     </props> 
    </property> 

    </bean> 
    <bean id="abc" class="pkg.A"/> 

</beans> 

は私のインターフェイスは

Abc.java

です

インタフェースの実装

A.java

  package pkg;  

      import org.hibernate.SessionFactory; 
      import org.springframework.beans.factory.annotation.Autowired; 
      import org.springframework.stereotype.Repository; 

      @Repository 
      public class A implements Abc { 

       @Autowired 
       SessionFactory sessionFactory; 



       public SessionFactory getSessionFactory() { 
        System.out.println("sys factory : "+sessionFactory); 
        return sessionFactory; 
       } 



       public void setSessionFactory(SessionFactory sessionFactory) { 
        this.sessionFactory = sessionFactory; 
       } 



       public void m1() { 
        System.out.println("session factory obj : "+sessionFactory); 

       } 

      } 

それは私

ヌルTomcatの出力が得られます。ここでは

  Jul 21, 2017 8:38:47 PM org.springframework.web.context.ContextLoader initWebApplicationContext 
      INFO: Root WebApplicationContext: initialization completed in 9610 ms 
      Jul 21, 2017 8:38:47 PM org.apache.coyote.AbstractProtocol start 
      INFO: Starting ProtocolHandler ["http-nio-8082"] 
      Jul 21, 2017 8:38:47 PM org.apache.coyote.AbstractProtocol start 
      INFO: Starting ProtocolHandler ["ajp-nio-8011"] 
      Jul 21, 2017 8:38:47 PM org.apache.catalina.startup.Catalina start 
      INFO: Server startup in 24169 ms 
      session factory obj : null 

は、JSPファイルは、私のようなSessionFactoryのオブジェクトを呼び出しています。このからであります

   <%@page import="pkg.A"%> 
      <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
       pageEncoding="ISO-8859-1"%> 
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
      <html> 
      <head> 
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
      <title>Insert title here</title> 
      </head> 
      <body> 

      <h2>H2 heading</h2> 

      <% 

      A a = new A(); 
      a.m1(); 

      %> 
      </body> 
      </html> 

答えて

0

<context:component-scan base-package="pkg"/>を追加することを忘れ..春ごとに、あなたのアプリケーションは、beanへの依存性を注入するために疎結合されるべきです。疎結合のインターフェイスの場合は、使用する必要があります。 これを実行した後、beanはbeanに自動的に依存関係を追加します。

0

あなたは、問題は私が従っていることをアプローチしていた..私は依存性注入

権利である私のすべての構成の第1のいくつかの研究の後に答えを得たあなたのspring-config.xml

+0

これもnullを返します –

+0

どのようにm1()メソッドを呼び出しますか? –

+0

jspページのscripletタグから A a = new A(); a.m1(); –

関連する問題