Spring/Maven/MyBatis配置文件结合properties文件使用

使用properties文件也叫注入,比如把一些常用的配置项写入到这个文件,然后在Spring的XML配置文件中使用EL表达式去获取。

这种方式不只Spring可以使用,同样MyBatis也可以使用,只不过加载的方式不一样,但是获取值同样是EL表达式。具体的参考官方文档。

properties语法参考:https://zh.wikipedia.org/wiki/.properties,注意转移字符。

Spring:

本次使用的例子来自这章http://www.cnblogs.com/EasonJim/p/7055499.html,通过改造实现将数据库连接信息全部使用properties去配置。

前提:

1、新建db.properties文件,加入如下配置:

jdbc.username=root
jdbc.password=root
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://127.0.0.1\:3306/test?useUnicode\=true&characterEncoding\=UTF-8&serverTimezone\=UTC

注意:在定义这些变量的时候,尽量避免一些系统变量,比如username,这个代表操作系统的用户名。

2、在加载properties文件路径上,使用的是classpath加通配符*去实现扫描项目的classes目录下的文件来加载,不再是绝对路径,具体的用法参考:http://www.cnblogs.com/EasonJim/p/6709314.html

下面将列举加载方式:

一、<context:property-placeholder />

1、在配置Spring的Bean文件时,比如引入头声明,如下所示:

...
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context.xsd">
...

2、Bean配置文件加入:

<context:property-placeholder ignore-unresolvable="true" location="classpath:db.properties" />

3、获取变量:

    <!--采用DBCP连接池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

二、<util:properties />

1、在配置Spring的Bean文件时,比如引入头声明,如下所示:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/util
                        http://www.springframework.org/schema/util/spring-util.xsd">

2、Bean配置文件加入:

<util:properties id="db" location="classpath:db.properties"/>

3、获取变量:

    <!--采用DBCP连接池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="#{db[‘jdbc.driver‘]}" />
        <property name="url" value="#{db[‘jdbc.url‘]}" />
        <property name="username" value="#{db[‘jdbc.username‘]}" />
        <property name="password" value="#{db[‘jdbc.password‘]}" />
    </bean>

三、通过代码注入实现代码上可以获取这些变量

1、Bean配置文件加入:

    <!-- 使用注解注入properties中的值 -->
    <bean id="config" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations">
            <list>
                <value>classpath:db.properties</value>
            </list>
        </property>
        <!-- 设置编码格式 -->
        <property name="fileEncoding" value="UTF-8"></property>
    </bean>

2、在需要测试的类中写入如下代码,但是这个类必须是通过Bean注入过的,做直接的使用就是MVC的Controller。

package com.jsoft.testmybatis.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.jsoft.testmybatis.inter.IUserOperation;
import com.jsoft.testmybatis.models.Article;

@Controller
@RequestMapping("/article")
public class UserController {

    @Value("#{config[‘jdbc.username‘]}")
    private String userName;

    @Value("#{config[‘jdbc.password‘]}")
    private String password;

    @Value("#{config[‘jdbc.url‘]}")
    private String url;

    @Value("#{config[‘jdbc.driver‘]}")
    private String driver;

    @Autowired
    IUserOperation userMapper;

    @RequestMapping("/list")
    public ModelAndView listall(HttpServletRequest request,HttpServletResponse response){

        System.out.println("测试:"+this.userName+"-"+this.password+"-"+this.url+"-"+this.driver);

        List<Article> articles=userMapper.getUserArticles(1);
        ModelAndView mav=new ModelAndView("/article/list");
        mav.addObject("articles",articles);
        return mav;
    }
}

Maven:

在Maven使用很有帮助,比如多模块项目时,在Parent模块上定一个总的属性,每个模块引入之后,到时需要修改也只是一处地方。

一、直接在POM中使用properties定义属性

1、POM

    <!-- 项目属性 -->
    <properties>
        <!-- main version setting -->
        <servlet.version>3.1.0</servlet.version>
    </properties>

2、使用:

        <!-- Servlet Library -->
        <!-- http://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>${servlet.version}</version>
            <scope>provided</scope>
        </dependency>

二、如果对于引入文件基本是无解,只能在POM中定义。

MyBatis:

一、通过properties节点引入:

1、在MyBatis配置文件下引入:

...
<configuration>

    <!-- 引入properties配置文件 -->
    <properties resource="config.properties" />
...

2、使用:

    <!-- 配置环境 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>

测试工程:https://github.com/easonjim/5_java_example/tree/master/springtest/test21

时间: 2024-10-03 14:00:56

Spring/Maven/MyBatis配置文件结合properties文件使用的相关文章

Springmvc+spring+maven+Mybatis整合

随着springmvc及maven越来越受到众多开发者的青睐,笔者主要结合springmvc+maven+spring+Mybatis,搭建一套用于开发和学习的框架.本文将一步步展示整个框架的搭建过程,方便交流和学习. 一.开发环境: windows 8.1 eclipse Luna Service Release 1 (4.4.1) mysql-5.6.19-winx64 maven-3.2.3 jdk 1.7 apache-tomcat-7.0.57 二.主要技术: springmvc +

spring 如何动态加载properties文件的内容

1. 在xml中配置你的properties路径: <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basenames"> <list> <!-- 指定资源文件基名称 jdbc为文件名,不包含扩展名 --&g

MyBatis配置文件(一)――properties属性

MyBatis配置文件中有很多配置项,这些配置项分别代表什么,有什么作用,需要理一下了.先通过下面这个例子来看都有哪些配置项 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3

log4CXX第二篇---配置文件(properties文件)详解

一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置. 1.Loggers Loggers组件在此系统中被分为六个级别:TRACE < DEBUG < INFO < WARN < ERROR < FATAL.这六个级别是有顺序的,分别用来指定这条日志

详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(上)

SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. SpringMVC分离了控制器.模型对象.分派器以及处理程序对象的角色,这种分离让它们更容易进行定制. MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架. 本文旨在快速且详细的介绍intellij idea 搭建SS

spring+springmvc+mybatis配置文件

最近在学习SSM,自己上手了一个crm项目,这两天对底层配置文件做了个总结. sqlmapconfig.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd&qu

spring(一)--spring/springmvc/spring+hibernate(mybatis)配置文件

这篇文章用来总结一下spring,springmvc,spring+mybatis,spring+hibernate的配置文件 1.web.xml 要使用spring,必须在web.xml中定义分发器等信息,基本的配置信息如下: <?xml version="1.0" encoding= "UTF-8"?> <web-app version= "3.0" xmlns="http://java.sun.com/xml/n

Spring Boot之配置文件application.properties

Spring Boot默认的配置文件为application.properties,放在src/main/resources目录下或者类路径的/config目录下,作为Spring Boot的全局配置文件,对一些默认的配置进行修改. 接下来使用例子展示Spring Boot配置文件的用法: 首先在src/main/resources下新建application.properties文件,内容如下 author.name=微儿博客 author.sex=男 创建controller类 ackage

【Spring源码分析】.properties文件读取及占位符${...}替换源码解析

前言 我们在开发中常遇到一种场景,Bean里面有一些参数是比较固定的,这种时候通常会采用配置的方式,将这些参数配置在.properties文件中,然后在Bean实例化的时候通过Spring将这些.properties文件中配置的参数使用占位符"${}"替换的方式读入并设置到Bean的相应参数中. 这种做法最典型的就是JDBC的配置,本文就来研究一下.properties文件读取及占位符"${}"替换的源码,首先从代码入手,定义一个DataSource,模拟一下JDB