8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

使用 spring 和 Java 将数据库配置存储在 application.properties 中

user17732522 2月前

54 0

我正在编写一个使用多个数据库连接的应用程序。我创建了一个必须包含连接信息的 Map。连接值存储在文件 application 中。

我正在编写一个使用多个数据库连接的应用程序。我创建了一个必须包含连接信息的 Map。连接值存储在文件中 application.properties .

该文件 application.properties 存储在文件夹中 /src/main/resources .

该文件 application.properties 包含以下信息:

datasource1.database = mydatabase
datasource1.database = mydatabase
datasource1.user = efe
datasource1.password = efe

datasource2.database = security
datasource2.user = scott
datasource2.password = tiger

我尝试使用函数ozrg.springframework.core.env.Environment.getPropertyz来填充管理该信息的类的属性。

这是我的课程:

package com.sharex19.sswfe.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;

@Configuration
@PropertySource("classpath:application.properties")
public class PostgresConnector extends DatabaseConnector {
    
    @Autowired
    private Environment env;

    private static final Logger log = LogManager.getLogger(PostgresConnector.class);
            
    private static PostgresConnector instance=null;
    private static Connection c=null;
    private static HashMap<String,Datasource> cc;
    
    private static String database1;
    private static String user1;
    private static String password1;
    
    private static String database2;
    private static String user2;
    private static String password2;
    
    
    public PostgresConnector() {
        
        System.out.println("CREATION DES COLLECTIONS DE CONNECTIONS");
        
        String database1 = env.getProperty("datasource1.database");
        String user1 = env.getProperty("datasource1.user");
        String password1 = env.getProperty("datasource1.password");
        
        String database2 = env.getProperty("datasource2.database");
        String user2 = env.getProperty("datasource2.user");
        String password2 = env.getProperty("datasource2.password");
        
        
        System.out.println("ACCES A DATABASE1...");
        
        if ( database1 == null ) {
            System.out.println("DATABASE 1 IS NULL");       
        } else {
            System.out.println("DATABASE1:".concat(database1));
        }
        
        System.out.println("DATABASE1:".concat(user1).concat(password1));
        
        System.out.println("ACCES A DATABASE2...");
        
        System.out.println("DATABASE2:".concat(user2).concat(password2));
        
        cc = new HashMap();
        
        cc.put(database1,new Datasource(user1,password1));
        cc.put(database2,new Datasource(user2,password2));
        
    }
    
    public static Connection getInstance(String databasename){
        log.info("APPEL PostgresConnector.getInstance()");
        if (instance==null) {
            instance = new PostgresConnector();
            c=PostgresConnector.connect(databasename,
                cc.get(databasename).user,
                cc.get(databasename).password);
        }
        return  c;
    }
    
    public static Connection connect(String databasename, 
        String user, String password) {
        
        System.out.println("database:".concat(databasename));
        System.out.println("user:".concat(user));
        System.out.println("password:".concat(password));
        
          Connection c = null;
          try {
             Class.forName("org.postgresql.Driver");
             c = DriverManager
            .getConnection("jdbc:postgresql://localhost:5432/".
                concat(databasename),
                    user, password);
          } catch (Exception e) {
             e.printStackTrace();
             System.err.println(e.getClass().getName()+": "+e.getMessage());
             System.exit(0);
          }
          System.out.println("Opened database successfully");
          return c;
       }
}

我得到以下信息错误:

juil. 17, 2024 9:49:23 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Le Servlet [SecureSpringWebFlow50] dans l'application web [/SSA19] a retourné une exception lors de son chargement
java.lang.NullPointerException: Cannot invoke "org.springframework.core.env.Environment.getProperty(String)" because "this.env" is null
    at com.sharex19.sswfe.utils.PostgresConnector.<init>(PostgresConnector.java:52)
    at com.sharex19.sswfe.utils.PostgresConnector$$EnhancerBySpringCGLIB$$b5f344d4.<init>(<generated>)
    at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1326)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:921)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:702)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:668)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:716)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:591)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:530)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:170)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1164)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1117)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1010)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5264)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:265)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:577)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)

我也尝试使用注释 @Value(${...}) 来做到这一点。

帖子版权声明 1、本帖标题:使用 spring 和 Java 将数据库配置存储在 application.properties 中
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由user17732522在本站《database》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 如你看到的

    java.lang.NullPointerException:无法调用\'org.springframework.core.env.Environment.getProperty(String)\',因为\'this.env\'为空

    它清楚地表明这 env 是空的。

    @Autowired 在构造函数之后加载,因此如果要在构造函数中获取属性,必须将 Environment 作为参数传递。

    public PostgresConnector(Environment env) {
        ...
    }
    

    或者创建一个新函数并用 注释它 @PostConstruct 。然后您可以在函数中初始化静态字段。

    @PostConstruct
    public init() {
        System.out.println("CREATION DES COLLECTIONS DE CONNECTIONS");
        
        String database1 = env.getProperty("datasource1.database");
        String user1 = env.getProperty("datasource1.user");
        String password1 = env.getProperty("datasource1.password");
        
        ...
    }
    
  • 在构造函数PostgresConnector中添加参数Environment Env后,就可以正常工作了。参数env必须是静态的。

  • 我会快速解释一下,最近在我的手机(小米)上安装了一个自定义 rom,并且出现了这个放大的 toast 通知问题:在此处输入图像描述我想知道的是如何 \'tr...

    我会快速解释一下,最近在我的手机(小米)上安装了一个自定义 rom,并且出现了这个扩大的 toast 通知问题:

    在此处输入图片描述

    我想知道如何“追踪”导致这种情况的原因。我到底需要寻找什么才能解决这个问题?是否有类似参数的东西可以将背景环绕在文本周围?

    我并不是一名真正的 Android 开发人员,我正在学习 Java,并认为这将是一项有趣的练习活动。

    提前致谢。

    到目前为止,我尝试过的是通过 root 资源管理器从我的手机中提取 SystemUI.apk > 使用 apktool 反编译 > 搜索与 \'toast\' 有关的任何文件,我认为这是 SystemUI 应用程序中的一个错误。

返回
作者最近主题: