【问题标题】:How can I setting datasource in Spring application如何在 Spring 应用程序中设置数据源
【发布时间】:2015-02-19 08:27:52
【问题描述】:

我有一个带有Spring-MVCJ2EE 的简单应用程序。现在我想配置数据源。我想使用my-SQL 而我不想使用休眠。所以我写了一个java类(visualizzazioni.java)来连接mysql数据库。所以数据库的名称,用户名,密码现在是静态的。我想从配置文件中获取这个参数。 spring怎么配置mysql???

这是我的visualizzazioni.java

package com.springmvcapp.manager;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import javax.swing.JPanel;

import com.springmvcapp.utility.Propr;

public class Visualizzazioni extends JPanel{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private String nomeDB;       // Nome del Database a cui connettersi
    private String nomeUtente;   // Nome utentStringe utilizzato per la connessione al Database
    private String pwdUtente;    // Password usata per la connessione al Database
    private String errore;       // Raccoglie informazioni riguardo l'ultima eccezione sollevata
    private String host;
    public static Connection db;       // La connessione col Database
    private boolean connesso;    // Flag che indica se la connessione è attiva o meno
    public Properties properties=null;
    public Visualizzazioni() { 

        this.nomeDB= "spring_mvc";
        this.pwdUtente="password";
        this.nomeUtente="root";
        this.host= "localhost";

        connesso = false;
        errore = "";
    }

    // Apre la connessione con il Database
    public boolean connetti() throws InstantiationException, IllegalAccessException{
        connesso = false;
        //log = new MyLog4J();
        try {
            // Carico il driver JDBC per la connessione con il database MySQL
            Class.forName("com.mysql.jdbc.Driver");
            // Controllo che il nome del Database non sia nulla
            if (!nomeDB.equals("")) {
                //192.168.1.157
                this.pwdUtente="password";//properties.getProperty("root");
                this.nomeUtente="root";//properties.getProperty("user");

                //InitialContext ctx = new InitialContext();
                //DataSource ds = (DataSource) ctx.lookup("java:mysql/jdbc/spring_mvc");


                db = DriverManager.getConnection("jdbc:mysql://"+ host +"/" + nomeDB + "?user=" + nomeUtente + "&password=" + pwdUtente);
                connesso = true;
            } else {
                System.exit(0);
            }
        } catch (Exception e) { 
            //log.logStackTrace(e);
        }
        return connesso;
    }

    public static Connection getDb() {
        return db;
    }

    public static void setDb(Connection db) {
        Visualizzazioni.db = db;
    }

    public boolean isConnesso() { return connesso; }   // Ritorna TRUE se la connessione con il Database è attiva
    public String getErrore() { return errore; }       // Ritorna il messaggio d'errore dell'ultima eccezione sollevata
}

【问题讨论】:

  • 你想从 spring 配置文件或属性文件中获取这些值吗?
  • 我想从属性文件中获取这个文件,因为我的想法是,当我尝试在另一个服务器上启动这个项目时,我可以更改数据库的名称、密码等,然后启动 TomCat

标签: mysql spring jakarta-ee


【解决方案1】:

要从属性文件中获取值,您需要这样做

ResourceBundle sqlConnectionFileResource = ResourceBundle.getBundle("configFile");
String value=sqlConnectionFileResource.getString("propertyName");

您要从中获取值的文件是configFile.properties,其中包含格式条目

propertyName=propertyValue

记得在 getBundle 方法中只提供文件名,即只使用ResourceBundle.getBundle("configFile");

而不是

ResourceBundle.getBundle("configFile.properties");

希望这会有所帮助!

祝你好运!

【讨论】:

  • 我可以把这个配置文件放在哪里?
  • 我的项目中有这种情况。 it.tinypic.com/view.php?pic=abia2p&s=8#.VOWmFC5K0XE资源文件夹在哪里?
  • 在其中创建一个新的资源文件夹(与构建、配置等级别相同)。并在加载包时提供正确的路径,以便 java 可以找到它
  • 我在 activites、build 和 config 文件夹下创建了一个新文件夹。文件夹的名称是“资源”。在这个文件夹中,我插入了 configFile.properties。因此,当我尝试使用您的代码时,出现错误:此 Web 应用程序实例已停止。无法加载资源/configFile.properties。最终的堆栈跟踪是由出于调试目的引发的错误以及试图终止导致非法访问的线程引起的,并且没有功能影响。
猜你喜欢
  • 2016-05-03
  • 1970-01-01
  • 2018-09-11
  • 2019-03-18
  • 2019-11-14
  • 1970-01-01
  • 2012-05-18
  • 2017-08-03
  • 1970-01-01
相关资源
最近更新 更多