묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
스프링 시큐리티 예외 RestControllerAdvice로 처리
스프링 시큐리티가 던지는 예외는 RestControllerAdvice로 처리하려면 따로 설정을 만져야하는걸로 아는데 강사님 강의에서는 별다른 설정없이 이런식으로 예외처리가 되고있는데 어느 부분때문에 가능한건가요 ? ㅠㅠ혹시 로그인시 서비스단에서 token 생성 처리를 하고있어서 예외처리가 될수있는건가요 ??
-
미해결스프링 부트 - 핵심 원리와 활용
톰캣 연결하여 실행이 안됩니다.
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@1189dd52] 답변 부탁드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
http://localhost:8080/hello-mvc?name=spring!! 이 부분 에러가 발생합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.localhost:8080 까지는 잘나오고 다 잘 따라친거 같은데 뒤에 hello-mvc 부분부터는 에러가 발생하네요 ㅠㅠ
-
미해결스프링 시큐리티
파트4-5강의 실습중 manager로 로그인하고난후 /api/messages를 호출시 Authentication가 Anonymous토큰상태가 되어버립니다.
실습중 manager로 로그인해도 계속 401에러가발생하여/api/messages에 대해 permitAll권한을주어 테스트해보았는데 위에 스크린샷처럼 Anonymous토큰상태여서 발생하는듯한데 프로바이더에서 토큰처리는 완료한 상태입니다.로그인도 정상적으로 되고있구요. 뭔가 해야 할 작업이 빠진걸까요?스프링은 3.03버젼이고 스프링시큐리티도 6버전대입니다package io.security.corespringsecurity.security.config; import io.security.corespringsecurity.security.common.AjaxAccessDeniedHandler; import io.security.corespringsecurity.security.common.AjaxLoginAuthenticationEntryPoint; import io.security.corespringsecurity.security.filter.AjaxLoginProcessingFilter; import io.security.corespringsecurity.security.habdler.AjaxAuthenticationFailureHandler; import io.security.corespringsecurity.security.habdler.AjaxAuthenticationSuccessHandler; import io.security.corespringsecurity.security.provider.AjaxAuthenticationProvider; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; import org.springframework.http.HttpMethod; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.ProviderManager; import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.access.AccessDeniedHandler; import org.springframework.security.web.authentication.AuthenticationFailureHandler; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; @Configuration @Order(0) @RequiredArgsConstructor public class AjaxSecurityConfig { private final AuthenticationConfiguration authenticationConfiguration; @Bean public AjaxAuthenticationProvider ajaxAuthenticationProvider(){ return new AjaxAuthenticationProvider(); } @Bean public AuthenticationSuccessHandler ajaxAuthenticationSuccessHandler(){ return new AjaxAuthenticationSuccessHandler(); } @Bean public AuthenticationFailureHandler ajaxAuthenticationFailureHandler(){ return new AjaxAuthenticationFailureHandler(); } @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception{ http .authorizeHttpRequests(requests -> requests .requestMatchers("/api/**").permitAll() .requestMatchers(HttpMethod.GET,"/api/messages").hasRole("MANAGER") .anyRequest().authenticated()); http .exceptionHandling() .authenticationEntryPoint(new AjaxLoginAuthenticationEntryPoint()) .and() .addFilterBefore(ajaxLoginProcessingFilter(), UsernamePasswordAuthenticationFilter.class); http.csrf().disable(); return http.getOrBuild(); } @Bean public AccessDeniedHandler ajaxAccessDeniedHandler(){ return new AjaxAccessDeniedHandler(); } @Bean public AuthenticationManager authenticationManager() throws Exception{ ProviderManager providerManager = (ProviderManager)authenticationConfiguration.getAuthenticationManager(); providerManager.getProviders().add(ajaxAuthenticationProvider()); return providerManager; } @Bean public AjaxLoginProcessingFilter ajaxLoginProcessingFilter() throws Exception{ AjaxLoginProcessingFilter ajaxLoginProcessingFilter = new AjaxLoginProcessingFilter(); ajaxLoginProcessingFilter.setAuthenticationManager(authenticationManager()); ajaxLoginProcessingFilter.setAuthenticationSuccessHandler(ajaxAuthenticationSuccessHandler()); ajaxLoginProcessingFilter.setAuthenticationFailureHandler(ajaxAuthenticationFailureHandler()); return ajaxLoginProcessingFilter; } }package io.security.corespringsecurity.security.provider; import io.security.corespringsecurity.security.service.AccountContext; import io.security.corespringsecurity.security.token.AjaxAuthenticationToken; import io.security.corespringsecurity.util.PBKDF2Util; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.security.NoSuchAlgorithmException; import java.security.spec.InvalidKeySpecException; @Component public class AjaxAuthenticationProvider implements AuthenticationProvider{ @Autowired private UserDetailsService userDetailsService; @Transactional @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { String username = authentication.getName(); String password = (String)authentication.getCredentials(); AccountContext accountContext = (AccountContext)userDetailsService.loadUserByUsername(username); try { if(!PBKDF2Util.validatePassword(password, accountContext.getAccount().getPassword())){ throw new BadCredentialsException("BadCredentialsException"); } } catch (NoSuchAlgorithmException | InvalidKeySpecException e) { throw new RuntimeException(e); } return new AjaxAuthenticationToken(accountContext.getAccount(), null, accountContext.getAuthorities()); } @Override public boolean supports(Class<?> authentication) { return authentication.equals(AjaxAuthenticationToken.class); } } package io.security.corespringsecurity.security.filter; import com.fasterxml.jackson.databind.ObjectMapper; import io.security.corespringsecurity.domain.AccountDto; import io.security.corespringsecurity.security.token.AjaxAuthenticationToken; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; import org.thymeleaf.util.StringUtils; import java.io.IOException; public class AjaxLoginProcessingFilter extends AbstractAuthenticationProcessingFilter { private ObjectMapper objectMapper = new ObjectMapper(); public AjaxLoginProcessingFilter() { super(new AntPathRequestMatcher("/api/login")); } @Override public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException, IOException, ServletException { if(!jsAjax(request)){ throw new IllegalStateException("Authentication is not supported"); } AccountDto accountDto = objectMapper.readValue(request.getReader(), AccountDto.class); if(StringUtils.isEmpty(accountDto.getUsername()) || StringUtils.isEmpty(accountDto.getPassword())){ throw new IllegalArgumentException("Username or Password is empty"); } AjaxAuthenticationToken authenticationToken = new AjaxAuthenticationToken(accountDto.getUsername(), accountDto.getPassword()); return getAuthenticationManager().authenticate(authenticationToken); } private boolean jsAjax(HttpServletRequest request) { if("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))){ return true; } return false; } }
-
미해결스프링 부트 개념과 활용
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 - 웹 애플리케이션 개발
지연 로딩의 정의
지연 로딩이 한 트랜잭션 안에서 필요한 시기에 로딩하는 걸 말하는 건가요? 아니면 다른 트랜잭션에서도 필요한 시기에 로딩될 수도 있는 건가요?