2017-07-18 4 views
0

私はSpring Frameworkで作業を始めました。私はいくつかの点を理解していませんでした。たとえば、hibernateConfigファイルを書きましたが、春に環境オブジェクトがどこから初期化されるのか分かりませんでした。どうすればその方法に到達できますか?Spring Framework Autowired

マイConfigクラス:@Configurationプロパティを操作するための推奨方法で

package com.ugur.train.configuration; 
import java.util.Properties; 

import javax.sql.DataSource; 

import org.hibernate.SessionFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.PropertySource; 
import org.springframework.core.env.Environment; 
import org.springframework.jdbc.datasource.DriverManagerDataSource; 
import org.springframework.orm.hibernate4.HibernateTransactionManager; 
import org.springframework.orm.hibernate4.LocalSessionFactoryBean; 
import 
    org.springframework.transaction.annotation.EnableTransactionManagement; 

@Configuration 
@EnableTransactionManagement 
@ComponentScan({ "com.ugur.train.configuration" }) 
@PropertySource(value = { "classpath:application.properties" }) 
    public class HibernateConfiguration { 
     @Autowired 
    private Environment environment; 

    @Bean 
    public LocalSessionFactoryBean sessionFactory() { 
     LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); 
     sessionFactory.setDataSource(dataSource()); 
     sessionFactory.setPackagesToScan(new String[] { "com.huawei.train.model" }); 
     sessionFactory.setHibernateProperties(hibernateProperties()); 
     return sessionFactory; 
    } 

    @Bean 
    public DataSource dataSource() { 
     DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
     dataSource.setDriverClassName(environment.getRequiredProperty("jdbc.driverClassName")); 
     dataSource.setUrl(environment.getRequiredProperty("jdbc.url")); 
     dataSource.setUsername(environment.getRequiredProperty("jdbc.username")); 
     dataSource.setPassword(environment.getRequiredProperty("jdbc.password")); 
     return dataSource; 
    } 

    private Properties hibernateProperties() { 
     Properties properties = new Properties(); 
     properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect")); 
     properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql")); 
     properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql")); 
     return properties;   
    } 

    @Bean 
    @Autowired 
    public HibernateTransactionManager transactionManager(SessionFactory s) { 


     HibernateTransactionManager txManager = new HibernateTransactionManager(); 
     txManager.setSessionFactory(s); 
     return txManager; 
    } 
} 
+0

読むhttps://stackoverflow.com/questions/19414734/understanding-spring-autowired-usage – Vaibs

+0

Ok.Iは 'environment'が初期化される – user2986250

+0

それを読んでいますを定義するように、環境オブジェクトを初期化します春には、気をつける必要はありません。それが春の目的です。そして、あなたは 'environment.getRequiredProperty'メソッドを使用しています。正しく初期化されていないと、' NullPointerException'が発生します... – Betlista

答えて

0

@Inject 
private Environment environment; 

アドオンとして環境を注入

@PropertySource(value = { "classpath:application.properties" }) 

として環境と@PropertySourceを使用することですこのクラスはのイニシャライザのリストに

あなたは@PropertySource