spring mvc 读取xml文件数据库配置参数

本文主要介绍怎么通过属性注入与构造器注入实现把我们项目中要用到的数据库参数放到xml文件里面去,方便部署。

spring mvc 4.2.6项目
SQL Server 2008数据库

本文介绍的主要使用ApplicationContext以及其实现类实现。主要用到的是ClassPathXmlApplicationContext。
ClassPathXmlApplicationContext:从类路径ClassPath中寻找指定的XML配置文件,找到并装载
完成ApplicationContext的实例化工作。例如:

//装载单个配置文件实例化ApplicationContext容器
ApplicationContext cxt = new ClassPathXmlApplicationContext
("applicationContext.xml");
//装载多个配置文件实例化ApplicationContext容器
String[] configs = {"bean1.xml","bean2.xml","bean3.xml"};
ApplicationContext cxt = new ClassPathXmlApplicationContext(configs);

下面是具体步骤:
一、属性注入
属性注入即通过 setAttribute 方法注入Bean 的属性值或依赖的对象。属性注入使用 元素, 使用 name 属性指定 Bean 的属性名称,value 属性或 子节点指定属性值。

1、创建一个bean类DBParaProperty

package com;

public class DBParaProperty {
    //jdbc sqlserver 驱动类
    String sqlServerDriverClassName;
    //sqlserver 连接地址
    String sqlServerUrl;
    //sqlserver 用户名
    String sqlServerUserName;
    //sqlserver 密码
    String sqlServerPassword;

    public String getSqlServerDriverClassName(){
        return this.sqlServerDriverClassName;
    }

    public void setSqlServerDriverClassName(String sqlServerDriverClassName){
        this.sqlServerDriverClassName = sqlServerDriverClassName;
    }

    public String getSqlServerUrl(){
        return this.sqlServerUrl;
    }

    public void setSqlServerUrl(String sqlServerUrl){
        this.sqlServerUrl = sqlServerUrl;
    }

    public String getSqlServerUserName(){
        return this.sqlServerUserName;
    }

    public void setSqlServerUserName(String sqlServerUserName){
        this.sqlServerUserName = sqlServerUserName;
    }

    public String getSqlServerPassword(){
        return this.sqlServerPassword;
    }

    public void setSqlServerPassword(String sqlServerPassword){
        this.sqlServerPassword = sqlServerPassword;
    }
}

2、创建一个xml文件
xml文件

文件内容如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="DBParaProperty" class="com.DBParaProperty">
        <property name="sqlServerDriverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
        <property name="sqlServerUrl" value="jdbc:sqlserver://127.0.0.1:1433;databaseName=test;"></property>
        <property name="sqlServerUserName" value="saDBParaProperty"></property>
        <property name="sqlServerPassword" value="admin123"></property>
    </bean>
</beans>

3、在Controller中使用

package test;

import com.DBParaConstructor;
import com.DBParaProperty;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/test2")
public class test2 {
    @RequestMapping("/test")
    @ResponseBody
    public Object test2() {
        //如果xml文件在src下面的话,直接写文件名就行
        ApplicationContext cpxac = new ClassPathXmlApplicationContext("DBParaProperty.xml");
        //根据bean节点的标识获取对象,id
        DBParaProperty dbParaProperty = (DBParaProperty) cpxac.getBean("DBParaProperty");
        System.out.println(dbParaProperty.getSqlServerUserName());

        return dbParaProperty.getSqlServerUserName();
    }
}

二、构造器注入
通过构造方法注入Bean 的属性值或依赖的对象,它保证了 Bean 实例在实例化后就可以使用。构造器注入在 元素里声明属性。

步骤如下:
1、创建DBParaConstructor类

package com;

public class DBParaConstructor {
    //jdbc sqlserver 驱动类
    public String sqlServerDriverClassName;
    //sqlserver 连接地址
    public String sqlServerUrl;
    //sqlserver 用户名
    public String sqlServerUserName;
    //sqlserver 密码
    public String sqlServerPassword;

    public DBParaConstructor(){}

    public DBParaConstructor(String sqlServerDriverClassName,String sqlServerUrl,String sqlServerUserName,String sqlServerPassword){
        this.sqlServerDriverClassName = sqlServerDriverClassName;
        this.sqlServerUrl = sqlServerUrl;
        this.sqlServerUserName = sqlServerUserName;
        this.sqlServerPassword = sqlServerPassword;
    }
}

2、在src下面的文件夹test下创建一个xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="DBParaConstructor" class="com.DBParaConstructor">
        <constructor-arg name="sqlServerDriverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></constructor-arg>
        <constructor-arg name="sqlServerUrl" value="jdbc:sqlserver://127.0.0.1:1433;databaseName=test;"></constructor-arg>
        <constructor-arg name="sqlServerUserName" value="saDBParaConstructor"></constructor-arg>
        <constructor-arg name="sqlServerPassword" value="admin456"></constructor-arg>
    </bean>
</beans>

3、在Controller中使用

package test;

import com.DBParaConstructor;
import com.DBParaProperty;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/test2")
public class test2 {
    @RequestMapping("/test")
    @ResponseBody
    public Object test2() {
        ApplicationContext cpxac = new ClassPathXmlApplicationContext("DBParaProperty.xml");
        DBParaProperty dbParaProperty = (DBParaProperty) cpxac.getBean("DBParaProperty");
        System.out.println(dbParaProperty.getSqlServerUserName());

        ApplicationContext acc = new ClassPathXmlApplicationContext("/test/DBParaConstructor.xml");
        DBParaConstructor dbParaConstructor = (DBParaConstructor)acc.getBean("DBParaConstructor");
        System.out.println(dbParaConstructor.sqlServerUserName);

        return dbParaProperty.getSqlServerUserName()+"*****"+dbParaConstructor.sqlServerUserName;
    }
}

项目目录如下:
这里写图片描述

关于那个路径的,Java会把java文件编译成.class文件放到classes目录下,这个也是项目Java代码运行的根目录。所以当你把xml文件放在src下面的时候,可以直接写文件名就可以找到了,但是如果你把它放在其他的目录下面了,要把路径写好,例如:/test/xxx.xml。

自学不容易,希望这篇文章对你有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑小晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值