Spring学习之旅(七) 使用属性文件

来源:互联网 发布:html数据展示表格模板 编辑:程序博客网 时间:2024/06/01 09:19

辛苦堆砌,转载请注明出处,谢谢!

        本文内容相对简单一些,主要来看看怎样使用属性文件中的内容进行配置。之前我们的项目中dataSource的配置,直接使用硬编码,这样不太好, 本篇文章进行重构。

        首先编辑我们的属性文件,jdbc.properties,将其放置在Maven项目的src/main/resources目录下,文件内容如下:

jdbc.driverName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=UTF8jdbc.username=rootjdbc.password=123456
就是将我们的dataSource配置参数放在了属性文件中。

        之前,我们的dataSource和sessionFactory的配置是放在RootConfig下的,这样不太好,我们把数据库相关的设置单独放在一个配置类中,并使用我们的属性文件

package com.yjp.springmvc.blog.config;import java.util.Properties;import javax.sql.DataSource;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;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.hibernate5.LocalSessionFactoryBean;@Configuration@PropertySource("classpath:jdbc.properties")public class DataConfig {@Autowiredprivate Environment env;@Beanpublic DataSource dataSource() {DriverManagerDataSource ds = new DriverManagerDataSource();ds.setDriverClassName(env.getProperty("jdbc.driverName"));ds.setUrl(env.getProperty("jdbc.url"));ds.setUsername(env.getProperty("jdbc.username"));ds.setPassword(env.getProperty("jdbc.password"));return (DataSource) ds;}@Beanpublic LocalSessionFactoryBean sessionFactory(DataSource dataSource) {LocalSessionFactoryBean sfb = new LocalSessionFactoryBean();sfb.setDataSource(dataSource);sfb.setPackagesToScan("com.yjp.springmvc.blog.beans.model");Properties hibernateProperties = new Properties();//使用MySql方言hibernateProperties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");//使用hibernate的getCurrentSession需要配置hibernateProperties.setProperty("hibernate.current_session_context_class", "thread");//自动生成表hibernateProperties.setProperty("hibernate.hbm2ddl.auto", "update");sfb.setHibernateProperties(hibernateProperties);return sfb;}}
通过@PropertySource注解,指定属性文件的位置,然后注入一个Environment对象,在dataSource配置时,通过env的getProperty接口获取对应的属性文件中的值。

        但是由于我们将dataSource的配置单独拿了出来,我们需要在RootConfig上面引入该配置

@Configuration@Import(DataConfig.class)@ComponentScan(basePackages={"com.yjp.springmvc.blog.beans"},excludeFilters={@Filter(type=FilterType.ANNOTATION, value=EnableWebMvc.class)})public class RootConfig {}
添加了一个@Import注解,将DataConfig配置类引入进来,这样就完成了重构。


1 0