diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4aa8938 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build +.classpath +bin +.gradle +.project +.settings diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..5bde84b --- /dev/null +++ b/build.gradle @@ -0,0 +1,38 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This generated file contains a sample Java Library project to get you started. + * For more details take a look at the Java Libraries chapter in the Gradle + * User Manual available at https://docs.gradle.org/5.3-rc-3/userguide/java_library_plugin.html + */ + +plugins { + // Apply the java-library plugin to add support for Java Library + id 'java' + id 'org.springframework.boot' version '2.1.3.RELEASE' +} + +apply plugin: 'java' +apply plugin: 'io.spring.dependency-management' + +repositories { + // Use jcenter for resolving your dependencies. + // You can declare any Maven/Ivy/file repository here. + jcenter() +} + +dependencies { + implementation('org.springframework.boot:spring-boot-starter') + implementation('org.springframework.boot:spring-boot-starter-web'){ + exclude group:'org.springframework.boot',module:'spring-boot-starter-tomcat' + } + implementation('org.springframework.boot:spring-boot-starter-jetty') + implementation('org.springframework.boot:spring-boot-starter-data-jdbc') + implementation('mysql:mysql-connector-java') + implementation('org.springframework.boot:spring-boot-starter-data-jpa') + implementation('org.springframework.boot:spring-boot-starter-data-redis'){ + exclude module:'lettuce' + } + implementation('redis.clients:jedis') + implementation('com.alibaba:druid-spring-boot-starter:1.1.10') +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..5c2d1cf Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..11c592c --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.3-rc-3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..b0d6d0a --- /dev/null +++ b/gradlew @@ -0,0 +1,188 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..15e1ee3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,100 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem http://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..24032fe --- /dev/null +++ b/settings.gradle @@ -0,0 +1,10 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user manual at https://docs.gradle.org/5.3-rc-3/userguide/multi_project_builds.html + */ + +rootProject.name = 'spring-boot-template' diff --git a/src/main/java/com/springboot/template/Bootstrap.java b/src/main/java/com/springboot/template/Bootstrap.java new file mode 100644 index 0000000..39b3e51 --- /dev/null +++ b/src/main/java/com/springboot/template/Bootstrap.java @@ -0,0 +1,19 @@ +package com.springboot.template; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * 启动类 + * @author wangbin + * + */ + +@SpringBootApplication +public class Bootstrap { + + public static void main(String[] args) { + SpringApplication.run(Bootstrap.class, args); + } + +} diff --git a/src/main/java/com/springboot/template/BootstrapContextListener.java b/src/main/java/com/springboot/template/BootstrapContextListener.java new file mode 100644 index 0000000..51409bc --- /dev/null +++ b/src/main/java/com/springboot/template/BootstrapContextListener.java @@ -0,0 +1,24 @@ +package com.springboot.template; + +import javax.servlet.ServletContextEvent; + +import org.springframework.stereotype.Component; + +/** + * 上下文监听说明: + * 1.必须放在启动类平级目录 + * @author wangbin + * + */ +@Component +public class BootstrapContextListener implements javax.servlet.ServletContextListener{ + @Override + public void contextInitialized(ServletContextEvent sce) { + System.out.println("ServletContextListener:contextInitialized()"); + } + + @Override + public void contextDestroyed(ServletContextEvent sce) { + System.out.println("ServletContextListener:contextDestroyed()"); + } +} diff --git a/src/main/java/com/springboot/template/beanconfig/RedisConfig.java b/src/main/java/com/springboot/template/beanconfig/RedisConfig.java new file mode 100644 index 0000000..3df7aba --- /dev/null +++ b/src/main/java/com/springboot/template/beanconfig/RedisConfig.java @@ -0,0 +1,85 @@ +package com.springboot.template.beanconfig; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.StringRedisSerializer; +import org.springframework.stereotype.Component; + +@Component +public class RedisConfig{ + @Value("${spring.redis.host}") + private String redisHost; + @Value("${spring.redis.port}") + private int redisPort; + @Value("${spring.redis.timeout}") + private int redisTimeout; + @Value("${spring.redis.password}") + private String redisAuth; + @Value("${spring.redis.database}") + private int redisDb; + @Value("${spring.redis.jedis.pool.max-active}") + private int maxActive; + @Value("${spring.redis.jedis.pool.max-wait}") + private int maxWait; + @Value("${spring.redis.jedis.pool.max-idle}") + private int maxIdle; + @Value("${spring.redis.jedis.pool.min-idle}") + private int minIdle; + + /** + * 1.注解bean标注的方法参数,会被扫描是否存在已经自动注入的bean + * 2.注解bean的返回对象会被自动注入到容器中 + * @param redisConnectionFactory + * @return + */ + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { + /*//连接池配置 + JedisPoolConfig poolConfig = new JedisPoolConfig(); + poolConfig.setMaxTotal(maxActive); + poolConfig.setMaxIdle(maxIdle); + poolConfig.setMaxWaitMillis(maxWait); + poolConfig.setMinIdle(minIdle); + poolConfig.setTestOnBorrow(true); + poolConfig.setTestOnReturn(false); + poolConfig.setTestWhileIdle(true); + JedisClientConfiguration clientConfig = JedisClientConfiguration.builder() + .usePooling().poolConfig(poolConfig).and().readTimeout(Duration.ofMillis(redisTimeout)).build(); + + // 单点redis + RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration(); + // 哨兵redis + // RedisSentinelConfiguration redisConfig = new RedisSentinelConfiguration(); + // 集群redis + // RedisClusterConfiguration redisConfig = new RedisClusterConfiguration(); + redisConfig.setHostName(redisHost); + redisConfig.setPassword(RedisPassword.of(redisAuth)); + redisConfig.setPort(redisPort); + redisConfig.setDatabase(redisDb); + + RedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(redisConfig,clientConfig); + */ + + /* + * JSON数据序列化处理 + //ObjectMapper + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); + + //jackjson + Jackson2JsonRedisSerializer jackson = new Jackson2JsonRedisSerializer(Object.class); + jackson.setObjectMapper(objectMapper); + */ + + //RESTTemplate + RedisTemplate restTemplate = new RedisTemplate(); + restTemplate.setValueSerializer(new StringRedisSerializer()); + restTemplate.setKeySerializer(new StringRedisSerializer()); + restTemplate.setConnectionFactory(redisConnectionFactory); + restTemplate.afterPropertiesSet(); + return restTemplate; + } +} diff --git a/src/main/java/com/springboot/template/controller/DemoController.java b/src/main/java/com/springboot/template/controller/DemoController.java new file mode 100644 index 0000000..d949215 --- /dev/null +++ b/src/main/java/com/springboot/template/controller/DemoController.java @@ -0,0 +1,53 @@ +package com.springboot.template.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.springboot.template.redis.HelloRedis; +import com.springboot.template.service.JdbcService; + +@Controller +@RequestMapping("/demo") +public class DemoController { + @Autowired + private JdbcService jdbcService; + @Autowired + private HelloRedis helloRedis; + + @RequestMapping("/sayHello") + @ResponseBody + public String sayHello() { + return "hello"; + } + + @GetMapping("sayFromJdbc") + @ResponseBody + public String sayFromJdbc() { + return this.jdbcService.queryHello(); + } + + @GetMapping("sayFromJpa") + @ResponseBody + public String sayFromJpa() { + return this.jdbcService.queryHelloFromJpa(); + } + + @GetMapping("sayFromRedis") + @ResponseBody + public String sayFromRedis() { + return this.helloRedis.getName(); + } + + @GetMapping("sayFromLogback") + @ResponseBody + public String sayFromLogback() { + Logger log = LoggerFactory.getLogger(this.getClass()); + log.debug("HERE WE ARE!"); + return "wang bin logback"; + } +} diff --git a/src/main/java/com/springboot/template/entity/HelloEntity.java b/src/main/java/com/springboot/template/entity/HelloEntity.java new file mode 100644 index 0000000..9fcb740 --- /dev/null +++ b/src/main/java/com/springboot/template/entity/HelloEntity.java @@ -0,0 +1,28 @@ +package com.springboot.template.entity; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + + +@Entity +@Table(name="hello") +public class HelloEntity { + @Id + private Long id; + private String name; + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + +} diff --git a/src/main/java/com/springboot/template/redis/HelloRedis.java b/src/main/java/com/springboot/template/redis/HelloRedis.java new file mode 100644 index 0000000..616d47a --- /dev/null +++ b/src/main/java/com/springboot/template/redis/HelloRedis.java @@ -0,0 +1,20 @@ +package com.springboot.template.redis; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +@Component +public class HelloRedis { + @Autowired + private RedisTemplate redisTemplate; + + public String getName() { + Object name = this.redisTemplate.opsForValue().get("name"); + if(name == null) { + return "没有在Redis中找到name"; + }else { + return name.toString(); + } + } +} diff --git a/src/main/java/com/springboot/template/reposity/HelloRepository.java b/src/main/java/com/springboot/template/reposity/HelloRepository.java new file mode 100644 index 0000000..7ec73ce --- /dev/null +++ b/src/main/java/com/springboot/template/reposity/HelloRepository.java @@ -0,0 +1,9 @@ +package com.springboot.template.reposity; + +import org.springframework.data.repository.CrudRepository; + +import com.springboot.template.entity.HelloEntity; + +public interface HelloRepository extends CrudRepository { + +} diff --git a/src/main/java/com/springboot/template/service/JdbcService.java b/src/main/java/com/springboot/template/service/JdbcService.java new file mode 100644 index 0000000..019ee1f --- /dev/null +++ b/src/main/java/com/springboot/template/service/JdbcService.java @@ -0,0 +1,9 @@ +package com.springboot.template.service; + +import org.springframework.stereotype.Component; + +public interface JdbcService { + public String queryHello(); + + public String queryHelloFromJpa(); +} diff --git a/src/main/java/com/springboot/template/service/impl/JdbcServerImpl.java b/src/main/java/com/springboot/template/service/impl/JdbcServerImpl.java new file mode 100644 index 0000000..1c09e26 --- /dev/null +++ b/src/main/java/com/springboot/template/service/impl/JdbcServerImpl.java @@ -0,0 +1,46 @@ +package com.springboot.template.service.impl; + +import java.util.Map; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; + +import com.springboot.template.entity.HelloEntity; +import com.springboot.template.reposity.HelloRepository; +import com.springboot.template.service.JdbcService; + +@Component +public class JdbcServerImpl implements JdbcService{ + @Autowired + private JdbcTemplate JdbcTemplte; + @Autowired + private HelloRepository helloRepository; + + @Override + public String queryHello() { + try { + Map data = this.JdbcTemplte.queryForMap("select * from demo.hello limit 1"); + if(data.isEmpty()) { + return "没有发现任何数据"; + }else { + return data.get("name").toString(); + } + }catch(Exception e) { + e.printStackTrace(); + return "数据库不存在记录"; + } + } + + @Override + public String queryHelloFromJpa() { + Optional entity = this.helloRepository.findById(1L); + if(entity == null) { + return "没有找到ID=1对象"; + }else { + return entity.get().getName(); + } + } + +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..9d37e69 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,29 @@ +server.port=8080 + +spring.datasource.url=jdbc:mysql://localhost:3306/demo +spring.datasource.username=wangbin +spring.datasource.password=wangbin +spring.datasource.driver-class-name=com.mysql.jdbc.Driver +spring.datasource.type=com.alibaba.druid.pool.DruidDataSource + +spring.h2.console.enabled=true +spring.jpa.open-in-view=true +spring.data.jpa.repositories.bootstrap-mode=default +logging.level.org.hibernate.SQL=debug + +#允许覆盖bean注入 +spring.main.allow-bean-definition-overriding=true + +#redis配置 +spring.redis.host=localhost +spring.redis.port=6379 +spring.redis.timeout=30 +spring.redis.password= +spring.redis.database=0 +spring.redis.jedis.pool.max-idle=8 +spring.redis.jedis.pool.min-idle=0 +spring.redis.jedis.pool.max-active=8 +spring.redis.jedis.pool.max-wait=-1 + +logging.config=classpath:logback-spring.xml +logging.path=/home/wangbin/logs/ diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..2271a9c --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,140 @@ + + + + SpringBootDemo + + + + + + + + ${LOG_PATH}/${APPDIR}/log_error.log + + + + ${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log + + + 2MB + + + + true + + + ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n + utf-8 + + + + error + ACCEPT + DENY + + + + + + + ${LOG_PATH}/${APPDIR}/log_warn.log + + + + ${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log + + + 2MB + + + + true + + + ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n + utf-8 + + + + warn + ACCEPT + DENY + + + + + + + ${LOG_PATH}/${APPDIR}/log_info.log + + + + ${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log + + + 2MB + + + + true + + + ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n + utf-8 + + + + info + ACCEPT + DENY + + + + + + + ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n + utf-8 + + + + debug + + + + + + + + + + + + + + + + \ No newline at end of file -- libgit2 0.21.2