묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 부트 개념과 활용
springSecurit jwt에 대해서 질문드립니다.
강좌 완강하고 난뒤에 리액트랑 연계프로젝트 만들면서 jwt작업하다가 궁금한게 있어서 질문드립니다. 1.리액트(localhost:3000) ,스프링부트 (localhost:8080) 의 Cors 설정입니다 @Configuration @EnableWebMvc public class WebConfig { private static final Long MAX_AGE = 3600L; private static final int CORS_FILTER_ORDER = -102; @Bean public FilterRegistrationBean corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.addAllowedOrigin("http://localhost:3000"); config.setAllowedHeaders(Arrays.asList( HttpHeaders.AUTHORIZATION, HttpHeaders.CONTENT_TYPE, HttpHeaders.ACCEPT)); config.setAllowedMethods(Arrays.asList( HttpMethod.GET.name(), HttpMethod.POST.name(), HttpMethod.PUT.name(), HttpMethod.DELETE.name())); config.setMaxAge(MAX_AGE); source.registerCorsConfiguration("/**", config); FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source)); bean.setOrder(CORS_FILTER_ORDER); return bean; } }Security 설정일부입니다 @Bean SecurityFilterChain filterChain(HttpSecurity http) throws Exception { return http .authorizeRequests(requests -> requests .requestMatchers("/login", "/signup", "/user").permitAll() .requestMatchers("http://localhost:8080/main") .hasAnyAuthority("ROLE_USER") ) .formLogin(login -> login .loginPage("/login") .usernameParameter("username") .loginProcessingUrl("/loginProcess") .successHandler((req, res, auth) -> { //여기선 토큰이 잘 나옵니다 데이터 String token = JwtUtil.generateToken(auth.getName()); res.addHeader("Authorization", "Bearer " + token); }) ) .logout(logout -> logout .logoutSuccessUrl("/login") .invalidateHttpSession(true) ) .csrf(csrf -> csrf.disable()) .build(); } 프론트쪽 react 입니다.axios .post(`${SERVER_URL}/loginProcess`, null, { params: loginData }) .then((response) => { //authorization,Authorization 바꿔봐도 둘다 안나옵니다. const token = response.headers["authorization"]; console.log("토큰:::::::::::::::::::::::::::::" + token); <==undefined가 나와요 localStorage.setItem("token", token); }) .catch((error) => console.log("Error:", error));문제점 : 서버에서 로그인은 정상적으로 되고 token생성까진 되는데 jwt의 토큰을 클라이언트인 리액트 쪽에서 받아오질 못하네요 이거 혹시 어디가 잘못된건지 알수있을까요 ?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Cannot resolve method 'assertThat' in 'Assertions' 해결법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]testMember을 할 때 Assertion.assertThat을 하면 asserThat에서 빨간 밑줄이 뜹니다. 에러 내용은 Cannot resolve method 'assertThat' in 'Assertions'입니다. 질문들도 찾아보고 인터넷 해결법들도 시도해봤으나, 잘 맞지 않네요. 최대한 수업자료 따라가고 있는데, 하란 것들도 다 세팅했습니다. 유일하게 다른 점은 스프링부트의 버전인데, 공식 사이트에서 2.7 버전까지 밖에 안 떠서 2.7.16버전으로 시작했습니다. gradle세팅도 다 맞췄고요. 결과적으로 저는 그냥 Assertions.asserEquals를 사용하는 것으로 해결했습니다. 저랑 비슷한 문제 겪으시는 분들은 이렇게 하셔도 될 듯합니다.
-
미해결스프링 시큐리티 OAuth2
AuthorizedClient를 Service를 통해서 가져올시
위에 사진으로 authorizedClient가 nullpoint 에러가 발생합니다. repository시에는 authorizedClient는 잘 가져오는데 service로 load시에 못 가져오는거 같습니다. 왜 그런건지 궁금합니다
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
에러 처리 궁금한점
안녕하세요현재는 각 도메인에서 서킷브레이커를 적용했는대,api-gateaway에서는 처리를 해줄 수 없을까요?(공통적으로)현재는 도메인수가 적지만 만약에 라우팅 될 도메인들이 10개 이상 넘어가면 공통적으로 처리할 수 있는 것도 필요해보여서요. (어느 도메인으로 라우팅될조 모르지만)
-
미해결쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS
1-6 생성자 오류
TestRequestBody 부분을 똑같이 작성했는데No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator.라고 오류가 생성돼서 아래처럼 코드를 바꿨더니 실행이되는데 이유를 모르겠습니다public static class TestRequestBody { String name; Integer age; public void setName(String name) { this.name = name; } public void setAge(Integer age) { this.age = age; } public TestRequestBody () {} //Request Body 방식을 사용하기 위해서는 생성자를 꼭 만들어야한다 // public TestRequestBody(String name, Integer age) { // this.name = name; // this.age = age; // } }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
현재 영상이 안나오는거같은데 나오나요?
다른 학습목록은 재생이 잘되는데 여기부분만안나오는데 저만안나오는걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]외래키 관련해서 질문을 드리고 싶은게 @JointoColumn을 통해 연관관계의 주인을 정하는건 알겠습니다. 그런데 다른 경우에는 mappedBy를 적은것과 다르게 24:18에 OrderItem과 Item과의 연결에선 mappedBy를 적지 않은게 좀 헷갈립니다. 여기선 쓰지 않는 이유가 뭔가요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
예외처리
안녕하세요. 문득 궁금한 점이 생겼는대요..주문이 성공하고나서 카탈로그 쪽에서 장애가 발생해서 롤백을 해야한다고 했을 때는 처리방안이 어떻게 되나요??찾아보니까 사가패턴 ? 이런거 사용하는것으로 보이는대, 다른 방안도 있을까요? (처리가 좀 어렵네요)
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
Validation Map으로 구현된걸 List로 바꿔봤는데 이 방식이 맞을까요?
이렇게 바꿔봤는데 Body = {"code":"400","message":"잘못된 요청입니다.","validation":[{"fieldName":"content","errorMessage":"내용을 입력해주세요"},{"fieldName":"title","errorMessage":"제목 을 입력해주세요"}]} 이렇게 배열로 응답이 갈수있게 바꿔봤는데 괜찮을까요?
-
미해결자바 스프링부트 활용 웹개발 실무용
2강 Board.xml에 만들 때 오류를 어떻게 해결해야 하나
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.demo.mvc.repository.BoardRepository"> <select id="getList" parameterType="com.example.demo.mvc.domain.Board" resultType="com.example.demo.mvc.domain.Board"> SELECT B.BOARD_SEQ, B.TITLE, B.CONTENTS, B.REG_DATE FROM T_BOARD B ORDER BY B.REG_DATE DESC </select> <select id="get" parameterType="com.example.demo.mvc.domain.Board" resultType="com.example.demo.mvc.domain.Board"> SELECT B.BOARD_SEQ, B.TITLE, B.CONTENTS, B.REG_DATE FROM T_BOARD B WHERE B.BOARD_SEQ = #{boardSeq} </select> <insert id="save" parameterType="com.example.demo.mvc.domain.Board"> INSERT INTO T_BOARD ( TITLE, CONTENTS, REG_DATE ) VALUES ( #{title}, #{contents}, NOW() ) </insert> <update id="update" parameterType="com.example.demo.mvc.domain.Board"> UPDATE T_BOARD SET TITLE = #{title}, CONTENTS = #{contents} WHERE BOARD_SEQ = #{boardSeq} </update> <delete id="delete" parameterType="com.example.demo.mvc.domain.Board"> DELETE FROM T_BOARD WHERE BOARD_SEQ = #{boardSeq} </delete> </mapper> 이 코드에서 http://mybatis.org/dtd/mybatis-3-mapper.dtd 이부분에서는 Downloading external resources is disabled. 라는 오류가 나오고요 <mapper> 부분에서는Element type "mapper" must be declared. 라는 오류가 나오 <select> 부분도Element type "select" must be declared. 라는 오류가 나옵니다 어떻게 해결해야 하지요?
-
미해결실전! 스프링 데이터 JPA
쿼리메서드 관련 질문
@Test @Transactional public void 테스트() throws Exception{ Member member1 = new Member("member1", 10); Team teamA = new Team("teamA"); member1.changeTeam(teamA); teamRepository.save(teamA); //member <- cascade persist em.flush(); em.clear(); memberRepository.findByAge(10); // SELECT 1번 memberRepository.findByUsername("member1"); // SELECT 2번 memberRepository.findById(member1.getId()); // 영속성 컨텍스트에 PK값이 존재 } 쿼리 조회 메서드 실행 시 JPQL 이 동작하여 flush 후 DB에 바로 쿼리가 날라가고 가져온 것이 영속성 컨텍스트에 저장된다고 알고 있습니다.만약에 save(new Member(member1, 10)); 후에save한 엔티티 대상을 조회하기 위한 findByAge (where = 10) , findByUsername (where = member1) 을 순서 대로 쿼리 메서드 호출을 하였을 때 조회 쿼리가 결국 같은 엔티티를 조회하기 위함인데 SELECT 쿼리문이 2번 나갔습니다.2번 나간 이유가findByAge 호출 후에 findByUsername 호출 시 1차 캐시에서 비교할려면은 무조건 id값이랑 비교가 가능하기때문인지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
querydsl
강의자료에 스프링부터3.0이상 메뉴얼을 따라했는데 build에 compilequerydsl이 생성되지 않습니다. plugins { id 'java' id 'org.springframework.boot' version '3.1.4' id 'io.spring.dependency-management' version '1.1.3' } group = 'jpabook' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:3.1.4' implementation 'com.fasterxml.jackson.datatype:jackson-datatype-hibernate5-jakarta' //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" testImplementation 'org.projectlombok:lombok:1.18.22' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') }
-
해결됨Spring Boot JWT Tutorial
JWT String argument cannot be null or empty.
계속 이런 오류가 발생하는 상황인데 어디가 문제인걸까요........2023-10-15 19:32:08.071 INFO 20572 --- [nio-8080-exec-2] c.newus.traders.user.jwt.TokenProvider : JWT claims string is empty. java.lang.IllegalArgumentException: JWT String argument cannot be null or empty. at io.jsonwebtoken.lang.Assert.hasText(Assert.java:132) ~[jjwt-api-0.11.5.jar:0.11.5] at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:527) ~[jjwt-impl-0.11.5.jar:0.11.5] at io.jsonwebtoken.impl.DefaultJwtParser.parseClaimsJws(DefaultJwtParser.java:589) ~[jjwt-impl-0.11.5.jar:0.11.5] at io.jsonwebtoken.impl.ImmutableJwtParser.parseClaimsJws(ImmutableJwtParser.java:173) ~[jjwt-impl-0.11.5.jar:0.11.5] at com.newus.traders.user.jwt.TokenProvider.validateToken(TokenProvider.java:141) ~[main/:na] at com.newus.traders.user.jwt.JwtFilter.doFilterInternal(JwtFilter.java:40) [main/:na] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.29.jar:5.3.29] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) [spring-web-5.3.29.jar:5.3.29] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.29.jar:5.3.29] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.29.jar:5.3.29] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.29.jar:5.3.29] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.29.jar:5.3.29] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) [spring-security-web-5.7.10.jar:5.7.10] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) [spring-web-5.3.29.jar:5.3.29] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) [spring-web-5.3.29.jar:5.3.29] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) [spring-web-5.3.29.jar:5.3.29] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.29.jar:5.3.29] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) [spring-web-5.3.29.jar:5.3.29] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.29.jar:5.3.29] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) [spring-web-5.3.29.jar:5.3.29] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.29.jar:5.3.29] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1790) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) [tomcat-embed-core-9.0.79.jar:9.0.79] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.79.jar:9.0.79] at java.lang.Thread.run(Thread.java:750) [na:1.8.0_371]
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
45강) 빌드까지 모두 완료하고 v1 화면으로 가서 사용자 추가를 했더니 오류가 나요 ㅜㅜ
강사님 안녕하세요! 수업 잘 듣구 있습니다!다름이 아니라, AWS에 빌드까지 완료하고 인바운드 규칙까지 편집해준 다음, v1 화면으로 돌아가서 사용자 추가 부터 해보았는데 갑자기 서버 내부 오류라는 창과 함께 오류가 뜹니다.. org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "drop table if exists user CASCADE " via JDBC Statement 2023-10-15 08:12:50.119 WARN 18125 --- [nio-8080-exec-8] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 42001, SQLState: 420012023-10-15 08:12:50.119 ERROR 18125 --- [nio-8080-exec-8] o.h.engine.jdbc.spi.SqlExceptionHelper : Syntax error in SQL statement "insert into [*]user (id, age, name) values (default, ?, ?)"; expected "identifier"; SQL statement:insert into user (id, age, name) values (default, ?, ?) [42001-214]2023-10-15 08:12:50.123 ERROR 18125 --- [nio-8080-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement; SQL [insert into user (id, age, name) values (default, ?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: could not prepare statement] with root causeorg.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "insert into [*]user (id, age, name) values (default, ?, ?)"; expected "identifier"; SQL statement:insert into user (id, age, name) values (default, ?, ?) [42001-214] 혹시 제가 SQL문을 잘못 작성한 것일까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
RequestParam 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이런식으로 name 값을 줘도 자꾸 null만 뜨는데 왜 그런거죠??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
지연 로딩의 정의
지연 로딩이 한 트랜잭션 안에서 필요한 시기에 로딩하는 걸 말하는 건가요? 아니면 다른 트랜잭션에서도 필요한 시기에 로딩될 수도 있는 건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
api개발 관련
안녕하세요궁금한점이 있습니다. 선생님 강의에서 api개발은 어떤강의를 들어야 하나요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
즉시 로딩을 사용하면 좋을 때가 있을까요?
안녕하세요 강의 정말 잘 듣고 실무에서도 열심히 사용하고 있습니다. 강의에서 lazy loading과 fetch join을 활용하여 최적화 하는 부분에 대해서는 이해를 하고 있습니다. 그렇다면 eager loading은 사용을 피해야하는 걸까요?아니면 어떤 케이스에 대해서는 즉시 로딩이 더 실무적으로 유용한 경우가 있을까요?즉시 로딩이 사용을 지양해야 된다면 JPA에서 굳이 만들지 않았을 것 같은데 어떤 상황에서 사용해야할지에 대해 의문점이 듭니다. 제가 생각했을 땐 테이블 분리를 위해 엔티티를 나누었지만 항상 같이 조회되는 상황이나 OneToOne 상황에서는 크게 상관없을 것 같긴한데 필요없는 컬럼까지 즉시 로딩으로 가져오는게 성능에 크게 영향을 끼치는지에 대해 궁금합니다. 이외에도 실무적으로 이럴 땐 지연 로딩보단 즉시 로딩이 더 적합하다라는 상황이 있다면 조언 부탁드리겠습니다.감사합니다!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
spring boot 3.0 이상에서 H2 사용 시 Database not found 문제 해결법 공유
spring boot 3.0이상에서 H2 사용할 때 test connection에서 실패하는 경우가 있을 수 있습니다.에러 메시지로 Database "mem:testdb" not found, either pre-create it or allow remote database creation.이 뜬 경우 아래와 같은 해결책을 사용할 수 있습니다. 우선 에러의 원인은 mem:testdb 데이터베이스가 존재하지 않기 때문에 발생합니다. H2 1.4이상 버전부터는 보안 상 문제 때문에 스프링부트 기동 시 데이터베이스 자동 생성을 막아두었다고 합니다. DB가 없으니 위와 같은 에러 메시지가 발생한 것이죠. H2 dependency 버전을 다운그레이드 시켜도 되겠지만, 솔직히 최신 버전의 dependency를 사용하고 싶잖아요? 문제 해결을 위해서 수동으로 데이터베이스를 생성하면 됩니다. 해결법은 생각보다 간단한데요. 임의의 더미 Entity를 만들어서 DB 생성을 유도하게 만들면 됩니다. 자세한 방법은 해당 블로그의 글을 참고하시기 바랍니다.https://shanepark.tistory.com/435
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트 코드와 DataSourceUtils
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]Transactional이 작동을 안 하길래 찾아보다가, DataSourceUtils.getConnection을 사용하지 않고, (DataSource 객체).getConnection을 써서 그런간가 싶어서 이것을 수정하려 했는데, 이러니까 테스트 코드가 작동이 안되네요... 테스트 코드와 DataSourceUtils가 어떠한 연관이 있는 건가요? (DataSource 객체).getConnection으로 DB를 연동하면 테스트 코드가 잘 되는데, DataSourceUtils.getConnection으로 하면 실행할땐 잘 되지만, 테스트 코드로 하면 데이터베이스 연동에 오류가 나는 것 같네요...