2016-09-22 6 views
0

Meine Anwendung verwendet die XML-Basis-Spring-Konfiguration, und ich möchte diese Konfiguration seit dem Frühjahr 3.0 in die @Configuration-Klasse verschieben, um diese Annotationen zu unterstützen.Alternative zum Festlegen der Spring Bean-Eigenschaften

Zum Beispiel ist hier meine Bohne in XML,

<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> 

Ich habe versucht folgende,

@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; 
    } 

} 

Die Frage ist, wie kann ich "annotatedClasses" und "hibernateProperties" Eigenschaften festlegen in der Konfigurationsklasse?

+0

Wenn Sie Konfigurationen migrieren, sehen Sie, ob es möglich ist, mit Spring Boot zu gehen. All dies kann automatisch für Sie erledigt werden. – chrylis

Antwort

0

Annotierte Klassen nehmen var args. So wie folgt aus:

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

So legen Hibernate Eigenschaften:

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

sessionFactory.setHibernateProperties(properties); 

Nebenbei bemerkt: Verwirf nicht LocalSessionFactoryBean-SessionFactory. Einfach zurück:

localSessionFactory.getObject(); 
+0

Hallo Branislav, vielen Dank für die Antwort, habe ich in meinem XML transaction \t \t \t \t \t \t was in gleichkäme Konfigurationsklasse? "transactionManager" @Bean und das Setzen einer Requisite sind geradlinig, aber was ist mit Rakesh

+0

@Rakesh Verwenden Sie die '@ EnableTransactionManagement' Annotation über Ihre Konfigurationsklasse. :) Weitere Details [hier] (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/annotation/EnableTransactionManagement.html) –

+0

Hallo Branislav, nach dem Hinzufügen von @EnableTransactionManagement, bekommen null-Zeiger verursacht durch: java.lang.NullPointerException \t bei org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration.transactionAdvisor (ProxyTransactionManagementConfiguration.java:46) \t bei org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration $$ EnhancerBySpringCGLIB $$ f793f1c8. CGLIB $ transactionAdvisor $ 0 () \t bei org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration $$ EnhancerBySpringCGLIB $$ f793f1c8 $$ FastClassBySpringCGLIB $$ 46c91349.invo – Rakesh

Verwandte Themen