inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

home.html / index.html

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

예전 강의에서는 index.html을 시작페이지로 설정하였었는데 이번 강의부터는 home.html이 시작페이지로 설정되는데 둘의 차이점이 무엇인가요?

  • spring
  • mvc
jeong정재인 댓글 1 좋아요 0 조회수 384

웹 애플리케이션 서버

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 빨간색, 파란색 모두 웹 애플리케이션 서버인데 차이점이 무엇인가요??

  • spring
  • mvc
모깅 댓글 1 좋아요 0 조회수 455

@BeforeEach 동작

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 강사님의 강의를 듣고 Spring Boot로 웹 페이지 개발을 연습중입니다. TDD방식으로 구현을 하며 웹 페이지를 만들고 있습니다. 환경 IDE: IntelliJ pc: MacBook Air 2022 Spring Boot Version: 3.1.2 소스파일: https://drive.google.com/file/d/17oeGgTCTbRMAtcaxrE4sWDtw7NRTJlPk/view?usp=sharing 구현 테스트환경을 독립적으로 구성하고 싶어서 @BeforeEach를 사용하여 테스트 코드 실행 전에 H2 db 인메모리에 sql스크립트를 실행 하여 데이터를 세팅하는 작업을 하고 테스트들을 진행 중에 있습니다. import org.springframework.jdbc.core.JdbcTemplate; import org.junit.jupiter.api.BeforeEach; import org.springframework.core.io.ClassPathResource; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.jdbc.datasource.init.ScriptUtils; @BeforeEach void dbConfig() { JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); ClassPathResource schema = new ClassPathResource("schema.sql"); try { ScriptUtils.executeSqlScript(jdbcTemplate.getDataSource().getConnection(), schema); } catch (SQLException e) { throw new RuntimeException(e); } ClassPathResource data = new ClassPathResource("data.sql"); try { ScriptUtils.executeSqlScript(jdbcTemplate.getDataSource().getConnection(), data); } catch (SQLException e) { throw new RuntimeException(e); } } 증상 데이터를 Insert후에 반환된 기본 키 값으로 Select하여 검증을 하는 로직에서 단독 테스트시에는 정상적으로 잘 동작하나 test 패키지를 전체 테스트를 돌리면 Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "board" not found; SQL statement: 이와 같이 테이블을 찾을 수 없다고 간헐적 으로 오류가 발생하고 있습니다. [시도해본 방법] SQL스크립트가 제대로 로드 되지 않았다고 생각되어 테이블 생성 스크립트 후에 Thread.sleep(); 을 줘서 지연을 줘봤지만 실패 기존에는 ScriptUtils.executeSqlScript(jdbcTemplate.getDataSource().getConnection(), schema); 실행을 schema와 data를 연달아 수행하던 것을 schem먼저 수행 후, data수행하도록 변경했지만 실패 Chat-GPT에 질문을 해보니 @BeforeEach를 사용하여 데이터베이스 스키마를 초기화하고 데이터를 삽입하는 경우, 테스트 메소드 간에 순서가 보장되지 않을 수 있기 때문에, 특정 테스트 메소드가 실행되기 전에 데이터베이스 초기화가 이루어지지 않을 수 있습니다. 라고 답변을 받았는데요. 그래서 @Order 어노테이션으로 @Test 메소드들의 순서를 지정해봤는데도 동일한 오류가 발생합니다. 이와 같이 잘 안되고 있어 문의 드립니다.

  • spring
  • mvc
  • junit5
asdasfafsf 댓글 2 좋아요 0 조회수 687

영속성 컨텍스트에 대해 질문이 있습니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

https://www.inflearn.com/questions/789381/%EC%97%94%ED%8B%B0%ED%8B%B0-%EB%A7%A4%EB%8B%88%EC%A0%80-%EB%8F%99%EC%8B%9C%EC%84%B1 위에 질문과 답변을 봤을때는 엔티티매니저가 달라도 트랜잭션이 같으면 같은 영속성컨텍스트를 사용한다고 되어있습니다. 하지만 이 부분이 실제로 어떻게 이뤄질 수 있는것인지 이해되지 않습니다. 코드로 어떻게 되어져 있는지 찾아볼 수 있을까요? 제가 찾아본 내용으로는 SessionImpl이라는 엔티티매니저 구현체에 아래 처럼 엔티티매니저를 넣어서 영속성컨텍스트를 생성하는 코드를 볼 수 있었습니다. 그럼 영속성 컨텍스트는 따로 만들어지는게 아닌가? 라는 생각도 하게되었습니다. protected StatefulPersistenceContext createPersistenceContext() { return new StatefulPersistenceContext( this ); } 트랜잭션에 따라 영속성 컨텍스트가 공유되고 스레드마다 영속성 컨텍스트가 어떻게 나눠질 수 있는지 궁금합니다. 그리고 영속성컨텍스트는 프록시라도 Bean으로 등록되는데 실제 동작을 하는건 원본객체일테고 그럼 그 객체이 있는 영속성컨텍스트를 공유하게 되는것은 아닌가? 의문이 들었습니다. 질문을 정리하겠습니다. 트랜잭션에 따라 영속성 컨텍스트가 어떻게 공유될 수 있나요?(확인할 수 있는코드나 기술이 있다면 말씀해주시면 감사하겠습니다.) Bean으로 등록된 엔티티매니저가 다른 상태를 유지할 수 있는 방법이 무엇인가요? 프록시라해도 원본객체를 통해 동작하는게 아닌가요? 영속성컨텍스트는 프록시라도 Bean으로 등록되는데 실제 동작을 하는건 원본객체일테고 그럼 그 객체이 있는 영속성컨텍스트를 공유하게 되는것은 아닌가요? 바보같은 질문일 수 있지만 답변해주시면 너무 감사하겠습니다.

  • java
  • jpa
YOGURT 댓글 2 좋아요 0 조회수 878

1편에서 설명해주셨던 "@{ | ${data} | }" 문법에 대해서 질문드립니다.

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네 [질문 내용] <li><a th:href="@{|/hello/${param1}/${param2}|}">path variable</a></li> 이런식으로도 쓸수 있다고 하신거같은데 따로 말씀을 안해주셔서 질문 드립니다. 해당 문법 보다는 설명해주셨던 문법을 많이 쓰는지 아니면 그냥 취향에 따라서 맞춰 쓰면 되는지 질문 드립니다.

  • spring
  • mvc
maurizio 댓글 1 좋아요 0 조회수 307

/images/{filename}

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요.mvc2 강의 Multipart 파트를 보다가 아래부분에서의 GetMapping의 "/images/{filename}" 이 경로가 어떻게 호출되는 건지 궁금합니다. 뷰의 이미지 소스 경로에서 th:src="|/images/${imageFile.getStoreFileName()}| 이 부분때메 애가 호출하는 것인지 궁금합니다. 답변 주시면 감사하겠습니다. @ResponseBody @GetMapping("/images/{filename}") public Resource downloadImage(@PathVariable String filename) throws MalformedURLException { return new UrlResource("file:" + fileStore.getFullPath(filename)); }

  • spring
  • mvc
윤주훈 댓글 1 좋아요 0 조회수 558

엔티티매니저의 대해 질문이 있습니다!

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

EntityManager는 빈 스코프가 프록시로 설정된다고 알고있습니다. 하지만 결국은 원본 엔티티매니저를 사용하는것이라고 이해했습니다. 그러면 요청이 들어오면 엔티티매니저를 사용하는데 엔티티매니저 내에 영속성 컨텍스트가 있고 싱글톤으로 유지된다면 영속성컨텍스트가 다른 요청이랑 공유되는게 아닌가요? 싱글톤으로 등록되어 있는데 영속성컨텍스트가 공유되지 않는 이유가 궁금합니다. 엔티티매니저가 빈인데 어떻게 요청마다 생성되는것인지 궁금합니다.

  • java
  • jpa
YOGURT 댓글 1 좋아요 1 조회수 430

간단한 질문입니다만..

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 웹 기능-등록 강의에 나오는 부분중에 package spring.lecture0.controller; import lombok.Getter; import lombok.Setter; //웹 등록 화면에서 데이터를 전달 받을 폼 객체 @Getter @Setter public class MemberForm { private String name; } 이 코드가 MemberController에서 @PostMapping의 create메소드에 파라미터로 사용되던데 그러면 저 MemberForm은 혹시 DTO(Data Transfer Object)인가요? 혹시 DTO가 맞다면 DTO객체들만 따로 디렉토리를 생성해도 괜찮나요?..감사합니다

  • java
  • spring
  • mvc
  • spring-boot
start1234 댓글 1 좋아요 0 조회수 392

errors.properties

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

errors.properties 에서 #Bean Validation 추가 NotBlank={0} 공백X Range={0}, {2} ~ {1} 허용 Max={0}, 최대 {1} 이렇게 추가하는 경우 Range의 매개변수가 {2} ~ {1}로 되는데 각각의 매개변수는 어디서 받아 오는 건지 모르겠습니다. @NotNull @Range(min = 1000, max = 1000000) private Integer price; 이 부분인 줄 알고 순서를 바꾸었더니 1000000~1000으로 출력 되었습니다.

  • spring
  • mvc
jeong정재인 댓글 1 좋아요 0 조회수 225

안녕하세요 section9 주문내역 검색에서 자꾸 오류가나네요

미해결

스프링 부트 웹 개발 입문 - 따라하며 배우기

수업내용 V1,V2 와는 별개로 제가 V3로 다시 만들어서 수업을 따라서 진행중인데, 주문내역에서 검색을 하면 저런 오류창이 뜨네요..ㅠ 제 소스파일을 압축해서 구글링크로 걸어두겠습니다 한번만 봐주시면 감사할것같습니다!! https://drive.google.com/file/d/1f6M5tRzjpVYh6lloJEcaiquiP2y_DI6w/view?usp=sharing

  • spring
  • mvc
  • spring-boot
JS 댓글 1 좋아요 1 조회수 263

@RequestParam, @ModelAttribute 파라미터받는방식

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

계속 강의를 듣던중에 @RequestParam,@ModelAttribute 가 파라미터를 받는 것으로 이해하고 있었습니다. 근데 여기서 html-form방식으로 메시지바디에 쿼리 파라미터 형식으로 전달하는데 @RequestParam은 url형식(/?xxx=xxx) 으로 전달받아야해서 오류가 나야되는거 아닌가요? @RequestParam도 html-form 형식으로 와도 정상작동하는건가요?

  • spring
  • mvc
코더 댓글 1 좋아요 0 조회수 453

/basic-objects url 매핑 함수에 대해 질문있습니다.

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] /basic-objects 매핑 함수에는 HttpSession 밖에 없는데 어떻게 쿼리스트링을 html 에서 param 으로 바로 가져올 수 있는건가요? argument resolver 나 http 메시지 컨버터의 개입이 있어서 그런 것인가요??

  • spring
  • mvc
truepine 댓글 1 좋아요 0 조회수 524

MemberServiceIntegrationTest 회원가입,중복회원가입 실패(bad SQL grammar)

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 문제에 대해 간략하게 이야기 하자면 JdbcTemplateMemberRepository를 작성 후, 통합Test를 돌리는데 회원가입과,중복회원가입에서 오류가 납니다. 아래는 해당 오류코드내용입니다. 제가 오류코드를 읽어본 결과 이해한 바 로는 회원가입 통합test소스에서 Join()에서 문제가 생겼고 MemberService에 join함수를 보니까 validateDuplicateMember()에서 findByName()에서 문제가 생겼습니다. jdbc템플린 레포지토리의 findByName()은 쿼리에서 뒤에 name을 필수로 받아야되는데 name이 안받아져서 생기는 문제같습니다. 해당 문제가 발생할 수 있는 부분을 확인했습니다. 근데 분명 테스트케이스에서 Member 객체 생성하고 setName을 해주었고 중복검사함수에서 member.getName()을 통해 String을 넘기고 있는데 왜 sql에서 identifier가 제외됬다고 나오는지 모르겠습니다...ㅠ 문제가 발생하는 부분의 코드를 아래에 첨부합니다. 결론) 제가 생각한 부분에서의 오류가 맞는지 아닌지 맞다면 어떤부분에서 잘못이 된건지 ex) JdbcTemplateMemberRepo.findByName() 문법오류 아니라면 어떤부분이 잘못된건지 궁금합니다...!

  • java
  • spring
  • mvc
  • spring-boot
한창민 댓글 1 좋아요 0 조회수 676

실행 오류 관련 질문

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 사진과 같이 설정을 한 후에 실행을 파일을 열었는데 계속해서 파일들이 빨간줄로 표시가 됩니다. 실행 중지 시 'Execution failed for task ':HelloSpringApplication.main()'. > Build cancelled while executing task ':HelloSpringApplication.main()''오류가 뜹니다 bulid.gradle 설정은 plugins { id 'java' id 'org.springframework.boot' version '2.7.13' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '11' } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() } 이렇습니다!

  • java
  • spring
  • mvc
  • spring-boot
digeuthi 댓글 1 좋아요 0 조회수 563

Object 클래스의 clone() 메서드 질문

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

Object 클래스의 clone() 메서드는 깊은 복사가 아니라 얕은 복사로 알고 있습니다. 강의에서의 선생님의 말씀대로 clone() 메서드는 깊은 복사가 맞나요?

  • java
  • 코딩-테스트
재영 댓글 2 좋아요 0 조회수 364

스프2탄 PPT파일은 없나요?

미해결

스프링 프레임워크는 내 손에 [스프2탄]

강의 설명해주시는거 PPT파일 확인하면서 보려고하는데 PPT파일은 없는거같아서요

  • spring
  • jquery
  • mvc
  • jpa
  • spring-security
최현제 댓글 1 좋아요 0 조회수 546

JapMemberRepository 클래스에서 메서드의 리턴값에 관한 질문입니다.

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] @Override public Member save(Member member) { em.persist(member); return member; } 여기에서 스펙을 맞추기 위해 return값을 넣어준다고 하셨는데요, 이게 무슨 의미인지 궁금합니다! 혼자 코딩을 하게 될 경우 return값이 필요한지, 어떤 값으로 리턴해야 하는지 판단하려면 어떻게 해야 하나요?

  • java
  • spring
  • mvc
  • spring-boot
dooooh2 댓글 1 좋아요 0 조회수 379

unsupported Post method [405 error]

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 섹션 5. 회원 웹 기능 -등록 을 수강하고 있습니다. 저는 VSCODE 로 IDE를 활용하고 있고, 코드서버를 쓰고 있습니다. 강의에서 배운 내용 그대로 코드를 쳤는데도 불구하고 위의 그림과 같이 Unsupported POST method 라고 뜹니다. 혹시 몰라서 마지막에 IDE 화면도 첨부했습니다. package donghun.donghunspring.Controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import donghun.donghunspring.domain.Member; import donghun.donghunspring.service.MemberService; @Controller public class MemberController { //memberService new 객체를 만드는 게 아니고, 연결 시켜줘야 한다 : 생성자 이용. private final MemberService memberService; //스프링이 뜰 때 Controller 에 service와 repository 연결한다. annotation 붙여 (service, repository) //연결하려면 service 와 repository 를 스프링 빈에 등록해야 하므로 service, repository 각각에 @Service, @repository 등록. //또는 직접 자바코드 작성하여 Bean 등록할 수 있음. @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; } @GetMapping("/members") public String membersForm(){ return "members/mF"; } @PostMapping("/members/new") public String create(MemberForm form){ Member member = new Member(); member.setName(form.getName()); memberService.join(member); return "redirect:/"; } @GetMapping("/members/new") public String createForm() { return "members/createMemberForm"; } //post 방식으로 form 입력하므로 postmapping 이 선택된다. } ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ template : createMemberForm.html //두 개의 코드가 첨부가 안되므로 절취선 이용해 붙이겠습니다. <!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <body> <div class="container"> <form action="/members/new" method="post"> <div class="form-group"> <label for="name">이름</label> <input type="text" id="name" name="name" placeholder="이름을 입력하세요"> </div> <button type="submit">등록</button> </form> </div> <!-- /container --> </body> </html>

  • java
  • spring
  • mvc
  • spring-boot
김동훈 댓글 2 좋아요 0 조회수 1130

clearStore() 메서드의 작성 위치 의문

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] MemoryMemberRepository 클래스에서 public void clearStore() 메서드를 추가해서 테스트 실행 시 사용하는데, Repository클래스의 목적에 맞지 않게 테스트에서만 사용하기 위한 clearStore() 메서드를 Repository클래스에 정의하여 적어 주는 게 일반적이고 흔히 쓰는 방식인가요 ? 테스트 케이스에서 따로 save된 정보를 삭제하는 방식으로 하는 게 더 올바른 방식은 없고 그 방식을 안하는 이유가 있을까요 ? 궁금해서 질문드립니다.

  • java
  • spring
  • mvc
  • spring-boot
howdeep 댓글 1 좋아요 0 조회수 644

스프링 인터셉터가 똑바로 동작하지 않아 질문드립니다.

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요, 이 강의를 수강한 프로젝트를 진행 중인 학부생입니다. 코드를 구성하던 중 이해가 가지 않는 현상이 발생하여 질문드립니다. LoginInterceptor.java package Alchole_free.Cockpybara.interceptor; import Alchole_free.Cockpybara.constant.SessionLoginConst; import lombok.extern.slf4j.Slf4j; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @Slf4j //@Component public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session = request.getSession(); log.info("session = {}", session); if (session == null || session.getAttribute(SessionLoginConst.LOGIN_MEMBER) == null) { log.info("로그인되지 않은 사용자"); response.sendRedirect("/login"); return false; } log.info("정상 요청"); return true; } } WebConfig.java package Alchole_free.Cockpybara.config; import Alchole_free.Cockpybara.interceptor.LoginInterceptor; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; //@Slf4j @Configuration //@RequiredArgsConstructor public class WebConfig implements WebMvcConfigurer { // private final LoginInterceptor loginInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginInterceptor()) .order(1) .addPathPatterns("/**") .excludePathPatterns("/", "/join", "/login", "/css/**", "/*.ico", "/error"); } } 위와 같이 코드를 구성하고 어플리케이션을 실행시켜도 인터셉터가 똑바로 등록되지 않더군요. 디버깅을 해봤는데 아예 Configuration 자체가 적용이 안되는 것 같습니다. 어떤 문제인지 도무지 파악할 수 없어 질문드립니다. 혹시 몰라 설정 파일들도 올립니다. build.gradle plugins { id 'java' id 'org.springframework.boot' version '2.7.13' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'Alchole_free' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '11' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' compileOnly 'org.projectlombok:lombok' runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' //swagger 설정 implementation group:'io.springfox', name:'springfox-swagger2', version:'2.8.0' implementation group:'io.springfox', name:'springfox-swagger-ui', version:'2.8.0' } tasks.named('test') { useJUnitPlatform() } application.properties # ?????? ?? ?? spring.datasource.url=jdbc:mariadb://localhost:3306/cockpybara spring.datasource.username=root spring.datasource.password=cockpybara spring.datasource.driver-class-name=org.mariadb.jdbc.Driver # JPA ?? spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=create spring.jpa.properties.hibernate.format_sql=true //JPA ???? Hibernate? ????? ???? SQL? formating?? ?? spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect #show parameter binding logging.level.org.hibernate.type.descriptor.sql=DEBUG logging.level.org.hibernate.SQL=DEBUG

  • spring
  • mvc
안민재 댓글 1 좋아요 0 조회수 682

인기 태그

인프런 TOP Writers

주간 인기글