From a7a2afcf1dcb077fd5106f7a631bf2622dfdbf3e Mon Sep 17 00:00:00 2001 From: arisnguyenit97 Date: Sun, 14 Jul 2024 22:13:29 +0700 Subject: [PATCH] :package: dependency: add Redis4j dependency #2 #4 --- build.gradle | 14 ++++++++ gradle.yml | 1 + libs/redis4j-v1.0.0.jar | Bin 0 -> 28223 bytes libs/unify4j-v1.0.0.jar | Bin 162917 -> 163900 bytes .../java/com/suit4j/app/AppApplication.java | 2 +- .../app/controllers/CommonController.java | 8 +++++ .../java/com/suit4j/app/services/.gitkeep | 0 .../suit4j/app/services/CommonService.java | 4 +++ .../com/suit4j/app/services/impl/.gitkeep | 0 .../app/services/impl/CommonServiceImpl.java | 12 +++++++ src/main/resources/application-dev.yml | 34 ++++++++++++++++++ src/main/resources/application-local.yml | 34 ++++++++++++++++++ src/main/resources/application-prod.yml | 34 ++++++++++++++++++ 13 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 libs/redis4j-v1.0.0.jar delete mode 100644 src/main/java/com/suit4j/app/services/.gitkeep create mode 100644 src/main/java/com/suit4j/app/services/CommonService.java delete mode 100644 src/main/java/com/suit4j/app/services/impl/.gitkeep create mode 100644 src/main/java/com/suit4j/app/services/impl/CommonServiceImpl.java diff --git a/build.gradle b/build.gradle index b2d46f7..50beec6 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,5 @@ //file:noinspection SpellCheckingInspection +//file:noinspection VulnerableLibrariesLocal buildscript { repositories { // Use Maven Central for resolving dependencies. @@ -227,6 +228,19 @@ dependencies { // in Spring applications. It allows developers to manage transactions declarative or programmatically, // ensuring data consistency and integrity across various transactional operations. implementation 'org.springframework:spring-tx:5.3.25' + // The "spring-data-redis" library, version 2.7.8, is a Spring Data module that provides easy configuration and access to Redis from Spring applications, + // offering comprehensive support for Redis operations, including connection management, RedisTemplate, and repository support for Spring Data. + implementation group: 'org.springframework.data', name: 'spring-data-redis', version: '2.7.8' + // The "spring-integration-redis" library, version 5.5.20, is a Spring Integration module that provides support for Redis-based messaging, + // enabling integration with Redis to send and receive messages, as well as leveraging Redis Pub/Sub capabilities within Spring applications. + // Using runtimeOnly to ensure this dependency is only included at runtime. + runtimeOnly group: 'org.springframework.integration', name: 'spring-integration-redis', version: '5.5.20' + // The "lettuce-core" library, version 6.2.3.RELEASE, is a powerful and thread-safe Redis client for Java, + // providing asynchronous, synchronous, and reactive API support to efficiently interact with Redis servers. + implementation group: 'io.lettuce', name: 'lettuce-core', version: '6.2.3.RELEASE' + // The "jedis" library, version 5.1.3, is a simple and feature-rich Java client for Redis, + // providing synchronous and asynchronous communication with Redis servers to perform various operations and transactions. + implementation group: 'redis.clients', name: 'jedis', version: '5.1.3' } tasks.named('test') { diff --git a/gradle.yml b/gradle.yml index 05b7062..c114969 100644 --- a/gradle.yml +++ b/gradle.yml @@ -6,3 +6,4 @@ ng: - source: "libs/unify4j-v1.0.0.jar" - source: "libs/force4j-v1.0.0.jar" - source: "libs/botwrap4j-v1.0.0.jar" + - source: "libs/redis4j-v1.0.0.jar" diff --git a/libs/redis4j-v1.0.0.jar b/libs/redis4j-v1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..a8f74c0ca5f0320d041e617ca6f7382da93b5229 GIT binary patch literal 28223 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 z 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 literal 0 HcmV?d00001 diff --git a/libs/unify4j-v1.0.0.jar b/libs/unify4j-v1.0.0.jar index 75810439e73215c222886f5aa569488234420934..5831035c048f0dc2647f1dd36fb292d121720b5c 100644 GIT binary patch delta 4019 zcmai12UJwo7Jc`^41Hh}0V$4!rXm)CU`0?+86pEAiu9@u9qFPH1dWA2`~)wcASwz8 zVo)4MC0}C~HNcMr6H6d5f`C0pq{zSTywPN`{#yUdn)UXav(G-~o?G6V-~ZJ3?lVmt ziC9HdpJCM1nLh%a?bNYUVQ(|tRbJ6s&N%p0H4$z%r>VRScvjCxA|3#1{z?^=R-da; zp#l~wodP`or_4@j0!X&D#K0+=B*tLrwlOsZpt%@hR<~Yv>AKNi$qUosIHeInHHbPA z9mOe|#E;{2oDz?k31}I<7GrtRZas#{u`A57HmM(7FwCVksX&~FXuqEjWY^cLVhH)^ zSozaF4TjM&EDRkUU0)^B(u6Fsvz`c;YUh?}0rS`^pN<(O4C6Sfu(@M2nH+%y^_y?Z zH38PejzBJhdDk8;?m~CG0F>-OnxtL-vqyu^7 z)!xVzW=H;F1+r9U`%6ZLps4`FA;=LTw}ha}Dy&KF8G)v%0?J;4%%Nm?bqp$iuFGd9 zpa-1II0fZ$8TO^3AT^L%whv7pEiqV)*la}FATnnoYUG5~HX%MYG`(E3l?UG4+fY6v zBR2WS9x92*N7d>AT8Z!0eycVo6^5D2FY>}h#4{i9vzCU($N6L=MB0YOgeE0@@k#6_ zBUk8e+!b@oA#`&c@9g8$0T-?yT7L z)D)6!SZKEcXRYQPHaaEFBfQJ1%kKt`GBW(LBZq9cn8ECok zx@rRw%i8wKBz~3+UN=g1ZMy5y6yR@b;NHDsQS1@l$EB`W<$e}3d2So8XS79h?#Qg2#cQbwqE$g7)53x@tns^*Kt+V{b@@{9fedf=vj``-;lExk~s!8a1BkuU_ zPtzL1W3A>NJX9iH{I6f6?pOHknwQU9tO_@dG+U7%zLK$iq20RS&f5d6o{oQ%<<~nJ z=BB2lclO6iZ})wZP||#8ZdRb6_D0<%z1tGk{_~yUML&}Ag_)Mb|m&zSUmSWzSs(vZ5D$?x&@ej9U{Y+#Sr{ zKREPq>aFeLT-^S!2y1Scyzhvym3dELom0$33)3%Kwi*R5b+m5(a+S6?-TVBvn-kqb z&I>g>uQ+{La9OrOUn8X@dc`e4e~3%4M3 zx$Qx82QtXjs?jbukmMD0=qh*UM9a`U&b#y^QsI($HlWv>&Gig=B!p}>EvQD9EsFg7 z3z`Ad>9(P3+$nYcH#CVmRx~=%bl}hHL^4f4y{}L!r`FtyN)Xth`%nO9yY?3C=TQ70 zx&`@VZa9`RoxpenhxB-O8&~ii4Xg$aMfssgSfmAVSM6~aSNfD$*i8>?sY`JrXM5;@ zr+^9(cw$>{I(cFl=j`*w&U~=VS&1#-fF*PgX5?KaRwvv1Fw6ug_QUsB7D@HTa{>Z3HpnQ-8>}>oQOoz#WkPw;zqCynpfe;)G7HOy=#qm&u3x#2C zh*}<|up9_e2)+rUWLC#HoHmtJJ`}ESy$z?uvz8?h3P9e2#}W8rh?*IR1AtQ$sZjnk zQjvYiDn-=#RSH+*D(nellhum;NLSOE*%Ym-sUQoi)+nM<*Wi_4`EiXR%3Ml2#!gC# z6wd=7lVUgEyp!S}umnfp)c_i!a0s|;qOmW4&)%Qqlx@t9A_;}y%YmX#{{%Vhy7r~Btw=h6rH zGc|^p_CbYVDzjfz{7t2*3>lEOtdwHNCir3{SJlG=`c6@vpm5bD&@4lLxvc(Atxna% zISHHUO2i23t9*F1C6Yv{lL1a^GW#IXC;n@(Hi%^osoP7`8AjEVzJDl{yrBlf$jd}* z289aOQWb;aob`Gg5`qf2qNoeCllHaPjO>!3k>C-rjeQw$l_#g29l>Xq=}P)%$$}(G zf43G-0OnwCTggGn@8s!gOxcr+A#;jHh7Vj;uSjQ^)_!#RSI@mP|4 zMo|dx2c5ifLUkF2%x0LWO7i<}viy0lM4Xf97$v`veaYC+=I?E!JHq$AMqpJAo!(H| zFB>I^%@8pgBp$L7-W{xjHJOltjiEz3GpRMJ8)n%yeCpq&*)~Ny*ie_Q$uPPG^o3VR zx}J+6A)QE%NYfS57ON#nD5cF>$onTh`VF^|j9w!>r4g`c%yr8)1S5tiprInAG_G&C zu!>Z=0R2+&2&g(fl~&!}|G_1KR;oFKos&|9#WeXCC6xt39QEm2I#t7|ie)TFqbk1- ze^5~;rGs?!_=PG4bK$eE=h#raJlb1JCB5%d$bxiiN-EN@5fs$GO4;yPs{whIhG#%Q zLuTz?E>>k2Lpm{5N&;KdS*ks-g!0y!#<2_&>%lM+lvpElIKi59YyxQ-DZr+-oOLiA z8-YO4xi`O#VdtN2?}vtERh&WZ*?4$VnX!C*{i2q9jt08q}96;(4R*puz8 zat`DMcu>xXye&%ESU6KrNyVqb{LsdlsBm}tpg&_f7B<(;GKxGKcy&cI-dFvNtz4y> z+Sdh;Qcaf|P~DA>4uAK+lQHjU&DOCQ;`m0aJKfE_D69KI8mGYHlNH{6xX3jhegE3P z0wZJb3C-6AW{4A;z^`lP7l}s7x;(H!Eg|ymK~78fbg0OSqX_03y-JDw=Mh%P1u>1 z%bz8q&brM!(v8^8eBMY~?0lh!|3hIRWxQT>Xxqxo9wgV>!6Ss(!97HbgZog^7ajbn z686~6^)w}?e?5OkS$c05Zy-4l)4&%|uiOUSX`t2qvHixScY(1hZj42XxHCLRq&0B8 zFqMFx^XdV9kkmwKCpPsj1w)vQO&nr5uAlw)7kyK8jP>amo2LY1p7YB?xO{Rq*2=F@ zB+&Zv1bMyBlN5x)iwSzWlXI27`#Ar#+Ng*#{4+JCp|kv^TGtmnm_~=|@%>vZ@1u3S zUNl+wbm3nH24N`!AMsK-_&S3x@RO?KvrqUPwPPo*^W#(G1jL4ZzJLbsmFI?|JJ7$? zz*vm(zo!C1oY(sKUbP)r1AGp-5PJrB9GSg1$h+yCb5;!Vze0d~M=4%ssm=8+`i7$XU6F&)IGpgbf>(pCbU^cT@_Vm;?m!_4sp8( z0_DXL7%ppD%I`#dh_y?x_63*P;fYkbgJQ^HV;QQ99#twA%OHwWDlU9=cspLV#a{T{ zyQnmu8gFP2ub$xnV((UMP03qP%G^DPui6SG>T*z0iD$g2IGRu*VKR=1zR}K**-6JW}pC(a%zm8uBDIG3%O1j5+&@V`PGUm^|Oa8J??o^Oi zSpoEo7V9fe3T`QMZw1am3Y_Rm-*pr3z8IcmI)4G}4CNqn_HpXGfj+!FaJj)Kf2IO@JU8ZASG0{dZdbeR`x$pO6(3?tJgqZKp){*4E4d7`a)1kdJ4hbws6Yn`-Ar)5p-xfUY-?-g)8k*n8 inform() { diff --git a/src/main/java/com/suit4j/app/services/.gitkeep b/src/main/java/com/suit4j/app/services/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/com/suit4j/app/services/CommonService.java b/src/main/java/com/suit4j/app/services/CommonService.java new file mode 100644 index 0000000..f2182f2 --- /dev/null +++ b/src/main/java/com/suit4j/app/services/CommonService.java @@ -0,0 +1,4 @@ +package com.suit4j.app.services; + +public interface CommonService { +} diff --git a/src/main/java/com/suit4j/app/services/impl/.gitkeep b/src/main/java/com/suit4j/app/services/impl/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/com/suit4j/app/services/impl/CommonServiceImpl.java b/src/main/java/com/suit4j/app/services/impl/CommonServiceImpl.java new file mode 100644 index 0000000..d114c39 --- /dev/null +++ b/src/main/java/com/suit4j/app/services/impl/CommonServiceImpl.java @@ -0,0 +1,12 @@ +package com.suit4j.app.services.impl; + +import com.suit4j.app.services.CommonService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +@SuppressWarnings({"FieldCanBeLocal", "DuplcatedCode"}) +@Service +public class CommonServiceImpl implements CommonService { + protected static final Logger logger = LoggerFactory.getLogger(CommonServiceImpl.class); +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index d7e6c6f..d5f2953 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,7 +1,41 @@ +# ################################ +# Spring Redis4J Config +# 2024-06-16 10:48:54 +# ################################ +spring: + # noinspection SpellCheckingInspection + redis4j: # Redis4J specific configuration + enabled: false # Toggle to enable or disable Redis4J + debugging: false # Toggle debugging for Redis4J + test_on_borrow: true # Test the connection on borrowing from the pool + test_on_return: true # Test the connection on returning to the pool + test_while_idle: true # Test the connection while idle in the pool + block_when_exhausted: true # Block when the connection pool is exhausted + shared_native_connection: true # Enable sharing of native connections across multiple clients + num_tests_per_eviction_run: 3 # Number of tests to run on eviction + duration_between_eviction_runs: 30s # Time between eviction runs + # The maximum amount of time a Redis command (or operation) can take before it is considered to have timed out. + # This timeout ensures that if a Redis command execution exceeds this duration, + # the client library will abort the operation and throw a timeout exception. + execution_command_timeout: 100ms + redis: # Configuration for the Redis connection + database: 0 # The database index to use (default is 0) + host: 127.0.0.1 # The host where the Redis server is running + port: 6379 # The port on which the Redis server is listening + password: "****" # Optional password to authenticate with Redis (if required) + timeout: 2000ms # The timeout value for connecting to Redis + jedis: # Configuration for connection pooling with Jedis + pool: + max-active: 8 # Maximum number of connections in the Jedis pool + max-idle: 8 # Maximum number of idle connections in the Jedis pool + min-idle: 0 # Minimum number of idle connections in the Jedis pool + max-wait: -1ms # Maximum wait time for a connection from the Jedis pool + # ################################ # Spring BotWrap4j Config # 2024-06-16 10:48:54 # ################################ +--- spring: # noinspection SpellCheckingInspection botwrap4j: diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 302204c..6b46baa 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -8,6 +8,40 @@ spring: - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration # disable the DataSource autoconfiguration - org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration # disable the Security autoconfiguration +# ################################ +# Spring Redis4J Config +# 2024-06-16 10:48:54 +# ################################ +--- +spring: + # noinspection SpellCheckingInspection + redis4j: # Redis4J specific configuration + enabled: false # Toggle to enable or disable Redis4J + debugging: true # Toggle debugging for Redis4J + test_on_borrow: true # Test the connection on borrowing from the pool + test_on_return: true # Test the connection on returning to the pool + test_while_idle: true # Test the connection while idle in the pool + block_when_exhausted: true # Block when the connection pool is exhausted + shared_native_connection: true # Enable sharing of native connections across multiple clients + num_tests_per_eviction_run: 3 # Number of tests to run on eviction + duration_between_eviction_runs: 30s # Time between eviction runs + # The maximum amount of time a Redis command (or operation) can take before it is considered to have timed out. + # This timeout ensures that if a Redis command execution exceeds this duration, + # the client library will abort the operation and throw a timeout exception. + execution_command_timeout: 100ms + redis: # Configuration for the Redis connection + database: 0 # The database index to use (default is 0) + host: 127.0.0.1 # The host where the Redis server is running + port: 6379 # The port on which the Redis server is listening + password: "****" # Optional password to authenticate with Redis (if required) + timeout: 2000ms # The timeout value for connecting to Redis + jedis: # Configuration for connection pooling with Jedis + pool: + max-active: 8 # Maximum number of connections in the Jedis pool + max-idle: 8 # Maximum number of idle connections in the Jedis pool + min-idle: 0 # Minimum number of idle connections in the Jedis pool + max-wait: -1ms # Maximum wait time for a connection from the Jedis pool + # ################################ # Spring BotWrap4j Config # 2024-06-16 10:48:54 diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index d7e6c6f..d5f2953 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -1,7 +1,41 @@ +# ################################ +# Spring Redis4J Config +# 2024-06-16 10:48:54 +# ################################ +spring: + # noinspection SpellCheckingInspection + redis4j: # Redis4J specific configuration + enabled: false # Toggle to enable or disable Redis4J + debugging: false # Toggle debugging for Redis4J + test_on_borrow: true # Test the connection on borrowing from the pool + test_on_return: true # Test the connection on returning to the pool + test_while_idle: true # Test the connection while idle in the pool + block_when_exhausted: true # Block when the connection pool is exhausted + shared_native_connection: true # Enable sharing of native connections across multiple clients + num_tests_per_eviction_run: 3 # Number of tests to run on eviction + duration_between_eviction_runs: 30s # Time between eviction runs + # The maximum amount of time a Redis command (or operation) can take before it is considered to have timed out. + # This timeout ensures that if a Redis command execution exceeds this duration, + # the client library will abort the operation and throw a timeout exception. + execution_command_timeout: 100ms + redis: # Configuration for the Redis connection + database: 0 # The database index to use (default is 0) + host: 127.0.0.1 # The host where the Redis server is running + port: 6379 # The port on which the Redis server is listening + password: "****" # Optional password to authenticate with Redis (if required) + timeout: 2000ms # The timeout value for connecting to Redis + jedis: # Configuration for connection pooling with Jedis + pool: + max-active: 8 # Maximum number of connections in the Jedis pool + max-idle: 8 # Maximum number of idle connections in the Jedis pool + min-idle: 0 # Minimum number of idle connections in the Jedis pool + max-wait: -1ms # Maximum wait time for a connection from the Jedis pool + # ################################ # Spring BotWrap4j Config # 2024-06-16 10:48:54 # ################################ +--- spring: # noinspection SpellCheckingInspection botwrap4j: