2016-09-22 7 views
0

私のアプリケーションではXMLベースのスプリング設定が使用されています。この設定を@Configurationクラスに移動したいのですが、Spring 3.0以降でこれらのアノテーションをサポートしています。例えばspring beanプロパティの設定の代わりに

ここでの質問は、私が "annotatedClasses" と "hibernateProperties" プロパティを設定しない方法です、私は、次の試してみました

<property name="dataSource"> 
     <ref bean="dataSource" /> 
    </property> 

    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> 
      <prop key="hibernate.show_sql">false</prop> 
     </props> 
    </property> 
    <property name="annotatedClasses"> 
     <list> 
      <value>com.mycom.AnnotatedEntity</value> 
     </list> 
    </property> 
</bean> 

、XMLの私のBeanです

@Configuration 
public class Config{ 

    @Value("${jdbc.driverClassName}") 
    private Driver driverClassName; 

    @Value("${jdbc.url}") 
    private String url; 

    @Value("${jdbc.username}") 
    private String username; 

    @Value("${jdbc.password}") 
    private String password; 

    @Bean 
    public DBDao dao(){ 
     return new DaoImpl(sessionFactory()); 
    } 

    @Bean 
    public SessionFactory sessionFactory(){ 
     LocalSessionFactoryBean localSessionFactory = new LocalSessionFactoryBean(); 
     Class<?>[] annotatedClasses = null; 
     annotatedClasses.getClass(); 
     localSessionFactory.setDataSource(dataSource()); 
     localSessionFactory.setAnnotatedClasses(annotatedClasses); 
     return (SessionFactory) localSessionFactory; 
    } 

    @Bean 
    public SimpleDriverDataSource dataSource(){ 
     SimpleDriverDataSource dataSource = new SimpleDriverDataSource(); 
     dataSource.setDriver(driverClassName); 
     dataSource.setUrl(url); 
     dataSource.setUsername(username); 
     dataSource.setPassword(password); 
     return dataSource; 
    } 

} 

構成クラスでは?

+0

設定を移行する場合は、Springブートに移行できるかどうかを確認してください。これらのすべてを自動的に処理することができます。 – chrylis

答えて

0

注釈付きクラスには、var argsが必要です。したがって、このような:

Properties properties = new Properties(); 
properties.put("hibernate.dialect", "org.hibernate.dialect.SQLServerDialect"); 
properties.put("hibernate.show_sql", false); 

sessionFactory.setHibernateProperties(properties); 

追記:SessionFactoryLocalSessionFactoryBeanをキャストしないでください

localSessionFactory.setAnnotatedClasses(SomeEntity.class, AnotherEntity.class); 

休止状態プロパティを設定します。単純に戻る:

localSessionFactory.getObject(); 
+0

こんにちはブラニスラフ、返信のための多くのおかげで、私は私のXMLでのTransactionManagerを持っている \t <豆ID = "のTransactionManager" \t \tクラス= "org.springframework .orm.hibernate4.HibernateTransactionManager "> \t \t <プロパティ名=" SessionFactoryの」REF = "SessionFactoryの"> \t \t <プロパティ名= "データソース" REF = "データソース"> \tに同等であるもの構成クラス? "transactionManager" @Beanと小道具を設定することはまっすぐですが、 Rakesh

+0

@Rakeshあなたの設定クラスに対して '@ EnableTransactionManagement'アノテーションを使用してください。 :) More Details [here](http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/annotation/EnableTransactionManagement.html) –

+0

こんにちはBranislav、@EnableTransactionManagementを追加した後、起因するヌルポインタ:org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration.transactionAdvisor(ProxyTransactionManagementConfiguration.java:46)でjava.lang.NullPointerExceptionが \t org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration $$ EnhancerBySpringCGLIB $$ f793f1c8で \t。 CGLIB $ transactionAdvisor $ 0() \t at org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration $$ EnhancerBySpringCGLIB $$ f793f1c8 $$ FastClassBySpringCGLIB $$ 46c91349.invo – Rakesh

関連する問題