diff --git a/build.gradle b/build.gradle index 7dda618..7516da0 100644 --- a/build.gradle +++ b/build.gradle @@ -64,6 +64,10 @@ dependencies { // file extension implementation 'commons-io:commons-io:2.11.0' + + //monitoring + implementation 'org.springframework.boot:spring-boot-starter-actuator' + implementation 'io.micrometer:micrometer-registry-prometheus' } tasks.named('test') { diff --git a/docker-compose.yml b/docker-compose.yml index 31842ee..2daaedf 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,6 +29,30 @@ services: networks: - app-network + prometheus: + image: prom/prometheus + container_name: prometheus + volumes: + - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml + ports: + - "9090:9090" + networks: + - app-network + depends_on: + - application + + grafana: + image: grafana/grafana + container_name: grafana + depends_on: + - prometheus + volumes: + - ./monitoring/grafana/datasources.yml:/etc/grafana/provisioning/datasources/datasources.yml + ports: + - "3000:3000" + networks: + - app-network + application: container_name: book-mile-app build: @@ -42,12 +66,65 @@ services: env_file: - .env command: [ "java", "-jar", "/app.jar" ] + volumes: + - ./logs:/var/log/book-mile + networks: + - app-network + + elasticsearch: + image: docker.elastic.co/elasticsearch/elasticsearch:8.5.1 + container_name: elasticsearch + environment: + - discovery.type=single-node + - xpack.security.enabled=false + - bootstrap.memory_lock=true + - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + ports: + - "9200:9200" + volumes: + - elasticsearch_data:/usr/share/elasticsearch/data + networks: + - app-network + + kibana: + image: docker.elastic.co/kibana/kibana:8.5.1 + container_name: kibana + depends_on: + - elasticsearch + ports: + - "5601:5601" + networks: + - app-network + + logstash: + image: docker.elastic.co/logstash/logstash:8.5.1 + container_name: logstash + volumes: + - ./monitoring/logstash.conf:/usr/share/logstash/pipeline/logstash.conf + ports: + - "5044:5044" + depends_on: + - elasticsearch + networks: + - app-network + + filebeat: + image: docker.elastic.co/beats/filebeat:8.5.1 + container_name: filebeat + user: root + command: filebeat -e -strict.perms=false + volumes: + - ./monitoring/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro + - ./logs:/var/log/book-mile + depends_on: + - logstash networks: - app-network volumes: mysql_data: redis_data: + elasticsearch_data: networks: app-network: diff --git a/logs/app.log b/logs/app.log new file mode 100644 index 0000000..1bf26d7 --- /dev/null +++ b/logs/app.log @@ -0,0 +1,325 @@ +2025-02-17T06:30:00.900Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : Starting BackendApplication v0.0.1-SNAPSHOT using Java 21 with PID 1 (/app.jar started by root in /) +2025-02-17T06:30:00.924Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : The following 1 profile is active: "oauth" +2025-02-17T06:30:17.045Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2025-02-17T06:30:17.076Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-02-17T06:30:17.615Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.global.redis.RefreshTokenRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2025-02-17T06:30:18.876Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 1665 ms. Found 11 JPA repository interfaces. +2025-02-17T06:30:18.999Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2025-02-17T06:30:19.010Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode. +2025-02-17T06:30:19.156Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.group.repository.GroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T06:30:19.175Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.review.repository.ReviewRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T06:30:19.179Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.review.service.ReviewBookRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T06:30:19.196Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.book.repository.BookRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T06:30:19.227Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.record.repository.RecordRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T06:30:19.230Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.record.service.RecordGroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T06:30:19.258Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.user.repository.UserOAuthRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T06:30:19.261Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.user.repository.UserRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T06:30:19.265Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.image.repository.ImageRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T06:30:19.280Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.userGroup.repository.UserGroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T06:30:19.282Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.template.repository.TemplateRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T06:30:19.372Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 304 ms. Found 1 Redis repository interface. +2025-02-17T06:30:31.153Z INFO 1 --- [backend] [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http) +2025-02-17T06:30:31.319Z INFO 1 --- [backend] [main] o.apache.catalina.core.StandardService : Starting service [Tomcat] +2025-02-17T06:30:31.337Z INFO 1 --- [backend] [main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.31] +2025-02-17T06:30:31.752Z INFO 1 --- [backend] [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext +2025-02-17T06:30:31.769Z INFO 1 --- [backend] [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 30504 ms +2025-02-17T06:30:36.094Z INFO 1 --- [backend] [main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] +2025-02-17T06:30:36.692Z INFO 1 --- [backend] [main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.5.3.Final +2025-02-17T06:30:36.951Z INFO 1 --- [backend] [main] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled +2025-02-17T06:30:39.493Z INFO 1 --- [backend] [main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer +2025-02-17T06:30:39.693Z INFO 1 --- [backend] [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... +2025-02-17T06:30:42.038Z INFO 1 --- [backend] [main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@726a5e6a +2025-02-17T06:30:42.073Z INFO 1 --- [backend] [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. +2025-02-17T06:30:42.590Z WARN 1 --- [backend] [main] org.hibernate.orm.deprecation : HHH90000025: MySQL8Dialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) +2025-02-17T06:30:42.597Z WARN 1 --- [backend] [main] org.hibernate.orm.deprecation : HHH90000026: MySQL8Dialect has been deprecated; use org.hibernate.dialect.MySQLDialect instead +2025-02-17T06:30:42.746Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(12, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@6b4a2887) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@23b087c3) +2025-02-17T06:30:42.750Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(-9, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@237c8718) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@325e03b) +2025-02-17T06:30:42.763Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(-3, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@3911fec8) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@1e38e8b6) +2025-02-17T06:30:42.786Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4003, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@59bbf82e) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@75b3ef1a) +2025-02-17T06:30:42.788Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4001, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@43e2b8da) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@1ac68548) +2025-02-17T06:30:42.791Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4002, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@1c3a64b6) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@761b9314) +2025-02-17T06:30:42.802Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2004, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@20e9c165) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@eabecf5) +2025-02-17T06:30:42.804Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2005, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@417b3642) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@6bd28e4a) +2025-02-17T06:30:42.807Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2011, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@55e88bc) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@544300a6) +2025-02-17T06:30:51.159Z INFO 1 --- [backend] [main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) +2025-02-17T06:30:51.913Z INFO 1 --- [backend] [main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-02-17T06:30:54.467Z INFO 1 --- [backend] [main] o.s.d.j.r.query.QueryEnhancerFactory : Hibernate is in classpath; If applicable, HQL parser will be used. +2025-02-17T06:30:59.970Z INFO 1 --- [backend] [main] c.b.b.global.oauth.OAuth2UnlinkService : kakao admin-key : f7827e5bb4a42fd97f6226837a0fa99e +2025-02-17T06:31:17.626Z WARN 1 --- [backend] [main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning +2025-02-17T06:31:17.923Z INFO 1 --- [backend] [main] r$InitializeUserDetailsManagerConfigurer : Global AuthenticationManager configured with UserDetailsService bean with name customUserDetailsService +2025-02-17T06:31:20.882Z INFO 1 --- [backend] [main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint beneath base path '/actuator' +2025-02-17T06:31:22.045Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/swagger-ui/**'], Ant [pattern='/swagger-ui/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T06:31:22.055Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/v3/api-docs/**'], Ant [pattern='/v3/api-docs/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T06:31:22.061Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/error'], Ant [pattern='/error']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T06:31:22.063Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/favicon.ico'], Ant [pattern='/favicon.ico']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T06:31:26.572Z INFO 1 --- [backend] [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/' +2025-02-17T06:31:26.695Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : Started BackendApplication in 92.008 seconds (process running for 100.822) +2025-02-17T06:31:36.787Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-02-17T06:31:36.796Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' +2025-02-17T06:31:36.804Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 6 ms +2025-02-17T06:31:43.770Z INFO 1 --- [backend] [http-nio-8080-exec-5] o.springdoc.api.AbstractOpenApiResource : Init duration for springdoc-openapi is: 3930 ms +2025-02-17T06:33:22.332Z INFO 1 --- [backend] [http-nio-8080-exec-10] c.b.backend.global.jwt.JwtTokenProvider : JwtTokenProvider.resolveToken: 토큰 분리 eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyQGV4YW1wbGUuY29tIiwidHlwZSI6ImFjY2Vzc1Rva2VuIiwidXNlcklkIjoxLCJyb2xlIjoiVVNFUiIsImlhdCI6MTczOTc3Mzk4MCwiZXhwIjoxNzM5Nzc3NTgwfQ.G5qJ0_x7KpXsLF2SHWW_0yhvZfhmV7000mrLkDBku0Q +2025-02-17T06:33:22.394Z INFO 1 --- [backend] [http-nio-8080-exec-10] c.b.backend.global.jwt.JwtTokenProvider : JwtTokenProvider.parseClaims: 토큰 검증 완료, 파싱 클레임 - {sub=user@example.com, type=accessToken, userId=1, role=USER, iat=1739773980, exp=1739777580} +2025-02-17T06:33:22.399Z INFO 1 --- [backend] [http-nio-8080-exec-10] c.b.backend.global.jwt.JwtTokenProvider : JwtTokenProvider.parseClaims: 토큰 검증 완료, 파싱 클레임 - {sub=user@example.com, type=accessToken, userId=1, role=USER, iat=1739773980, exp=1739777580} +2025-02-17T06:33:22.400Z INFO 1 --- [backend] [http-nio-8080-exec-10] c.b.backend.global.jwt.JwtTokenProvider : JwtTokenProvider.getUserEmail: 토큰 기반 회원 구별 정보(email) 추출 완료 - user@example.com +2025-02-17T06:33:22.402Z INFO 1 --- [backend] [http-nio-8080-exec-10] c.b.b.g.jwt.CustomUserDetailsService : UserDetailsService.loadUserByUsername: username - user@example.com +2025-02-17T06:33:22.485Z INFO 1 --- [backend] [http-nio-8080-exec-10] c.b.b.g.jwt.CustomUserDetailsService : UserDetailsService.loadUserByUsername: username - user@example.com +2025-02-17T06:33:22.486Z INFO 1 --- [backend] [http-nio-8080-exec-10] c.b.backend.global.jwt.JwtTokenProvider : JwtTokenProvider.getAuthentication: userDetails 가져옴 - user@example.com +2025-02-17T06:33:22.495Z INFO 1 --- [backend] [http-nio-8080-exec-10] c.b.backend.global.jwt.JwtTokenProvider : JwtTokenProvider.resolveToken: 토큰 분리 eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyQGV4YW1wbGUuY29tIiwidHlwZSI6ImFjY2Vzc1Rva2VuIiwidXNlcklkIjoxLCJyb2xlIjoiVVNFUiIsImlhdCI6MTczOTc3Mzk4MCwiZXhwIjoxNzM5Nzc3NTgwfQ.G5qJ0_x7KpXsLF2SHWW_0yhvZfhmV7000mrLkDBku0Q +2025-02-17T06:33:22.501Z INFO 1 --- [backend] [http-nio-8080-exec-10] c.b.backend.global.jwt.JwtTokenProvider : JwtTokenProvider.parseClaims: 토큰 검증 완료, 파싱 클레임 - {sub=user@example.com, type=accessToken, userId=1, role=USER, iat=1739773980, exp=1739777580} +2025-02-17T06:33:22.506Z INFO 1 --- [backend] [http-nio-8080-exec-10] c.b.backend.global.jwt.JwtTokenProvider : JwtTokenProvider.parseClaims: 토큰 검증 완료, 파싱 클레임 - {sub=user@example.com, type=accessToken, userId=1, role=USER, iat=1739773980, exp=1739777580} +2025-02-17T06:33:22.507Z INFO 1 --- [backend] [http-nio-8080-exec-10] c.b.backend.global.jwt.JwtTokenProvider : JwtTokenProvider.getUserEmail: 토큰 기반 회원 구별 정보(email) 추출 완료 - user@example.com +2025-02-17T06:33:22.513Z INFO 1 --- [backend] [http-nio-8080-exec-10] c.b.b.g.jwt.CustomUserDetailsService : UserDetailsService.loadUserByUsername: username - user@example.com +2025-02-17T06:33:22.524Z INFO 1 --- [backend] [http-nio-8080-exec-10] c.b.b.g.jwt.CustomUserDetailsService : UserDetailsService.loadUserByUsername: username - user@example.com +2025-02-17T06:33:22.529Z INFO 1 --- [backend] [http-nio-8080-exec-10] c.b.backend.global.jwt.JwtTokenProvider : JwtTokenProvider.getAuthentication: userDetails 가져옴 - user@example.com +2025-02-17T07:06:01.279Z INFO 1 --- [backend] [SpringApplicationShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' +2025-02-17T07:06:01.319Z INFO 1 --- [backend] [SpringApplicationShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... +2025-02-17T07:06:01.357Z INFO 1 --- [backend] [SpringApplicationShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. +2025-02-17T07:07:36.891Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : Starting BackendApplication v0.0.1-SNAPSHOT using Java 21 with PID 1 (/app.jar started by root in /) +2025-02-17T07:07:36.910Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : The following 1 profile is active: "oauth" +2025-02-17T07:07:51.858Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2025-02-17T07:07:51.881Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-02-17T07:07:52.226Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.global.redis.RefreshTokenRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2025-02-17T07:07:53.320Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 1382 ms. Found 11 JPA repository interfaces. +2025-02-17T07:07:53.512Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2025-02-17T07:07:53.545Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode. +2025-02-17T07:07:53.727Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.group.repository.GroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:07:53.748Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.review.repository.ReviewRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:07:53.770Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.review.service.ReviewBookRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:07:53.788Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.book.repository.BookRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:07:53.809Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.record.repository.RecordRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:07:53.815Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.record.service.RecordGroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:07:53.824Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.user.repository.UserOAuthRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:07:53.848Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.user.repository.UserRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:07:53.851Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.image.repository.ImageRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:07:53.866Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.userGroup.repository.UserGroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:07:53.893Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.template.repository.TemplateRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:07:53.925Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 320 ms. Found 1 Redis repository interface. +2025-02-17T07:08:03.462Z INFO 1 --- [backend] [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http) +2025-02-17T07:08:03.652Z INFO 1 --- [backend] [main] o.apache.catalina.core.StandardService : Starting service [Tomcat] +2025-02-17T07:08:03.661Z INFO 1 --- [backend] [main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.31] +2025-02-17T07:08:04.050Z INFO 1 --- [backend] [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext +2025-02-17T07:08:04.063Z INFO 1 --- [backend] [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 26683 ms +2025-02-17T07:08:07.846Z INFO 1 --- [backend] [main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] +2025-02-17T07:08:08.895Z INFO 1 --- [backend] [main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.5.3.Final +2025-02-17T07:08:09.297Z INFO 1 --- [backend] [main] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled +2025-02-17T07:08:12.705Z INFO 1 --- [backend] [main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer +2025-02-17T07:08:12.959Z INFO 1 --- [backend] [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... +2025-02-17T07:08:15.844Z INFO 1 --- [backend] [main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@4a8bf1dc +2025-02-17T07:08:15.870Z INFO 1 --- [backend] [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. +2025-02-17T07:08:16.350Z WARN 1 --- [backend] [main] org.hibernate.orm.deprecation : HHH90000025: MySQL8Dialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) +2025-02-17T07:08:16.357Z WARN 1 --- [backend] [main] org.hibernate.orm.deprecation : HHH90000026: MySQL8Dialect has been deprecated; use org.hibernate.dialect.MySQLDialect instead +2025-02-17T07:08:16.648Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(12, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@7267006e) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@745c8a04) +2025-02-17T07:08:16.657Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(-9, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@59d29065) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@7a13ad55) +2025-02-17T07:08:16.669Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(-3, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@303db609) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@20a116a0) +2025-02-17T07:08:16.677Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4003, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@6dbdeb69) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@a238a8e) +2025-02-17T07:08:16.690Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4001, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@5773f83d) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@7fcfe065) +2025-02-17T07:08:16.707Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4002, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@7d2baa56) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@6b4a2887) +2025-02-17T07:08:16.719Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2004, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@23b087c3) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@237c8718) +2025-02-17T07:08:16.727Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2005, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@325e03b) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@3911fec8) +2025-02-17T07:08:16.746Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2011, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@1e38e8b6) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@59bbf82e) +2025-02-17T07:08:25.102Z INFO 1 --- [backend] [main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) +2025-02-17T07:08:25.932Z INFO 1 --- [backend] [main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-02-17T07:08:28.950Z INFO 1 --- [backend] [main] o.s.d.j.r.query.QueryEnhancerFactory : Hibernate is in classpath; If applicable, HQL parser will be used. +2025-02-17T07:08:34.020Z INFO 1 --- [backend] [main] c.b.b.global.oauth.OAuth2UnlinkService : kakao admin-key : f7827e5bb4a42fd97f6226837a0fa99e +2025-02-17T07:08:47.607Z WARN 1 --- [backend] [main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning +2025-02-17T07:08:47.812Z INFO 1 --- [backend] [main] r$InitializeUserDetailsManagerConfigurer : Global AuthenticationManager configured with UserDetailsService bean with name customUserDetailsService +2025-02-17T07:08:50.928Z INFO 1 --- [backend] [main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint beneath base path '/actuator' +2025-02-17T07:08:52.039Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/swagger-ui/**'], Ant [pattern='/swagger-ui/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T07:08:52.046Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/v3/api-docs/**'], Ant [pattern='/v3/api-docs/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T07:08:52.049Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/error'], Ant [pattern='/error']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T07:08:52.050Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/favicon.ico'], Ant [pattern='/favicon.ico']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T07:08:56.056Z INFO 1 --- [backend] [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/' +2025-02-17T07:08:56.192Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : Started BackendApplication in 84.959 seconds (process running for 92.376) +2025-02-17T07:08:57.118Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-02-17T07:08:57.121Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' +2025-02-17T07:08:57.137Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 12 ms +2025-02-17T07:16:10.344Z INFO 1 --- [backend] [SpringApplicationShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' +2025-02-17T07:16:10.358Z INFO 1 --- [backend] [SpringApplicationShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... +2025-02-17T07:16:10.412Z INFO 1 --- [backend] [SpringApplicationShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. +2025-02-17T07:19:34.378Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : Starting BackendApplication v0.0.1-SNAPSHOT using Java 21 with PID 1 (/app.jar started by root in /) +2025-02-17T07:19:34.492Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : The following 1 profile is active: "oauth" +2025-02-17T07:19:57.381Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2025-02-17T07:19:57.398Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-02-17T07:19:58.006Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.global.redis.RefreshTokenRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2025-02-17T07:19:59.645Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 2104 ms. Found 11 JPA repository interfaces. +2025-02-17T07:19:59.849Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2025-02-17T07:19:59.881Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode. +2025-02-17T07:20:00.109Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.group.repository.GroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:20:00.115Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.review.repository.ReviewRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:20:00.128Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.review.service.ReviewBookRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:20:00.131Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.book.repository.BookRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:20:00.160Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.record.repository.RecordRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:20:00.188Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.record.service.RecordGroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:20:00.204Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.user.repository.UserOAuthRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:20:00.214Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.user.repository.UserRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:20:00.229Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.image.repository.ImageRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:20:00.239Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.userGroup.repository.UserGroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:20:00.248Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.template.repository.TemplateRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:20:00.319Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 352 ms. Found 1 Redis repository interface. +2025-02-17T07:20:11.824Z INFO 1 --- [backend] [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http) +2025-02-17T07:20:11.968Z INFO 1 --- [backend] [main] o.apache.catalina.core.StandardService : Starting service [Tomcat] +2025-02-17T07:20:11.979Z INFO 1 --- [backend] [main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.31] +2025-02-17T07:20:12.354Z INFO 1 --- [backend] [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext +2025-02-17T07:20:12.375Z INFO 1 --- [backend] [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 36861 ms +2025-02-17T07:20:16.409Z INFO 1 --- [backend] [main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] +2025-02-17T07:20:16.845Z INFO 1 --- [backend] [main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.5.3.Final +2025-02-17T07:20:17.078Z INFO 1 --- [backend] [main] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled +2025-02-17T07:20:20.363Z INFO 1 --- [backend] [main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer +2025-02-17T07:20:20.819Z INFO 1 --- [backend] [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... +2025-02-17T07:20:23.740Z INFO 1 --- [backend] [main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@10728fe8 +2025-02-17T07:20:23.773Z INFO 1 --- [backend] [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. +2025-02-17T07:20:24.591Z WARN 1 --- [backend] [main] org.hibernate.orm.deprecation : HHH90000025: MySQL8Dialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) +2025-02-17T07:20:24.629Z WARN 1 --- [backend] [main] org.hibernate.orm.deprecation : HHH90000026: MySQL8Dialect has been deprecated; use org.hibernate.dialect.MySQLDialect instead +2025-02-17T07:20:25.021Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(12, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@37393dab) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@4866a755) +2025-02-17T07:20:25.039Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(-9, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@1361e880) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@3506bc8b) +2025-02-17T07:20:25.049Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(-3, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@4bac0be5) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@368d51ca) +2025-02-17T07:20:25.059Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4003, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@2a349a73) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@2ad6895a) +2025-02-17T07:20:25.068Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4001, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@10e4cc6) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@5d515e2c) +2025-02-17T07:20:25.076Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4002, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@53b8a0f7) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@4d3a7f83) +2025-02-17T07:20:25.085Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2004, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@3ea1729e) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@6956eb58) +2025-02-17T07:20:25.098Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2005, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@7fff419d) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@6127ef86) +2025-02-17T07:20:25.108Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2011, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@542754be) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@af57949) +2025-02-17T07:20:34.737Z INFO 1 --- [backend] [main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) +2025-02-17T07:20:35.678Z INFO 1 --- [backend] [main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-02-17T07:20:38.688Z INFO 1 --- [backend] [main] o.s.d.j.r.query.QueryEnhancerFactory : Hibernate is in classpath; If applicable, HQL parser will be used. +2025-02-17T07:20:46.703Z INFO 1 --- [backend] [main] c.b.b.global.oauth.OAuth2UnlinkService : kakao admin-key : f7827e5bb4a42fd97f6226837a0fa99e +2025-02-17T07:21:03.644Z WARN 1 --- [backend] [main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning +2025-02-17T07:21:04.032Z INFO 1 --- [backend] [main] r$InitializeUserDetailsManagerConfigurer : Global AuthenticationManager configured with UserDetailsService bean with name customUserDetailsService +2025-02-17T07:21:06.741Z INFO 1 --- [backend] [main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint beneath base path '/actuator' +2025-02-17T07:21:07.563Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/swagger-ui/**'], Ant [pattern='/swagger-ui/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T07:21:07.568Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/v3/api-docs/**'], Ant [pattern='/v3/api-docs/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T07:21:07.570Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/error'], Ant [pattern='/error']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T07:21:07.572Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/favicon.ico'], Ant [pattern='/favicon.ico']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T07:21:12.274Z INFO 1 --- [backend] [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/' +2025-02-17T07:21:12.432Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : Started BackendApplication in 105.067 seconds (process running for 113.078) +2025-02-17T07:21:21.123Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-02-17T07:21:21.125Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' +2025-02-17T07:21:21.155Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 18 ms +2025-02-17T07:22:27.672Z INFO 1 --- [backend] [SpringApplicationShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' +2025-02-17T07:22:27.682Z INFO 1 --- [backend] [SpringApplicationShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... +2025-02-17T07:22:27.757Z INFO 1 --- [backend] [SpringApplicationShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. +2025-02-17T07:38:06.908Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : Starting BackendApplication v0.0.1-SNAPSHOT using Java 21 with PID 1 (/app.jar started by root in /) +2025-02-17T07:38:06.982Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : The following 1 profile is active: "oauth" +2025-02-17T07:38:26.333Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2025-02-17T07:38:26.347Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-02-17T07:38:26.722Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.global.redis.RefreshTokenRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2025-02-17T07:38:27.940Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 1531 ms. Found 11 JPA repository interfaces. +2025-02-17T07:38:28.061Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2025-02-17T07:38:28.085Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode. +2025-02-17T07:38:28.298Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.group.repository.GroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:38:28.304Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.review.repository.ReviewRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:38:28.327Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.review.service.ReviewBookRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:38:28.342Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.book.repository.BookRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:38:28.349Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.record.repository.RecordRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:38:28.361Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.record.service.RecordGroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:38:28.376Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.user.repository.UserOAuthRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:38:28.385Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.user.repository.UserRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:38:28.412Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.image.repository.ImageRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:38:28.432Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.userGroup.repository.UserGroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:38:28.444Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.template.repository.TemplateRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T07:38:28.554Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 338 ms. Found 1 Redis repository interface. +2025-02-17T07:38:40.313Z INFO 1 --- [backend] [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http) +2025-02-17T07:38:40.493Z INFO 1 --- [backend] [main] o.apache.catalina.core.StandardService : Starting service [Tomcat] +2025-02-17T07:38:40.496Z INFO 1 --- [backend] [main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.31] +2025-02-17T07:38:41.001Z INFO 1 --- [backend] [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext +2025-02-17T07:38:41.007Z INFO 1 --- [backend] [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 33314 ms +2025-02-17T07:38:44.808Z INFO 1 --- [backend] [main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] +2025-02-17T07:38:45.435Z INFO 1 --- [backend] [main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.5.3.Final +2025-02-17T07:38:45.694Z INFO 1 --- [backend] [main] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled +2025-02-17T07:38:48.733Z INFO 1 --- [backend] [main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer +2025-02-17T07:38:49.051Z INFO 1 --- [backend] [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... +2025-02-17T07:38:52.885Z INFO 1 --- [backend] [main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@2f4fc18 +2025-02-17T07:38:52.919Z INFO 1 --- [backend] [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. +2025-02-17T07:38:53.592Z WARN 1 --- [backend] [main] org.hibernate.orm.deprecation : HHH90000025: MySQL8Dialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) +2025-02-17T07:38:53.623Z WARN 1 --- [backend] [main] org.hibernate.orm.deprecation : HHH90000026: MySQL8Dialect has been deprecated; use org.hibernate.dialect.MySQLDialect instead +2025-02-17T07:38:54.104Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(12, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@412440c1) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@36c45149) +2025-02-17T07:38:54.106Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(-9, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@33f4844b) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@201b52f7) +2025-02-17T07:38:54.121Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(-3, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@435a2c7d) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@57806346) +2025-02-17T07:38:54.134Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4003, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@40416321) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@3ab70d34) +2025-02-17T07:38:54.140Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4001, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@289cf7db) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@7c523bdd) +2025-02-17T07:38:54.142Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4002, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@3741071d) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@351d726c) +2025-02-17T07:38:54.146Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2004, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@7af0693b) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@1791396b) +2025-02-17T07:38:54.162Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2005, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@28d7bd6b) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@7607340f) +2025-02-17T07:38:54.171Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2011, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@f472245) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@110318a7) +2025-02-17T07:39:04.932Z INFO 1 --- [backend] [main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) +2025-02-17T07:39:05.984Z INFO 1 --- [backend] [main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-02-17T07:39:09.114Z INFO 1 --- [backend] [main] o.s.d.j.r.query.QueryEnhancerFactory : Hibernate is in classpath; If applicable, HQL parser will be used. +2025-02-17T07:39:16.435Z INFO 1 --- [backend] [main] c.b.b.global.oauth.OAuth2UnlinkService : kakao admin-key : f7827e5bb4a42fd97f6226837a0fa99e +2025-02-17T07:39:29.810Z WARN 1 --- [backend] [main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning +2025-02-17T07:39:30.133Z INFO 1 --- [backend] [main] r$InitializeUserDetailsManagerConfigurer : Global AuthenticationManager configured with UserDetailsService bean with name customUserDetailsService +2025-02-17T07:39:33.916Z INFO 1 --- [backend] [main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 4 endpoints beneath base path '/actuator' +2025-02-17T07:39:35.375Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/swagger-ui/**'], Ant [pattern='/swagger-ui/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T07:39:35.379Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/v3/api-docs/**'], Ant [pattern='/v3/api-docs/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T07:39:35.398Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/error'], Ant [pattern='/error']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T07:39:35.404Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/favicon.ico'], Ant [pattern='/favicon.ico']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T07:39:39.043Z INFO 1 --- [backend] [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/' +2025-02-17T07:39:39.265Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : Started BackendApplication in 99.204 seconds (process running for 105.999) +2025-02-17T07:39:53.123Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-02-17T07:39:53.126Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' +2025-02-17T07:39:53.143Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 14 ms +2025-02-17T08:05:31.179Z INFO 1 --- [backend] [SpringApplicationShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' +2025-02-17T08:05:31.238Z INFO 1 --- [backend] [SpringApplicationShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... +2025-02-17T08:05:31.350Z INFO 1 --- [backend] [SpringApplicationShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. +2025-02-17T08:06:29.209Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : Starting BackendApplication v0.0.1-SNAPSHOT using Java 21 with PID 1 (/app.jar started by root in /) +2025-02-17T08:06:29.233Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : The following 1 profile is active: "oauth" +2025-02-17T08:06:51.170Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2025-02-17T08:06:51.185Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2025-02-17T08:06:51.699Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.global.redis.RefreshTokenRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2025-02-17T08:06:53.308Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 2061 ms. Found 11 JPA repository interfaces. +2025-02-17T08:06:53.620Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2025-02-17T08:06:53.659Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode. +2025-02-17T08:06:53.848Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.group.repository.GroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T08:06:53.861Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.review.repository.ReviewRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T08:06:53.863Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.review.service.ReviewBookRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T08:06:53.871Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.book.repository.BookRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T08:06:53.886Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.record.repository.RecordRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T08:06:53.899Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.record.service.RecordGroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T08:06:53.909Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.user.repository.UserOAuthRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T08:06:53.931Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.user.repository.UserRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T08:06:53.938Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.image.repository.ImageRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T08:06:53.968Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.userGroup.repository.UserGroupRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T08:06:53.976Z INFO 1 --- [backend] [main] .RepositoryConfigurationExtensionSupport : Spring Data Redis - Could not safely identify store assignment for repository candidate interface com.bookmile.backend.domain.template.repository.TemplateRepository; If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository +2025-02-17T08:06:54.026Z INFO 1 --- [backend] [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 222 ms. Found 1 Redis repository interface. +2025-02-17T08:07:06.013Z INFO 1 --- [backend] [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http) +2025-02-17T08:07:06.213Z INFO 1 --- [backend] [main] o.apache.catalina.core.StandardService : Starting service [Tomcat] +2025-02-17T08:07:06.227Z INFO 1 --- [backend] [main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.31] +2025-02-17T08:07:06.623Z INFO 1 --- [backend] [main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext +2025-02-17T08:07:06.632Z INFO 1 --- [backend] [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 36407 ms +2025-02-17T08:07:11.600Z INFO 1 --- [backend] [main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] +2025-02-17T08:07:12.644Z INFO 1 --- [backend] [main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.5.3.Final +2025-02-17T08:07:13.014Z INFO 1 --- [backend] [main] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled +2025-02-17T08:07:16.696Z INFO 1 --- [backend] [main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer +2025-02-17T08:07:16.971Z INFO 1 --- [backend] [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... +2025-02-17T08:07:20.097Z INFO 1 --- [backend] [main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@1d6a0962 +2025-02-17T08:07:20.175Z INFO 1 --- [backend] [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. +2025-02-17T08:07:20.771Z WARN 1 --- [backend] [main] org.hibernate.orm.deprecation : HHH90000025: MySQL8Dialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) +2025-02-17T08:07:20.789Z WARN 1 --- [backend] [main] org.hibernate.orm.deprecation : HHH90000026: MySQL8Dialect has been deprecated; use org.hibernate.dialect.MySQLDialect instead +2025-02-17T08:07:21.004Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(12, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@417b3642) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@6bd28e4a) +2025-02-17T08:07:21.009Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(-9, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@55e88bc) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@544300a6) +2025-02-17T08:07:21.024Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(-3, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@4c12f54a) replaced previous registration(org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@334d825c) +2025-02-17T08:07:21.042Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4003, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@42a7e7e1) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@e2d9923) +2025-02-17T08:07:21.047Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4001, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@554e9509) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@acea29e) +2025-02-17T08:07:21.064Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(4002, org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@772bc4c9) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@152dbf8e) +2025-02-17T08:07:21.071Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2004, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@34ea86ff) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@4bcf08ae) +2025-02-17T08:07:21.075Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2005, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@626b9092) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@1ac2829e) +2025-02-17T08:07:21.088Z DEBUG 1 --- [backend] [main] o.h.t.d.sql.spi.DdlTypeRegistry : addDescriptor(2011, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@7a7f2247) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@4946dfde) +2025-02-17T08:07:35.199Z INFO 1 --- [backend] [main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) +2025-02-17T08:07:36.010Z INFO 1 --- [backend] [main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' +2025-02-17T08:07:39.120Z INFO 1 --- [backend] [main] o.s.d.j.r.query.QueryEnhancerFactory : Hibernate is in classpath; If applicable, HQL parser will be used. +2025-02-17T08:07:46.257Z INFO 1 --- [backend] [main] c.b.b.global.oauth.OAuth2UnlinkService : kakao admin-key : f7827e5bb4a42fd97f6226837a0fa99e +2025-02-17T08:08:02.372Z WARN 1 --- [backend] [main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning +2025-02-17T08:08:02.647Z INFO 1 --- [backend] [main] r$InitializeUserDetailsManagerConfigurer : Global AuthenticationManager configured with UserDetailsService bean with name customUserDetailsService +2025-02-17T08:08:07.217Z INFO 1 --- [backend] [main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 4 endpoints beneath base path '/actuator' +2025-02-17T08:08:08.309Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/swagger-ui/**'], Ant [pattern='/swagger-ui/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T08:08:08.354Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/v3/api-docs/**'], Ant [pattern='/v3/api-docs/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T08:08:08.372Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/error'], Ant [pattern='/error']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T08:08:08.385Z WARN 1 --- [backend] [main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Deferred [Mvc [pattern='/favicon.ico'], Ant [pattern='/favicon.ico']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +2025-02-17T08:08:13.706Z INFO 1 --- [backend] [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/' +2025-02-17T08:08:13.901Z INFO 1 --- [backend] [main] c.bookmile.backend.BackendApplication : Started BackendApplication in 112.559 seconds (process running for 121.982) +2025-02-17T08:08:19.716Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-02-17T08:08:19.719Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' +2025-02-17T08:08:19.725Z INFO 1 --- [backend] [http-nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 5 ms +2025-02-17T08:13:18.746Z INFO 1 --- [backend] [SpringApplicationShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' +2025-02-17T08:13:18.764Z INFO 1 --- [backend] [SpringApplicationShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... +2025-02-17T08:13:18.850Z INFO 1 --- [backend] [SpringApplicationShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. diff --git a/monitoring/filebeat.yml b/monitoring/filebeat.yml new file mode 100644 index 0000000..a2b2b3a --- /dev/null +++ b/monitoring/filebeat.yml @@ -0,0 +1,12 @@ +filebeat.inputs: + - type: log + enabled: true + paths: + - /var/log/book-mile/*.log + fields: + service: book-mile + json.keys_under_root: false + json.add_error_key: true + +output.logstash: + hosts: ["logstash:5044"] diff --git a/monitoring/grafana/datasources.yml b/monitoring/grafana/datasources.yml new file mode 100644 index 0000000..0eddf26 --- /dev/null +++ b/monitoring/grafana/datasources.yml @@ -0,0 +1,7 @@ +apiVersion: 1 +datasources: + - name: Prometheus + type: prometheus + access: proxy + url: http://prometheus:9090 + isDefault: true diff --git a/monitoring/logstash.conf b/monitoring/logstash.conf new file mode 100644 index 0000000..94896f8 --- /dev/null +++ b/monitoring/logstash.conf @@ -0,0 +1,20 @@ +input { + beats { + port => 5044 + } +} + +filter { + json { + source => "message" + remove_field => ["@version", "host"] + } +} + +output { + elasticsearch { + hosts => ["http://elasticsearch:9200"] + index => "spring-logs-%{+YYYY.MM.dd}" + } + stdout { codec => rubydebug } +} diff --git a/monitoring/prometheus.yml b/monitoring/prometheus.yml new file mode 100644 index 0000000..2b86d45 --- /dev/null +++ b/monitoring/prometheus.yml @@ -0,0 +1,17 @@ +global: + scrape_interval: 15s + +scrape_configs: + - job_name: 'prometheus' + static_configs: + - targets: ['localhost:9090'] + + - job_name: 'spring-boot-app' + metrics_path: '/actuator/prometheus' + static_configs: + - targets: ['host.docker.internal:8080'] + #- targets: ['book-mile-app:8080'] + + - job_name: 'node-exporter' + static_configs: + - targets: ['node-exporter:9100'] \ No newline at end of file diff --git a/src/main/java/com/bookmile/backend/domain/book/dto/res/BestSellerResponseDto.java b/src/main/java/com/bookmile/backend/domain/book/dto/res/BestSellerResponseDto.java index ca5655f..3cd754b 100644 --- a/src/main/java/com/bookmile/backend/domain/book/dto/res/BestSellerResponseDto.java +++ b/src/main/java/com/bookmile/backend/domain/book/dto/res/BestSellerResponseDto.java @@ -10,5 +10,6 @@ public class BestSellerResponseDto { private String author; private String publisher; private String cover; + private String isbn13; private int customerReviewRank; } \ No newline at end of file diff --git a/src/main/java/com/bookmile/backend/domain/book/dto/res/NewBookResponseDto.java b/src/main/java/com/bookmile/backend/domain/book/dto/res/NewBookResponseDto.java index 780de0a..8ddbea9 100644 --- a/src/main/java/com/bookmile/backend/domain/book/dto/res/NewBookResponseDto.java +++ b/src/main/java/com/bookmile/backend/domain/book/dto/res/NewBookResponseDto.java @@ -11,5 +11,6 @@ public class NewBookResponseDto { private String author; private String publisher; private String cover; + private String isbn13; private int customerReviewRank; } diff --git a/src/main/java/com/bookmile/backend/domain/book/service/Impl/BookDetailServiceImpl.java b/src/main/java/com/bookmile/backend/domain/book/service/Impl/BookDetailServiceImpl.java index 52e4dc5..bc7f059 100644 --- a/src/main/java/com/bookmile/backend/domain/book/service/Impl/BookDetailServiceImpl.java +++ b/src/main/java/com/bookmile/backend/domain/book/service/Impl/BookDetailServiceImpl.java @@ -27,7 +27,7 @@ public class BookDetailServiceImpl implements BookDetailService { @Override public List detailBooks(BookDetailRequestDto bookDetailRequestDto) { - String url = String.format("%s?ttbkey=%s&ItemIdType=ISBN13&ItemId=%s&output=js&Version=20131101", + String url = String.format("%s?ttbkey=%s&ItemIdType=ISBN13&ItemId=%s&Cover=Big&output=js&Version=20131101", API_URL, TTB_KEY, bookDetailRequestDto.getIsbn13()); ResponseEntity response = restTemplate.getForEntity(url, BookDetailApiResponse.class); diff --git a/src/main/java/com/bookmile/backend/domain/book/service/Impl/BookListServiceImpl.java b/src/main/java/com/bookmile/backend/domain/book/service/Impl/BookListServiceImpl.java index e31d0c2..097af84 100644 --- a/src/main/java/com/bookmile/backend/domain/book/service/Impl/BookListServiceImpl.java +++ b/src/main/java/com/bookmile/backend/domain/book/service/Impl/BookListServiceImpl.java @@ -29,7 +29,7 @@ public class BookListServiceImpl implements BookListService { @Override public List searchBooks(BookListRequestDto requestDto) { // 알라딘 API 요청 URL 구성 - String url = String.format("%s?ttbkey=%s&Query=%s&QueryType=%s&MaxResults=%d&Sort=%s&output=js&Version=20131101", + String url = String.format("%s?ttbkey=%s&Query=%s&QueryType=%s&MaxResults=%d&Sort=%s&Cover=Big&output=js&Version=20131101", API_URL, TTB_KEY, requestDto.getQuery(), requestDto.getQueryType(), requestDto.getMaxResults(), requestDto.getSort()); // JSON 응답을 BookSearchApiResponse로 매핑 @@ -46,7 +46,7 @@ public List searchBooks(BookListRequestDto requestDto) { @Override public List getBestSellerList() { - String url = String.format("%s?ttbkey=%s&QueryType=Bestseller&MaxResults=10&start=1&SearchTarget=Book&output=js&Version=20131101", + String url = String.format("%s?ttbkey=%s&QueryType=Bestseller&MaxResults=12&start=1&SearchTarget=Book&Cover=Big&output=js&Version=20131101", BOOKLIST_API_URL, TTB_KEY); ResponseEntity response = restTemplate.getForEntity(url, BestSellerApiResponse.class); @@ -62,7 +62,7 @@ public List getBestSellerList() { @Override public List getNewBookList() { - String url = String.format("%s?ttbkey=%s&QueryType=ItemNewSpecial&MaxResults=10&start=1&SearchTarget=Book&output=js&Version=20131101", + String url = String.format("%s?ttbkey=%s&QueryType=ItemNewSpecial&MaxResults=12&start=1&SearchTarget=Book&Cover=Big&output=js&Version=20131101", BOOKLIST_API_URL, TTB_KEY); ResponseEntity response = restTemplate.getForEntity(url, NewBookApiResponse.class); diff --git a/src/main/java/com/bookmile/backend/domain/group/dto/res/GroupDetailResponseDto.java b/src/main/java/com/bookmile/backend/domain/group/dto/res/GroupDetailResponseDto.java index a7ea0e9..7ecd6bd 100644 --- a/src/main/java/com/bookmile/backend/domain/group/dto/res/GroupDetailResponseDto.java +++ b/src/main/java/com/bookmile/backend/domain/group/dto/res/GroupDetailResponseDto.java @@ -22,11 +22,12 @@ public class GroupDetailResponseDto { private String goalContent; private String masterNickname; private String masterImage; + private Long bookId; @Builder private GroupDetailResponseDto(Long groupId, String groupName, String groupDescription, int maxMembers, int currentMembers, GroupStatus status, BookResponseDto book, String goalType, - String goalContent, String masterNickname, String masterImage) { + String goalContent, String masterNickname, String masterImage, Long bookId) { this.groupId = groupId; this.groupName = groupName; this.groupDescription = groupDescription; @@ -38,6 +39,7 @@ private GroupDetailResponseDto(Long groupId, String groupName, String groupDescr this.goalContent = goalContent; this.masterNickname = masterNickname; this.masterImage = masterImage; + this.bookId = bookId; } public static GroupDetailResponseDto toDto(Group group, int currentMembers, User masterUser) { @@ -53,6 +55,7 @@ public static GroupDetailResponseDto toDto(Group group, int currentMembers, User .goalContent(group.getGoalContent()) .masterNickname(masterUser.getNickname()) .masterImage(masterUser.getImage()) + .bookId(group.getBook().getId()) .build(); } } \ No newline at end of file diff --git a/src/main/java/com/bookmile/backend/global/config/SecurityConfig.java b/src/main/java/com/bookmile/backend/global/config/SecurityConfig.java index a73495c..46cc29c 100644 --- a/src/main/java/com/bookmile/backend/global/config/SecurityConfig.java +++ b/src/main/java/com/bookmile/backend/global/config/SecurityConfig.java @@ -57,6 +57,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .requestMatchers("/api/v1/books/**").permitAll() .requestMatchers("/api/v1/oauth2/test").permitAll() .requestMatchers( "/oauth2/**", "/login/oauth2/code/**").permitAll() + .requestMatchers("/actuator/**").permitAll() .anyRequest().authenticated()) .addFilterBefore(new JwtAuthenticationFilter(jwtTokenProvider), UsernamePasswordAuthenticationFilter.class) .addFilterBefore(new JwtExceptionHandlerFilter(), JwtAuthenticationFilter.class)