Skip to content

Commit e02a014

Browse files
committed
Java:Demo 系列都新增自定义端口的示例代码;连接池 Demo 都新增 Java 代码动态设置连接池属性的注释
1 parent bd1e02a commit e02a014

File tree

7 files changed

+97
-64
lines changed

7 files changed

+97
-64
lines changed

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/boot/DemoDataSourceConfig.java

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -27,30 +27,39 @@
2727
*/
2828
@Configuration
2929
public class DemoDataSourceConfig {
30-
31-
@Bean
32-
@ConfigurationProperties(prefix = "spring.datasource.hikari")
33-
public HikariDataSource hikaricpDataSource() {
34-
return new HikariDataSource();
35-
}
36-
37-
38-
@Bean
39-
@ConfigurationProperties(prefix = "spring.datasource.druid")
40-
public DruidDataSource druidDataSource() {
41-
return new DruidDataSource();
42-
}
43-
44-
@Bean
45-
@ConfigurationProperties(prefix = "spring.datasource.druid-test")
46-
public DruidDataSource druidTestDataSource(){
47-
return new DruidDataSource();
48-
}
49-
50-
@Bean
51-
@ConfigurationProperties(prefix = "spring.datasource.druid-online")
52-
public DruidDataSource druidOnlineDataSource(){
53-
return new DruidDataSource();
54-
}
30+
31+
/** 数据源配置,对应 application.yml 的数据库连接池 datasource 配置。
32+
* 也可以直接 new 再 set 属性,具体见 HikariCP 的文档
33+
* https://github.com/brettwooldridge/HikariCP#rocket-initialization
34+
*/
35+
@Bean
36+
@ConfigurationProperties(prefix = "spring.datasource.hikari")
37+
public HikariDataSource hikaricpDataSource() {
38+
return new HikariDataSource();
39+
}
40+
41+
42+
/**数据源配置,对应 application.yml 的数据库连接池 datasource 配置。
43+
* 也可以直接 new 再 set 属性,具体见 Druid 的 DbTestCase
44+
* https://github.com/alibaba/druid/blob/master/src/test/java/com/alibaba/druid/DbTestCase.java
45+
* @author Lemon
46+
*/
47+
@Bean
48+
@ConfigurationProperties(prefix = "spring.datasource.druid")
49+
public DruidDataSource druidDataSource() {
50+
return new DruidDataSource();
51+
}
52+
53+
@Bean
54+
@ConfigurationProperties(prefix = "spring.datasource.druid-test")
55+
public DruidDataSource druidTestDataSource(){
56+
return new DruidDataSource();
57+
}
58+
59+
@Bean
60+
@ConfigurationProperties(prefix = "spring.datasource.druid-online")
61+
public DruidDataSource druidOnlineDataSource(){
62+
return new DruidDataSource();
63+
}
5564

5665
}

APIJSON-Java-Server/APIJSONDemo-Druid/src/main/java/apijson/demo/DemoApplication.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2020
import org.springframework.boot.autoconfigure.SpringBootApplication;
2121
import org.springframework.boot.context.properties.EnableConfigurationProperties;
22+
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
23+
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
2224
import org.springframework.context.ApplicationContext;
2325
import org.springframework.context.ApplicationContextAware;
2426
import org.springframework.context.annotation.Bean;
@@ -41,7 +43,7 @@
4143
@SpringBootApplication
4244
@EnableAutoConfiguration
4345
@EnableConfigurationProperties
44-
public class DemoApplication implements ApplicationContextAware {
46+
public class DemoApplication implements ApplicationContextAware, WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
4547

4648
static {
4749
APIJSONApplication.DEFAULT_APIJSON_CREATOR = new APIJSONCreator() {
@@ -78,13 +80,6 @@ public SQLExecutor createSQLExecutor() {
7880

7981
}
8082

81-
public static void main(String[] args) throws Exception {
82-
SpringApplication.run(DemoApplication.class, args);
83-
84-
Log.DEBUG = true;
85-
APIJSONApplication.init(false); // 4.4.0 以上需要这句来保证以上 static 代码块中给 DEFAULT_APIJSON_CREATOR 赋值会生效
86-
}
87-
8883
// 全局 ApplicationContext 实例,方便 getBean 拿到 Spring/SpringBoot 注入的类实例
8984
private static ApplicationContext APPLICATION_CONTEXT;
9085
public static ApplicationContext getApplicationContext() {
@@ -96,6 +91,20 @@ public void setApplicationContext(ApplicationContext applicationContext) throws
9691
}
9792

9893

94+
public static void main(String[] args) throws Exception {
95+
SpringApplication.run(DemoApplication.class, args);
96+
97+
Log.DEBUG = true;
98+
APIJSONApplication.init(false); // 4.4.0 以上需要这句来保证以上 static 代码块中给 DEFAULT_APIJSON_CREATOR 赋值会生效
99+
}
100+
101+
102+
// SpringBoot 2.x 自定义端口方式
103+
@Override
104+
public void customize(ConfigurableServletWebServerFactory server) {
105+
server.setPort(8080);
106+
}
107+
99108
// 支持 APIAuto 中 JavaScript 代码跨域请求 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
100109

101110
@Bean

APIJSON-Java-Server/APIJSONDemo-Druid/src/main/java/apijson/demo/DemoDataSourceConfig.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,18 @@
2121
import com.alibaba.druid.pool.DruidDataSource;
2222

2323

24-
/**数据源配置,对应 application.yml 的数据库连接池 datasource 配置
24+
/**数据源配置,对应 application.yml 的数据库连接池 datasource 配置。
25+
* 也可以直接 new 再 set 属性,具体见 Druid 的 DbTestCase
26+
* https://github.com/alibaba/druid/blob/master/src/test/java/com/alibaba/druid/DbTestCase.java
2527
* @author Lemon
2628
*/
2729
@Configuration
2830
public class DemoDataSourceConfig {
29-
30-
@Bean
31-
@ConfigurationProperties(prefix = "spring.datasource.druid")
32-
public DruidDataSource druidDataSource() {
33-
return new DruidDataSource();
34-
}
31+
32+
@Bean
33+
@ConfigurationProperties(prefix = "spring.datasource.druid")
34+
public DruidDataSource druidDataSource() {
35+
return new DruidDataSource();
36+
}
3537

3638
}

APIJSON-Java-Server/APIJSONDemo-HikariCP/src/main/java/apijson/demo/DemoApplication.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2020
import org.springframework.boot.autoconfigure.SpringBootApplication;
2121
import org.springframework.boot.context.properties.EnableConfigurationProperties;
22+
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
23+
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
2224
import org.springframework.context.ApplicationContext;
2325
import org.springframework.context.ApplicationContextAware;
2426
import org.springframework.context.annotation.Bean;
@@ -41,7 +43,7 @@
4143
@SpringBootApplication
4244
@EnableAutoConfiguration
4345
@EnableConfigurationProperties
44-
public class DemoApplication implements ApplicationContextAware {
46+
public class DemoApplication implements ApplicationContextAware, WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
4547

4648
static {
4749
APIJSONApplication.DEFAULT_APIJSON_CREATOR = new APIJSONCreator() {
@@ -78,13 +80,6 @@ public SQLExecutor createSQLExecutor() {
7880

7981
}
8082

81-
public static void main(String[] args) throws Exception {
82-
SpringApplication.run(DemoApplication.class, args);
83-
84-
Log.DEBUG = true;
85-
APIJSONApplication.init(false); // 4.4.0 以上需要这句来保证以上 static 代码块中给 DEFAULT_APIJSON_CREATOR 赋值会生效
86-
}
87-
8883
// 全局 ApplicationContext 实例,方便 getBean 拿到 Spring/SpringBoot 注入的类实例
8984
private static ApplicationContext APPLICATION_CONTEXT;
9085
public static ApplicationContext getApplicationContext() {
@@ -96,6 +91,20 @@ public void setApplicationContext(ApplicationContext applicationContext) throws
9691
}
9792

9893

94+
public static void main(String[] args) throws Exception {
95+
SpringApplication.run(DemoApplication.class, args);
96+
97+
Log.DEBUG = true;
98+
APIJSONApplication.init(false); // 4.4.0 以上需要这句来保证以上 static 代码块中给 DEFAULT_APIJSON_CREATOR 赋值会生效
99+
}
100+
101+
102+
// SpringBoot 2.x 自定义端口方式
103+
@Override
104+
public void customize(ConfigurableServletWebServerFactory server) {
105+
server.setPort(8080);
106+
}
107+
99108
// 支持 APIAuto 中 JavaScript 代码跨域请求 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
100109

101110
@Bean

APIJSON-Java-Server/APIJSONDemo-HikariCP/src/main/java/apijson/demo/DemoDataSourceConfig.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,22 @@
1818
import org.springframework.boot.context.properties.ConfigurationProperties;
1919
import org.springframework.context.annotation.Bean;
2020
import org.springframework.context.annotation.Configuration;
21-
21+
2222
import javax.sql.DataSource;
2323

2424

25-
/**数据源配置,对应 application.yml 的数据库连接池 datasource 配置
25+
/**数据源配置,对应 application.yml 的数据库连接池 datasource 配置。
26+
* 也可以直接 new 再 set 属性,具体见 HikariCP 的文档
27+
* https://github.com/brettwooldridge/HikariCP#rocket-initialization
2628
* @author Lemon
2729
*/
2830
@Configuration
2931
public class DemoDataSourceConfig {
30-
31-
@Bean
32-
@ConfigurationProperties(prefix = "spring.datasource.hikari")
33-
public DataSource dataSource() {
34-
return new HikariDataSource();
35-
}
36-
32+
33+
@Bean
34+
@ConfigurationProperties(prefix = "spring.datasource.hikari")
35+
public DataSource dataSource() {
36+
return new HikariDataSource();
37+
}
38+
3739
}

APIJSON-Java-Server/APIJSONDemo-HikariCP/src/main/java/apijson/demo/DemoSQLExecutor.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,10 @@
1515
package apijson.demo;
1616

1717
import java.sql.Connection;
18-
import java.sql.ResultSet;
19-
import java.sql.ResultSetMetaData;
20-
import java.util.Map;
2118

2219
import javax.sql.DataSource;
2320

24-
import com.alibaba.fastjson.JSONObject;
25-
2621
import apijson.Log;
27-
import apijson.demo.DemoApplication;
2822
import apijson.framework.APIJSONSQLExecutor;
2923
import apijson.orm.SQLConfig;
3024

APIJSON-Java-Server/APIJSONDemo/src/main/java/apijson/demo/DemoApplication.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
import org.springframework.boot.SpringApplication;
1818
import org.springframework.boot.autoconfigure.SpringBootApplication;
19+
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
20+
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
1921
import org.springframework.context.annotation.Bean;
2022
import org.springframework.context.annotation.Configuration;
2123
import org.springframework.web.servlet.config.annotation.CorsRegistry;
@@ -32,7 +34,7 @@
3234
*/
3335
@Configuration
3436
@SpringBootApplication
35-
public class DemoApplication {
37+
public class DemoApplication implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
3638

3739
static {
3840
APIJSONApplication.DEFAULT_APIJSON_CREATOR = new APIJSONCreator() {
@@ -71,6 +73,12 @@ public static void main(String[] args) throws Exception {
7173
}
7274

7375

76+
// SpringBoot 2.x 自定义端口方式
77+
@Override
78+
public void customize(ConfigurableServletWebServerFactory server) {
79+
server.setPort(8080);
80+
}
81+
7482
// 支持 APIAuto 中 JavaScript 代码跨域请求 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
7583

7684
@Bean

0 commit comments

Comments
 (0)