建设电子商务网站步骤,刷手机网站关键词,网站的建设怎么弄,深圳创业补贴需要什么条件今天在阅读JDBC的DriverManager类源码时#xff0c;看到了这么一句代码#xff1a;
System.getProperty(“jdbc.drivers”)#xff1b;getProperty()这个方法是获取指定键指示的系统属性的#xff0c;也就是说上面的代码获取的是jdbc.drivers这个属性。我写了个测试测试输…今天在阅读JDBC的DriverManager类源码时看到了这么一句代码
System.getProperty(“jdbc.drivers”)getProperty()这个方法是获取指定键指示的系统属性的也就是说上面的代码获取的是jdbc.drivers这个属性。我写了个测试测试输出发现是null值。于是就打算看看系统属性中有没有jdbc.drivers这个值。 查看了一下java api中的getProperty()这个方法后通过getProperties()找到了能获取到的属性 如下图所示
但是居然没有我的jdbc.drivers,于是本着负责的态度我决定将所有的属性都输出看一看。以下是通过System.getPropertys()和System.getProperty()变量所有系统属性的方法。 Testpublic void test(){//获取所有的属性Properties properties System.getProperties();//遍历所有的属性for (String key : properties.stringPropertyNames()) {//输出对应的键和值System.out.println(key properties.getProperty(key));}}对应的结果如下
java.runtime.nameJava(TM) SE Runtime Environment
sun.boot.library.pathC:\javaweb\jdk1.8.0_101_64\jre\bin
java.vm.vendorOracle Corporation
java.vendor.urlhttp://java.oracle.com/
path.separator;
java.vm.nameJava HotSpot(TM) 64-Bit Server VM
file.encoding.pkgsun.io user.script user.countryCN
sun.java.launcherSUN_STANDARD sun.os.patch.level
java.vm.specification.nameJava Virtual Machine Specification
user.dirE:\7.ProjectCodeSource\jdbc
java.runtime.version1.8.0_101-b13
java.awt.graphicsenvsun.awt.Win32GraphicsEnvironment
java.endorsed.dirsC:\javaweb\jdk1.8.0_101_64\jre\lib\endorsed
os.archamd64 java.io.tmpdirC:\Users\ADMINI~1\AppData\Local\Temp\
line.separatorjava.vm.specification.vendorOracle Corporation user.variant
os.nameWindows 10 sun.jnu.encodingGBK
java.library.pathC:\javaweb\jdk1.8.0_101_64\bin;
java.specification.nameJava Platform API Specification
java.class.version52.0
sun.management.compilerHotSpot 64-Bit Tiered
Compilers os.version10.0
user.homeC:\Users\Administrator
user.timezone
java.awt.printerjobsun.awt.windows.WPrinterJob
file.encodingUTF-8
java.specification.version1.8
user.nameAdministrator
java.class.pathE:\7.ProjectCodeSource\jdbc\target\test-classes;
java.vm.specification.version1.8 sun.arch.data.model64
java.homeC:\javaweb\jdk1.8.0_101_64\jre
sun.java.commandorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner
-version 3 -port 57975 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader
-loaderpluginname org.eclipse.jdt.junit4.runtime -test com.jim.jdbc.JDBCTest:test java.specification.vendorOracle
Corporation user.languagezh awt.toolkitsun.awt.windows.WToolkit
java.vm.infomixed mode
java.version1.8.0_101
java.ext.dirsC:\javaweb\jdk1.8.0_101_64\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
sun.boot.class.pathC:\javaweb\jdk1.8.0_101_64\jre\lib\resources.jar;C:\javaweb\jdk1.8.0_101_64\jre\lib\rt.jar;C:\javaweb\jdk1.8.0_101_64\jre\lib\sunrsasign.jar;
java.vendorOracle Corporation
file.separator\
java.vendor.url.bughttp://bugreport.sun.com/bugreport/
sun.cpu.endianlittle
sun.io.unicode.encodingUnicodeLittle
sun.desktopwindows
sun.cpu.isalistamd64输出的东西也太乱了我就加了一句判断看有没有jdbc.drivers这个属性。代码如下 Testpublic void test(){//获取所有的属性Properties properties System.getProperties();//为了看看系统的属性有几个加了一个计数器int count 0;//遍历所有的属性for (String key : properties.stringPropertyNames()) {System.out.println(key properties.getProperty(key));count;if (key.equalsIgnoreCase(jdbc.drivers)){System.out.println(YES);return ;}}System.out.println(count);}结果是根本没有jdbc.drivers这个属性系统的属性有57个比java api中列出来的要多所以如果你的属性不再java api的所列出的列表中不要灰心可以使用上面的代码判断一下。
我后来看了java api之后加了一句代码在方法最前面
System.setProperty(jdbc.drivers,aaa.bbb.ccc);结果就显示有了。也就是说DriverManager中的jdbc.drivers这个系统属性不是本来系统自带的需要用户自己设定采用。如果不设定则为null。这样看来一切都说通了。
使用
SpringBootApplication
public class App{public static void main(String[] args) {if (StringUtils.isEmpty(System.getProperty(server.port))) {System.setProperty(server.port, 9090);}SpringApplication.run(App.class, args);}
}