2017-07-18 76 views
0

我开始在Spring Framework上工作。我不明白一些观点。例如,我编写了一个hibernateConfig文件,但我不明白spring的初始化环境对象的位置?我怎样才能达到它的方法?Spring Framework Autowired

我的配置类:

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正在读它 – user2986250

+0

'environment'初始化环境初始化对象春天,所以你不需要照顾。这是Spring的目的。如果没有正确初始化,你会使用'environment.getRequiredProperty'方法,将会出现'NullPointerException' ... – Betlista

回答

0

@Configuration的推荐方式与性质的工作是使用环境和@PropertySource作为

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

注入环境

@Inject 
private Environment environment; 

加这个类到的初始值设定项列表

你定义@PropertySource