묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JdbcMemberRepository 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이런 오류가 뜨는데 대체 어떻게 해결해야 할까요? ㅠㅠpackage hello.hello_spring.repository; import hello.hello_spring.domain.Member; import org.springframework.jdbc.datasource.DataSourceUtils; import javax.sql.DataSource; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.Optional; public class JdbcMemberRepository implements MemberRepository{ private final DataSource dataSource; public JdbcMemberRepository(DataSource dataSource) { this.dataSource = dataSource; } @Override public Member save(Member member) { String sql = "insert into member(name) values(?)"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); pstmt.setString(1, member.getName()); pstmt.executeUpdate(); rs = pstmt.getGeneratedKeys(); if (rs.next()) { member.setId(rs.getLong(1)); } else { throw new SQLException("id 조회 실패"); } return member; } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } @Override public Optional<Member> findById(Long id) { String sql = "select * from member where id = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setLong(1, id); rs = pstmt.executeQuery(); if(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); return Optional.of(member); } else { return Optional.empty(); } } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } @Override public List<Member> findAll() { String sql = "select * from member"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); List<Member> members = new ArrayList<>(); while(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); members.add(member); } return members; } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } @Override public Optional<Member> findByName(String name) { String sql = "select * from member where name = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setString(1, name); rs = pstmt.executeQuery(); if(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); return Optional.of(member); } return Optional.empty(); } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } private Connection getConnection() { return DataSourceUtils.getConnection(dataSource); } private void close(Connection conn, PreparedStatement pstmt, ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (pstmt != null) { pstmt.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (conn != null) { close(conn); } } catch (SQLException e) { e.printStackTrace(); } } private void close(Connection conn) throws SQLException { DataSourceUtils.releaseConnection(conn, dataSource); } } error: JdbcMemberRepository is not abstract and does not override abstract method cleatStore() in MemberRepository public class JdbcMemberRepository implements MemberRepository{
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
response.sendError의 역할
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]섹션 8에서 컨트롤러에서 response.sendError()을 사용해서 WAS까지 오류 정보를 전달 하는 것으로 생각했습니다.그런데 섹션 9를 공부하면서 ExceptionResolver 코드를 확인해보면 결국 내부적으로 response.sendError() 를 호출한 다는 것을 알게 되었습니다.이는 response.sendError()를 사용하는 것이 WAS까지 오류 정보를 전달하는 역할을 하는 것이 아니라고 이해하면 될까요? 그렇다면 어떻게 위 그림의 sendError흐름이 만들어지는 걸까요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jsp 페이지 인식 안되는 문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.jsp 페이지가 인식되지 않습니다./jsp/members/new-form.jspgradle gradle 적용후 새로 적용했고 했고 서버도 재시작 했는데 jsp 페이지 접근이 안됩니다.index.html 정상 접근됩니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Spring web bean validation 에러핸들링
Bean validation핸들링이 보통 어떤 설계가 일반적인지 알고싶어서 질문드립니다폼post 송신시, Bean validation으로 에러감지 후 입력화면html로 리턴할텐데요이때, 브라우저 url은 post송신용이 남아있어서유저가 브라우저 주소창 엔터로Get으로 송신이 되어 서버에선postmapping만 지원한다고 시스템에러가 나는데 일반적으로 이런건 유저가 개발자 의도와는 다르게 이용한 케이스겠지만 흔히 있을 수 있는 일 같거든요. 이런거 방지하기 위해서는 get도 받을 수 있게 따로 구현을 하나요?아니면 실무에서는 어떤 방법이 있을까요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ItemController
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]1. ItemController에서 downloadImage함수에서 @ResponseBody를 사용하였는데, 사용하지않게 되면, 예외가 발생합니다. 왜그런가요?ItemController에서 downloadAttach에서는 ResponseEntity<Resource>를 사용하셨는데, 이게 @ResponseBody와 같은거라고 하셨는데,( 다만, header에 추가할 부분이 있어서 ResponseEntity를 사용하셨다고 하는데) 어떤 부분이 같은 건가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
open or import
제가 이 강의 듣기 전 java 인강도 듣고 있던 터라 인텔리제이에서 open or import 버튼을 누르지못하는데요 (초기화면으로 돌아가지 못해요) 혹시 인텔리제이를 삭제했다가 다시 깔아야 하나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
상품 정보 삭제 기능
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Hibernate 질문 있습니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]17 :13 에서 MemberServiceIntegrationTest 의 회원가입을 실행했을 때 김영한님은 insert into member(id,name) values (null,?) 라고 뜨시는데 저는insert into member (name, id) values (?,default) 라고 뜹니다 member 과 values 둘 다 순서가 바뀐 것 같은데 어디를 봐야 고칠 수 있을까요..?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
해결
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 이런 오류가 3_3 부터 생기는데 해결이안됩니다! It appears as if your JDK does not supply a working agent attachment mechanism.Java : 21JVM vendor name : Oracle CorporationJVM vendor version : 21.0.3+7-LTS-152JVM name : Java HotSpot(TM) 64-Bit Server VMJVM version : 21.0.3+7-LTS-152JVM info : mixed mode, sharingOS name : Windows 11OS version : 10.0at app//org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<init>(InlineDelegateByteBuddyMockMaker.java:260)at app//org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:23)... 18 moreCaused by: java.lang.IllegalArgumentExceptionat java.instrument/sun.instrument.InstrumentationImpl.appendToClassLoaderSearch0(Native Method)at java.instrument/sun.instrument.InstrumentationImpl.appendToBootstrapClassLoaderSearch(InstrumentationImpl.java:280)at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<clinit>(InlineDelegateByteBuddyMockMaker.java:177)... 19 more
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
예외를 공통으로 처리하는곳
안녕하세요. 강의를 듣던중에 궁금한점이 있어서 질문드립니다.이번강의에서도 그렇고, 앞서 다른 강의에서도 "복구할수 없는 예외는 예외를 공통으로 처리하는 부분까지 전달되고, 예외를 공통으로 처리하는곳에서 처리한다 " 고 하셨는데, 지금까지 강의에서도 이 부분에서 대해서는 자세한 설명이 없으셔서 넘어가긴했는데 예외를 공통으로 처리하는곳이 구체적으로 어떤부분을 말하는것일까요? 지금까지는 이 부분에 대해서는 학습한적이 없는걸로 생각되는데 제가 놓친부분이 있는것인지 아니면 추후 강의에서 설명을 해주시는 부분인지 질문드립니다..!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
중복_회원_예외 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 뭐가 문제인지 모르겠습니다 ㅠㅠ isEqualto도 빨간색으로 뜨면서 작동이 안되고요 ㅠㅠpackage hello.hello_spring.service; import hello.hello_spring.domain.Member; import hello.hello_spring.repository.MemoryMemberRepository; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import java.util.List; import java.util.Optional; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; class MemberServiceTest { MemberService memberService = new MemberService(); MemoryMemberRepository memoryMemberRepository = new MemoryMemberRepository(); @AfterEach public void afterEach() { memoryMemberRepository.cleatStore(); } @Test void 회원가입() { //given Member member = new Member(); member.setName("hello"); //when long saveId = memberService.join(member); //then Member findMember = memberService.findOne(saveId).get(); //ctrl + alt + v assertThat(member.getName()).isEqualTo(findMember.getName()); } @Test public void 중복_회원_예외() throws Exception { //given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); //when Long saveId = memberService.join(member1); //then IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2)); assertThat(e.getMessage().isEqualTo("이미 존재하는 회원입니다.")); /* try { memberService.join(member2); fail(); } catch (IllegalStateException e) { assertThat(e.getMessage().equals("이미 존재하는 회원입니다.")); } */ } @Test void findMembers() { } @Test void findOne() { } }Unexpected exception type thrown, expected: <java.lang.IllegalStateException> but was: <java.lang.RuntimeException> Expected :class java.lang.IllegalStateException Actual :class java.lang.RuntimeException <Click to see difference> org.opentest4j.AssertionFailedError: Unexpected exception type thrown, expected: <java.lang.IllegalStateException> but was: <java.lang.RuntimeException> at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:67) at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:35) at org.junit.jupiter.api.Assertions.assertThrows(Assertions.java:3115) at hello.hello_spring.service.MemberServiceTest.중복_회원_예외(MemberServiceTest.java:53) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) Caused by: java.lang.RuntimeException: java.lang.IllegalAccessException: 이미 존재하는 회원입니다. at hello.hello_spring.service.MemberService.lambda$validateDuplicateMember$0(MemberService.java:28) at java.base/java.util.Optional.ifPresent(Optional.java:178) at hello.hello_spring.service.MemberService.validateDuplicateMember(MemberService.java:24) at hello.hello_spring.service.MemberService.join(MemberService.java:16) at hello.hello_spring.service.MemberServiceTest.lambda$중복_회원_예외$0(MemberServiceTest.java:54) at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:53) ... 6 more Caused by: java.lang.IllegalAccessException: 이미 존재하는 회원입니다. at hello.hello_spring.service.MemberService.lambda$validateDuplicateMember$0(MemberService.java:26) ... 11 more java.lang.IllegalAccessException: 이미 존재하는 회원입니다. java.lang.RuntimeException: java.lang.IllegalAccessException: 이미 존재하는 회원입니다. at hello.hello_spring.service.MemberService.lambda$validateDuplicateMember$0(MemberService.java:28) at java.base/java.util.Optional.ifPresent(Optional.java:178) at hello.hello_spring.service.MemberService.validateDuplicateMember(MemberService.java:24) at hello.hello_spring.service.MemberService.join(MemberService.java:16) at hello.hello_spring.service.MemberServiceTest.lambda$중복_회원_예외$0(MemberServiceTest.java:54) at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:53) at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:35) at org.junit.jupiter.api.Assertions.assertThrows(Assertions.java:3115) at hello.hello_spring.service.MemberServiceTest.중복_회원_예외(MemberServiceTest.java:53) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) Caused by: java.lang.IllegalAccessException: 이미 존재하는 회원입니다. at hello.hello_spring.service.MemberService.lambda$validateDuplicateMember$0(MemberService.java:26) ... 11 more
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
update() 에서 Item 을 @NotNull로 추론할 수 있는 근거가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. controllerV4에서 edit메서드를 고치는 도중에 itemRepository.update()에서 cmd+p 를 통해 파라미터 정보를 확인해보니 Item이 @NotNull 이라고 나옵니다하지만 ItemRepository에서 update 메서드를 확인해보니 파라미터에 @NotNull 조건이 없는데 어떻게 NotNull 이라고 나오는걸까요??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Java 17 다운로드
java 17을 다운받고 인텔리제이를 실행했는데요 group이나 version (보라색 글씨)가 활성화?가 안돼요그리고 java 11과 java 14를 깔았던게 있는데 이것때문에 cmd 에서 java -version 이라고 쳤을 때 14가 계속 뜨는 바람에 11과 14를 모두 지우고 17만 남겨뒀거든요 그런데 인텔리제이에서 제가 같이 듣고있는 자바코드들이 다 오류가 뜹니다. CoreApplication.java 도 실행이 아예 되질 않습니다.
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]
stop.bat 실행오류
mysqladmin: connect to server at 'localhost' failederror: 'Authentication plugin 'auth_gssapi_client' cannot be loaded: '동영상과 다르게 저렇게 에러가 나는데 어떻게 하면 좋을까요
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]
mysql startup.bat 오류
강의 3:40쯤 나오는 부분에서 따라했더니 다음과 같이 오류가 났는데 해결방법 알려주실 수 있나요?설치한 버전은eGovFram-4.1.0mysql-5.7.32 버전입니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
서비스 로직을 구현할때 서비스 규칙 검증에 대하여
안녕하세요. 강의를 통해 공부하고 운영을 경험해볼 프로젝트를 진행중에 궁금점이 생겨 질문 드립니다.저희 서비스는 프론트와 서버가 HTTPS 로 통신하고, 프론트를 검증하기 위한 헤더, 유저를 검증하기 위한 토큰을 사용하여 구현하고 있습니다.예를 들어, 유저1이 유저가 속한 카톡방1에서 유저가 생성한 채팅을 삭제하는 요청을 보냈을 때(/DELETE room/1/chatting/1), 현재 서버에서는 유저가 카톡방에 속하는지, 해당 채팅이 해당 채팅 방에 속하는지, 채팅의 작성자가 유저인지 db에서 검증하는 과정을 거칩니다.궁금한 부분은 서버에 요청을 보낸 클라이언트가 저희 서비스임을 검증하고, 외부에서 패킷을 볼 수 없도록 HTTPS를 사용함에도 내부적으로 이런 검증 과정을 거쳐야 하는 것이 맞을까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
내부 트랜잭션 롤백시 마킹의 필요성
대원칙인 모든 논리 트랜잭션이 커밋되어야 모두가 커밋되는거고 하나라도 롤백되면 모두가 롤백된다는 개념에서 내부 트랜잭션이 롤백되면 그 시점에 모두 롤백시키면 되지 않나요? 굳이 내부 트랜잭션 롤백 후 물리 트랜잭션에 rollback_only마크를 달아 결국 모두가 롤백되도록 하는 이유가 궁금합니다.또 궁금한 점은 만약 개발자가 실수로 외부 트랜잭션을 먼저 롤백해버린다면 -> 제가 실험해보니 외부 트랜잭션 롤백시 물리 트랜잭션이 즉각 롤백이 되더라구요. 아마 isNewTransaction이 트루인 경우니 최종 결정권자의 형태로 바로 롤백을 시키는 것 같은데 그러고 나서 내부 트랜잭션 롤백을 시도하니까 여전히 롤백 마크를 남기는 로그가 뜨더라구요. 이 점에 대해서 설명 부탁드립니다:)
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
cmd - gradlew 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.왜 이런 오류가 발생하는 걸까요? gradlew.bat build로 해도 똑같고gradle home도 잘 지정되어 있습니다.
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
@Configuration vs @TestConfiguration
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]아래 코드는 스프링 핵심 원리 기본 편에서 작성했던 코드입니다.public class ApplicationContextExtendsFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); . . . @Configuration static class TestConfig { @Bean public DiscountPolicy rateDiscountPolicy() { return new RateDiscountPolicy(); } @Bean public DiscountPolicy FixDiscountPolicy() { return new FixDiscountPolicy(); } } }여기선 @Configuration를 써도 문제가 없었는데이번 강의에선 @TestConfiguration을 작성해야만 오류가 안 생기는 이유가 뭔지, 어떤 차이 때문인지 잘 이해가 안 갑니다. 검색해 봐도 잘 와닿지가 않는데 이번 강의의 코드에선 왜 @Configuration을 하면 테스트가 제대로 수행되지 않는 건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
최근에 강의 듣다보면 일시적인 오류가 자주 발생합니다