diff --git a/.DS_Store b/.DS_Store index b1f423b..67ec06f 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index c2065bc..584d047 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ out/ ### VS Code ### .vscode/ + + +*.jar \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 196f306..8026851 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ FROM openjdk:11-jdk ARG JAR_FILE=build/libs/*.jar COPY ${JAR_FILE} app.jar -ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=test", "/app.jar"] \ No newline at end of file +ENTRYPOINT ["java", "-jar", "/app.jar"] \ No newline at end of file diff --git a/build.gradle b/build.gradle index e0fa841..8a011dc 100644 --- a/build.gradle +++ b/build.gradle @@ -52,6 +52,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-aop' implementation 'io.github.resilience4j:resilience4j-spring-boot2:1.7.0' implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch' + implementation 'org.redisson:redisson-spring-boot-starter:3.17.7' } tasks.named('test') { diff --git a/build/libs/HappyScrolls-0.0.1-SNAPSHOT.jar b/build/libs/HappyScrolls-0.0.1-SNAPSHOT.jar deleted file mode 100644 index b0d7e55..0000000 Binary files a/build/libs/HappyScrolls-0.0.1-SNAPSHOT.jar and /dev/null differ diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000..67e3527 Binary files /dev/null and b/src/.DS_Store differ diff --git a/src/main/java/com/HappyScrolls/batch/JobScheduler.java b/src/main/java/com/HappyScrolls/batch/JobScheduler.java index fb3865e..dd8a988 100644 --- a/src/main/java/com/HappyScrolls/batch/JobScheduler.java +++ b/src/main/java/com/HappyScrolls/batch/JobScheduler.java @@ -21,8 +21,8 @@ public class JobScheduler { private final JobLauncher jobLauncher; private final BatchConfig batchConfig; - @ExeTimer - @Scheduled(cron="0 10 * * * *") +// @ExeTimer +// @Scheduled(cron="0 10 * * * *") public void runJob() throws NoSuchFieldException, NoSuchMethodException,IllegalAccessException{ Map confMap = new HashMap<>(); diff --git a/src/main/java/com/HappyScrolls/config/Redis/RedisCacheConfig.java b/src/main/java/com/HappyScrolls/config/Redis/RedisCacheConfig.java index a9c1ac0..0846c07 100644 --- a/src/main/java/com/HappyScrolls/config/Redis/RedisCacheConfig.java +++ b/src/main/java/com/HappyScrolls/config/Redis/RedisCacheConfig.java @@ -4,10 +4,12 @@ import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.StringRedisSerializer; @@ -33,6 +35,15 @@ public CacheManager cacheManager() { .cacheDefaults(redisCacheConfiguration) .build(); } + @Bean + public RedisTemplate redisTemplate() { + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(cf); + redisTemplate.setKeySerializer(new StringRedisSerializer()); + redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); + return redisTemplate; + } + // @Override diff --git a/src/main/java/com/HappyScrolls/config/dbReplica/ReplicationRoutingDataSource.java b/src/main/java/com/HappyScrolls/config/dbReplica/ReplicationRoutingDataSource.java index f95e965..7d630f8 100644 --- a/src/main/java/com/HappyScrolls/config/dbReplica/ReplicationRoutingDataSource.java +++ b/src/main/java/com/HappyScrolls/config/dbReplica/ReplicationRoutingDataSource.java @@ -15,7 +15,7 @@ // this.replicaDataSourceNames = new ReplicaDataSourceNames(names); // } // -// @Override +// // protected Object determineCurrentLookupKey() { // final boolean isReadOnly = TransactionSynchronizationManager.isCurrentTransactionReadOnly(); // if (isReadOnly) { diff --git a/src/main/java/com/HappyScrolls/config/elastic/ArticleDocCustomRepository.java b/src/main/java/com/HappyScrolls/config/elastic/ArticleDocCustomRepository.java new file mode 100644 index 0000000..ea0e6c6 --- /dev/null +++ b/src/main/java/com/HappyScrolls/config/elastic/ArticleDocCustomRepository.java @@ -0,0 +1,7 @@ +package com.HappyScrolls.config.elastic; + +import java.util.List; + +public interface ArticleDocCustomRepository { + List find(String parameter); +} diff --git a/src/main/java/com/HappyScrolls/config/elastic/ArticleDocCustomRepositoryImpl.java b/src/main/java/com/HappyScrolls/config/elastic/ArticleDocCustomRepositoryImpl.java new file mode 100644 index 0000000..354763c --- /dev/null +++ b/src/main/java/com/HappyScrolls/config/elastic/ArticleDocCustomRepositoryImpl.java @@ -0,0 +1,75 @@ +package com.HappyScrolls.config.elastic; + +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.elasticsearch.core.ElasticsearchOperations; +import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; +import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; +import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.elasticsearch.index.query.functionscore.FieldValueFactorFunctionBuilder; +import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Repository; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +@Repository +public class ArticleDocCustomRepositoryImpl implements ArticleDocCustomRepository { + + @Autowired + private ElasticsearchOperations elasticsearchOperations; + @Override + public List find(String parameter) { + +// NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder() +// .withQuery( +// QueryBuilders.functionScoreQuery( +// QueryBuilders.matchQuery("title", "부하테스트"), +// ScoreFunctionBuilders.fieldValueFactorFunction("view_count") +// .modifier(FieldValueFactorFunctionBuilder.DEFAULT_MODIFIER.LOG1P) +// .factor(1) +// ).boostMode(FunctionScoreQueryBuilder.DEFAULT_BOOST_MODE.MULTIPLY) +// ); + + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + for (String term : inputList(parameter)) { + boolQueryBuilder.should(QueryBuilders.multiMatchQuery(term, "title", "body")); + } + + FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders.functionScoreQuery( + boolQueryBuilder, + ScoreFunctionBuilders.fieldValueFactorFunction("view_count") + .modifier(FieldValueFactorFunctionBuilder.DEFAULT_MODIFIER.LOG1P) + .factor(1) + ).boostMode(FunctionScoreQueryBuilder.DEFAULT_BOOST_MODE.MULTIPLY); + + NativeSearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(functionScoreQueryBuilder) + .build(); + System.out.println(searchQuery.getQuery().toString()); + return elasticsearchOperations.search(searchQuery, ArticleDoc.class).getSearchHits() + .stream() + .map(hit -> hit.getContent()) + .collect(Collectors.toList()); + } + + public static List inputList(String input) { + String[] words = input.split(" "); + List combinations = new ArrayList<>(); + + for (int i = 0; i < words.length; i++) { + StringBuilder sb = new StringBuilder(); + for (int j = i; j < words.length; j++) { + sb.append(words[j]); + combinations.add(sb.toString()); + if (j != words.length) sb.append(" "); + } + } + + return combinations; + } +} diff --git a/src/main/java/com/HappyScrolls/config/elastic/ArticleDocRepository.java b/src/main/java/com/HappyScrolls/config/elastic/ArticleDocRepository.java index 8ca8aca..e9bbf5e 100644 --- a/src/main/java/com/HappyScrolls/config/elastic/ArticleDocRepository.java +++ b/src/main/java/com/HappyScrolls/config/elastic/ArticleDocRepository.java @@ -1,6 +1,7 @@ package com.HappyScrolls.config.elastic; import com.HappyScrolls.domain.article.entity.Article; +import com.HappyScrolls.domain.article.repository.ArticleCustomRepository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; @@ -9,7 +10,7 @@ import java.util.List; import java.util.Optional; -public interface ArticleDocRepository extends ElasticsearchRepository, CrudRepository { +public interface ArticleDocRepository extends ElasticsearchRepository, CrudRepository, ArticleDocCustomRepository { List findAllByTitle(String title); List findAllByTitleContaining(String title); diff --git a/src/main/java/com/HappyScrolls/config/elastic/ElasticSearchConfig.java b/src/main/java/com/HappyScrolls/config/elastic/ElasticSearchConfig.java index e52edcc..6cbc182 100644 --- a/src/main/java/com/HappyScrolls/config/elastic/ElasticSearchConfig.java +++ b/src/main/java/com/HappyScrolls/config/elastic/ElasticSearchConfig.java @@ -12,8 +12,9 @@ public class ElasticSearchConfig extends AbstractElasticsearchConfiguration { @Override public RestHighLevelClient elasticsearchClient() { - // http port 와 통신할 주소 - ClientConfiguration configuration = ClientConfiguration.builder().connectedTo("localhost:9200").build(); + ClientConfiguration configuration = ClientConfiguration.builder().connectedTo("localhost:9200") + .withBasicAuth("elastic", "changeme") // Add this line + .build(); return RestClients.create(configuration).rest(); } } \ No newline at end of file diff --git a/src/main/java/com/HappyScrolls/domain/article/adaptor/ArticleAdaptor.java b/src/main/java/com/HappyScrolls/domain/article/adaptor/ArticleAdaptor.java index 55fbaae..a5e270d 100644 --- a/src/main/java/com/HappyScrolls/domain/article/adaptor/ArticleAdaptor.java +++ b/src/main/java/com/HappyScrolls/domain/article/adaptor/ArticleAdaptor.java @@ -88,4 +88,9 @@ public List
search(Long lastindex, Integer limit,String param) { } + //로그인 한 유저가 작성한 게시글 페이징 조회 + public List
usersearch(Member member, Long lastindex, Integer limit) { + return articleRepository.usersearch(member,lastindex,limit); + } + } diff --git a/src/main/java/com/HappyScrolls/domain/article/controller/ArticleController.java b/src/main/java/com/HappyScrolls/domain/article/controller/ArticleController.java index 2cf85b0..529564d 100644 --- a/src/main/java/com/HappyScrolls/domain/article/controller/ArticleController.java +++ b/src/main/java/com/HappyScrolls/domain/article/controller/ArticleController.java @@ -105,6 +105,9 @@ public ResponseEntity> retrieveUserArticle(@Reques return ResponseEntity.ok(articleService.userArticleRetrieve(email)); } + + + @ApiOperation(value = "게시글 작성") @PostMapping("") public ResponseEntity createArticle(@AuthenticationPrincipal Member member, @RequestBody ArticleDTO.Request request) { @@ -132,4 +135,10 @@ public ResponseEntity> search(@RequestParam Long l return ResponseEntity.ok( articleService.search(lastindex,limit,param)); } -} + //로그인 한 유저가 작성한 게시글 페이징 조회 + @GetMapping("/usersearch") + public ResponseEntity> usersearch(@AuthenticationPrincipal Member member, @RequestParam Long lastindex, @RequestParam Integer limit){ + return ResponseEntity.ok(articleService.usersearch(member,lastindex,limit)); + } + + } diff --git a/src/main/java/com/HappyScrolls/domain/article/controller/ArticleDocController.java b/src/main/java/com/HappyScrolls/domain/article/controller/ArticleDocController.java index 0d448ee..1586f9c 100644 --- a/src/main/java/com/HappyScrolls/domain/article/controller/ArticleDocController.java +++ b/src/main/java/com/HappyScrolls/domain/article/controller/ArticleDocController.java @@ -39,8 +39,9 @@ public class ArticleDocController { private ArticleService articleService; @GetMapping("/elk") - public List get() { - return articleDocRepository.findAllByTitle("제목20"); + public ResponseEntity> get(@RequestParam String parameter) { + + return ResponseEntity.ok(ArticleDTO.ListResponse.toResponseDtoListFromArticleDocs(articleDocRepository.find(parameter))); } @Autowired diff --git a/src/main/java/com/HappyScrolls/domain/article/repository/ArticleCustomRepository.java b/src/main/java/com/HappyScrolls/domain/article/repository/ArticleCustomRepository.java index 003562c..07dab82 100644 --- a/src/main/java/com/HappyScrolls/domain/article/repository/ArticleCustomRepository.java +++ b/src/main/java/com/HappyScrolls/domain/article/repository/ArticleCustomRepository.java @@ -1,6 +1,7 @@ package com.HappyScrolls.domain.article.repository; import com.HappyScrolls.domain.article.entity.Article; +import com.HappyScrolls.domain.member.entity.Member; import com.HappyScrolls.domain.tag.entity.Tag; import java.time.LocalDate; @@ -19,4 +20,6 @@ public interface ArticleCustomRepository { List
findByTagListPaging(Long lastindex, List tags); List
search(Long lastindex, Integer limit, String param); + + List
usersearch(Member member, Long lastindex, Integer limit); } diff --git a/src/main/java/com/HappyScrolls/domain/article/repository/ArticleCustomRepositoryImpl.java b/src/main/java/com/HappyScrolls/domain/article/repository/ArticleCustomRepositoryImpl.java index d829a87..9da8a84 100644 --- a/src/main/java/com/HappyScrolls/domain/article/repository/ArticleCustomRepositoryImpl.java +++ b/src/main/java/com/HappyScrolls/domain/article/repository/ArticleCustomRepositoryImpl.java @@ -1,6 +1,7 @@ package com.HappyScrolls.domain.article.repository; import com.HappyScrolls.domain.article.entity.Article; +import com.HappyScrolls.domain.member.entity.Member; import com.HappyScrolls.domain.tag.entity.ArticleTag; import com.HappyScrolls.domain.tag.entity.Tag; import com.querydsl.jpa.impl.JPAQueryFactory; @@ -107,4 +108,16 @@ public List
search(Long lastindex, Integer limit, String param) { .limit(limit) .fetch(); } + + //로그인 한 유저가 작성한 게시글 페이징 조회 + @Override + public List
usersearch(Member memberA, Long lastindex, Integer limit) { + return jpaQueryFactory + .selectFrom(article) + .innerJoin(article.member, member) + .fetchJoin() + .where(article.member.eq(memberA),article.id.gt(lastindex)) + .limit(limit) + .fetch(); + } } diff --git a/src/main/java/com/HappyScrolls/domain/article/service/ArticleService.java b/src/main/java/com/HappyScrolls/domain/article/service/ArticleService.java index 7b452e2..e9abaca 100644 --- a/src/main/java/com/HappyScrolls/domain/article/service/ArticleService.java +++ b/src/main/java/com/HappyScrolls/domain/article/service/ArticleService.java @@ -49,7 +49,9 @@ public Long articleCreate(Member member, ArticleDTO.Request request) { } public ArticleDTO.DetailResponse articleRetrieve(Long id) { - return ArticleDTO.DetailResponse.toResponseDto(articleAdaptor.retrieveArticle(id)); + Article article = articleAdaptor.retrieveArticle(id); + article.increaseViewCount(); + return ArticleDTO.DetailResponse.toResponseDto(article); } public Long articleEdit(Member member, ArticleDTO.Edit request) { @@ -137,4 +139,12 @@ public List articleRetrievePaging(PageRequest pageReque } + //로그인 한 유저가 작성한 게시글 페이징 조회 + public List usersearch(Member member, Long lastindex, Integer limit) { + return ArticleDTO.ListResponse.toResponseDtoList(articleAdaptor.usersearch(member,lastindex, limit)); + } + + + + } diff --git a/src/main/java/com/HappyScrolls/domain/product/repository/ProductRepository.java b/src/main/java/com/HappyScrolls/domain/product/repository/ProductRepository.java index 269e0eb..aa75558 100644 --- a/src/main/java/com/HappyScrolls/domain/product/repository/ProductRepository.java +++ b/src/main/java/com/HappyScrolls/domain/product/repository/ProductRepository.java @@ -4,7 +4,10 @@ import com.HappyScrolls.domain.product.entity.Product; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Lock; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.Repository; +import org.springframework.data.repository.query.Param; import javax.persistence.LockModeType; import java.util.List; @@ -12,7 +15,7 @@ public interface ProductRepository extends Repository { - @Lock(LockModeType.PESSIMISTIC_WRITE) + //@Lock(LockModeType.PESSIMISTIC_WRITE) Optional findById(Long id); Product save(Product entity); @@ -20,4 +23,8 @@ public interface ProductRepository extends Repository { List findAll(); Product saveAndFlush(Product entity); + + @Modifying(clearAutomatically = true, flushAutomatically = true) + @Query(value = "update Product p set p.quantity = p.quantity - 1 where p.id = :id") + void test(Long id); } diff --git a/src/main/java/com/HappyScrolls/domain/product/service/ProductService.java b/src/main/java/com/HappyScrolls/domain/product/service/ProductService.java index 9c586f4..29b0538 100644 --- a/src/main/java/com/HappyScrolls/domain/product/service/ProductService.java +++ b/src/main/java/com/HappyScrolls/domain/product/service/ProductService.java @@ -4,11 +4,14 @@ import com.HappyScrolls.domain.product.dto.ProductDTO; import com.HappyScrolls.domain.product.entity.Product; import com.HappyScrolls.domain.product.repository.ProductRepository; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.transaction.Transactional; import java.util.List; +import java.util.concurrent.TimeUnit; @Service public class ProductService { @@ -19,6 +22,9 @@ public class ProductService { @Autowired private ProductAdaptor productAdaptor; + @Autowired + private RedissonClient redissonClient; + public Long productCreate(ProductDTO.Request request) { return productAdaptor.productCreate(request.toEntity()); } @@ -33,11 +39,25 @@ public List productAllRetrieve() { @Transactional - public synchronized void test() { - Product product= productRepository.findById(1l).get(); - if (product.getQuantity() > 0) { - product.decreaseQuantity(); - productRepository.saveAndFlush(product); + public void test(Long id) { + RLock lock = redissonClient.getLock(id.toString()); + + try { + lock.tryLock(10, 1, TimeUnit.SECONDS); + + Product product= productRepository.findById(1l).get(); + if (product.getQuantity() > 0) { + product.decreaseQuantity(); + productRepository.saveAndFlush(product); + } + } catch (InterruptedException e) { + throw new RuntimeException(e); + } finally { + lock.unlock(); } } + @Transactional + public void test2() { + productRepository.test(1l); + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index c788397..85e2f52 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -96,9 +96,9 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://localhost:3306/happyscrollslocal + url: jdbc:mysql://localhost:3307/happyscrollslocal username: root - password: Chlgurtns98! + password: root resilience4j: circuitbreaker: @@ -122,6 +122,11 @@ server: port: 8080 spring: + batch: + jdbc: + initialize-schema: ALWAYS + job: + enabled: false config: activate: on-profile: test @@ -155,27 +160,23 @@ spring: pathmatch: matching-strategy: ant_path_matcher - datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://plz:3000/test - username: root - password: root # datasource: -# hikari: -# source: -# username: root -# password: 1234 -# jdbc-url: jdbc:mysql://db-master:3306/test -# replica: -# replica-List: -# - name: replica1 -# username: root -# password: 1234 -# jdbc-url: jdbc:mysql://db-slave:3306/test -# - name: replica2 -# username: root -# password: 1234 -# jdbc-url: jdbc:mysql://db-slave2:3306/test +# driver-class-name: com.mysql.cj.jdbc.Driver +# url: jdbc:mysql://master:3000/test +# username: root +# password: root + datasource: + hikari: + source: + username: root + password: root + jdbc-url: jdbc:mysql://master:3000/sample + replica: + replica-List: + - name: replica1 + username: root + password: root + jdbc-url: jdbc:mysql://slave:3001/sample management: diff --git a/src/test/java/com/HappyScrolls/Stocktest.java b/src/test/java/com/HappyScrolls/Stocktest.java new file mode 100644 index 0000000..f49c3cd --- /dev/null +++ b/src/test/java/com/HappyScrolls/Stocktest.java @@ -0,0 +1,79 @@ +package com.HappyScrolls; + +import com.HappyScrolls.domain.product.entity.Product; +import com.HappyScrolls.domain.product.repository.ProductRepository; +import com.HappyScrolls.domain.product.service.ProductService; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +@SpringBootTest +class Stocktest { + + @Autowired + private ProductRepository productRepository; + @Autowired + private ProductService productService; + + @Autowired + private RedisTemplate redisTemplate; + @BeforeEach + void before() { + Product product = Product.builder().id(1l).quantity(100).build(); + productRepository.save(product); + } + + void test(String thread,int time) { + redisTemplate.opsForZSet().add(thread,time,1); + } + + + @Test + void 동시에_100개의_요청() throws InterruptedException { + + + int threadCount = 100; + + ExecutorService executorService = Executors.newFixedThreadPool(32); + + CountDownLatch latch = new CountDownLatch(threadCount); + + + for (int i = 0; i < threadCount; i++) { + executorService.submit(() -> { + try { + productService.test(1l); + + } + catch (Exception e) { + System.out.println("e = " + e); + } + finally { + latch.countDown(); + } + } + ); + } + + latch.await(); + + Product result = productRepository.findById(1L).get(); + System.out.println("result.getQuantity() = " + result.getQuantity()); + assertThat(result.getQuantity()).isEqualTo(0L); + + } +} diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml index 1f61a0c..b9f5d34 100644 --- a/src/test/resources/application.yml +++ b/src/test/resources/application.yml @@ -6,7 +6,7 @@ spring: job: enabled: false jpa: - show-sql: true + show-sql: false properties: hibernate: format_sql: false