묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@Transactional 어노테이션을 썻지만, h2 DB가 롤백이 되지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]***문제해결****JDBCRepository 구현시이걸 안 붙혀넣고이렇게 써서 생긴 오류인 것 같습니다.. 다른 질문글에서 보고 알았습니다 하하..***************@Transactional 어노테이션을 썻지만, h2 DB에서 롤백이 되지 않습니다.롤백이 되지 않은 이유가 스프링 버전과 h2 버전이 바뀌어서 그런건가요?테이블을 초기화하고 스프링통합memberServiceTest 를 진행하니 회원가입한 정보가 테스트가 끝난 후 DB에 고스란히 남아있었습니다.#스프링 환경Java-> 17spring->3.4.3h2 : 2.3.232-> 서버모드 접근함(jdbc:h2:tcp://localhost/~/test)#알아본것h2에 서버모드로 접근하면, spring->네트워크->h2이렇게 접근이 되어서 외부에 있는 DB는 롤백을 안한다고 들었습니다.다른 곳에서도 접근해서 고칠 수 있기 때문에,,그래서 대신 메모리모드를 사용하라고 답변을 들었습니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
동시세션제어 기능에서 로그아웃하기
안녕하세요"인가 설정 실시간 반영하기" 코드에서 동시 세션 제어 기능을 추가할려고 합니다.http.sessionManagement(session -> session .maximumSessions(1) .maxSessionsPreventsLogin(true) )위 코드를 추가한 후 REST 방식으로 로그인후 로그아웃을 하면 SessionRegistry의 principals 객체에 있는 정보가 삭제되지 않아 다시 로그인을 시도하면 인증오류가 발생합니다.로그아웃을 할 경우 SessionRegistry.removeSessionInformation(sessionId)가 호출되어 principals 정보가 삭제되어야 할 것 같은데 제가 잘못 이해하고 있는 지 궁금합니다.
-
해결됨죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
[예시 코드 오타 제보]처형부탁한다
한다 제보를 KILL-9, 바란다 응답[제보 정보 수집중...🤖][KILL-9@user]$ cd 커리큘럼/섹션4/3장/작전1해킹 주문 데이터베이스 정찰 작전에서 프락치를 발견했다JdbcPagingItemReader 가 whereClause에 거짓 증거를 제출해서 혼란을 야기했다status = 'READY_FOR_SHIPMENT' 이고 not null 이어햐 하지 않을까 생각한다CANCELLED 가 아닌 것 같다다시 보니 작전에 혼동이 있는 것 같다 확인요망 🔥 유해 게시물 처형 작전 시스템에도 버그가 발견됐다전체코드에서 JpaCursorItemReader 에 queryString 조건이 잘못된 것 같다이후의 예시 코드들은 잘돼있지만전체코드 복사하는 녀석들이 많기 때문에 처리부탁한다[추가 처형 요청...💀][KILL-9@user]$ cd 커리큘럼/섹션3/2장/작전1글 쓰는 김에 한 녀석도 추가 제보하겠다FlatFileItemReader 고정길이 예제도 처형 부탁한다 소제목인 .columns() 예제 이미지가 정확하다하지만 예시코드라고 적혀있는 Range는 틀렸다 이것은 KILL-9 후보생의 혼란만 가중시킬뿐이다
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
SnowFlake
현재 댓글 무한 depth까지 수강했는데 snowFlake를 통해 Id값을 넣고 있는데 해당 부분을 service단에서 entity.create를 통해 구현하는 점에 대해 궁금증이 생겼습니다.이런 방식으로 계속 진행이 되면 보일러 플레이트방식이 되는것 같은 느낌이 들어서 차라리 커스텀 IdentifierGenerator를 통해 Entity안에서 값을 넣어주면 어떨까하고 생각을 해보게 되었습니다. 이렇게 진행하면 기존 service를 통해 진행하는 것보다 비효율적일까요?? 두개의 차이점이 궁금합니다
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
physical cache miss 시, collapse 동작 안하는 상황에 대해
레디스에 physical 하게 남아있지 않은 캐시에 대해선 request collpsing이 동작하지 않습니다. 이를 해결하기 위한 방법이 따로 있을까요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
안녕하세요, MessageRelay 관련해 궁금한 사항 생겨서 문의드립니다.
안녕하세요, 강사님늘 강의 잘 듣고 있습니다. 감사합니다.강의를 보다보니, 아래 프로세스가 발생한다면 동시성 이슈가 발생할 수 있을 것 같기도 한데요,혹시 관련하여 의견 여쭙고자 글 남깁니다감사합니다.
-
미해결나도! 스프링으로 인공지능을 할 수 있다(인프1탄)
Advisors 질문입니다.
예제를 따라하고 있는데요public ChatClient chatClient(ChatClient.Builder chatBuilder){ return chatBuilder .defaultAdvisors(new MessageChatMemoryAdvisor(new InMemoryChatMemory()).build();}이부분이 에러가 나서 MessageChatMemoryAdvisor를 생성을 못하는데요.. 어떻게 해야 할까요?spring ai버전이 1.0.0버전인데 버전에 따라 코드가 바뀌는것 같은데요..
-
미해결스프링 웹 MVC 완전정복
ppt 510 실습질문
클라이언트용 프록시 생성1. RestClient 사용private repository 라git repository collaborator mail 로 드렸어요https://github.com/insoou/study-springmvcbranch name: test/rest-client/http-interfaceClientProxy.java 테스트 파일에서 주석으로 표시 소스간략@Test void restClient(){ RestClient restClient = RestClient.builder().baseUrl("https://api.github.com/").build(); RestClientAdapter restClientAdapter = RestClientAdapter.create(restClient); HttpServiceProxyFactory httpServiceProxyFactory = HttpServiceProxyFactory.builderFor(restClientAdapter).build(); RepositoryService repositoryService = httpServiceProxyFactory.createClient(RepositoryService.class); // 요기서 에러나지는 않지만 디버시 첨부한 사진처럼 찜찜한 메세지가 남습니다. 저 메세지의 의미가 무엇인지 알고있으십니까? Map<String, Object> repository = repositoryService.getRepository("spring-projects", "spring-boot"); assert false==repository.isEmpty(); } 질문사진에 첨부했습니다리포지토리서비스 메서드 에러 던지기가 나오는 이유가 궁금한데 알고계신가요?
-
미해결실전! 스프링 데이터 JPA
영속성 전이와 연관관계
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 선생님 강의를 통해 배움을 얻고 프로젝트를 하며 성장 하고 있습니다.프로젝트를 하던중 영속성 전이와 관련하여 궁금한점이 생겨 질문 드립니다.( 영한님 JPA 강의에 질문 하는것이 맞으나 JPA는 책을 사서 여기에 질문 드립니다 ㅠㅠ ) 회원과 주소는 양방향 관계를 두고 있습니다.회원과 주소를 연관관계 매핑하여 회원을 저장하면 영속성 전이를 통해주소가 같이 저장 됩니다. 그런데 문제는 둘다 영속 상태일때 주소를 제거 하면 delete 쿼리가 나가지 않았습니다.이런 저런 실험을 해본 결과 영속성 전이 때문에 삭제 되지 않은것으로 보았습니다.영속 대상인 주소를 삭제 하려고 했으나 회원의 연관관계인 Address는 그대로 있기 때문에영속성 전이로 인해 삭제가 되지 않았다로 판단 하였습니다. 영속성 컨텍스트에 주소만 있을 경우 주석 으로된 부분을 실행하면영속성 전이를 수행할 회원이 없기 때문에 delete 쿼리가 나가게 됩니다.제가 생각한게 맞는지 궁금하여 질문 드립니다. 밑의 예시의 경우 회원이 영속 상태인 경우영속성 전이 때문에 연관관계를 끊지 않으면 영속 대상인 주소가 delete가 안되는게 맞을까요? @DisplayName("회원과 연관된 주소를 제거할때 자식인 주소를 제거 하면 delete 쿼리가 발생하지 않는다.") @Test void deleteAddress() { //given User user = new User("회원"); Address address = new Address("주소"); address.connectUser(user); //when em.persist(user); em.flush(); boolean isAddressManaged = em.contains(address); System.out.println("Address is managed? " + isAddressManaged); addressRepository.deleteById(address.getId()); em.flush(); em.clear(); //then //Address findAddress = addressRepository.findById(address.getId()).orElseThrow() //addressRepository.deleteById(findAddress.getId()); //em.flush(); } [ 회원 ]@Getter @Setter @Table(name = "users") @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToOne(mappedBy = "user", cascade = CascadeType.PERSIST) private Address address; protected User() {} private String name; public void connectAddress(Address address){ this.address = address; } }@Getter @Entity public class Address { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private User user; private String addressName; protected Address() {} public Address(String addressName) { this.addressName = addressName; } public void connectUser(User user){ this.user = user; user.connectAddress(this); } }
-
미해결실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)
Elasticsearch 설치하기 강의에서 질문 있습니다.
맥에서 터미널을 이용해서 진행하고 계신데요윈도우에서 이렇게 하려면 어떻게 하면 되는지 자세하게 설명해 주셨으면 좋겠습니다.
-
미해결실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)
강의 질문입니다.
안녕하세요.ElasticSearch 를 배우고자 수강 시작했습니다.이 강의는 유투브 에도 올리시고 계신데요, 인프런에 올리신 강의를 유투브에도 다 올리실 계획이신지요?
-
미해결생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현
OAUTH2 질문
로그인시도 -> Securty -> FILTER 사용자가 DB에있으면 OK -> JWT발급이 흐름이 맞는지요..? 그리고 OAUTH2는 로그인시도 -> 카카오 코드받아서 인증을 받고 -> 토큰으로 사용자 정보를 가져와서 로그인 -> 로그인 후 jwt발급근데 궁금한게 oauth2도 회원가입이 왜 필요한걸까요? 시큐리티때문이라고한다면 토큰으로 사용자정보를 가져오는걸로 db에서찾은거처럼 판단을 못하는지요제가 헷갈리는게 jwt든 oauth2든db하고 관련이 어떻게잇는건지가 헷갈립니다 jwt도 db에서 사용자정보를 가져와서 담을수도있지않나요? oauth2가 db에 사용자정보가 왜필요한지도 헷갈립니다 만약 사용자정보가 저장이 최초에 된다면 그다음부터는 그냥 oauth2로그인으로 안타는건지 그냥 security의 로그인을 타는건지 궁금합니다. 그리고 현재 강의에서는 시큐리티를 안쓰고openfeign를 쓰셔서 코드를 받고 그 코드로 요청을 보내서 토큰을 받고 그 토큰으로 사용자정보를 받는걸로 이해를 했습니다. 시큐리티에서는 해당과정이 없는걸로 알고있는데 맞는지요
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
프로젝트 구조 질문 있습니다
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 항상 좋은 강의 잘 보고 있습니다. 다름이 아니라, 현재 강사님 프로젝트 구조가 정확하게 실무에서 사용하는 MSA 프로젝트가 맞나요?아니면 , 모놀리식 기반 멀티 모듈 구조를 통해 MSA 학습을 위한 구조인가요?현재 강의를 보면서 토이 프로젝트로 MSA 학습을 진행해보려고 하는데, 해당 구조가 실제 현업에서 사용하는 구조가 맞는지 궁금합니다 !
-
미해결생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현
카카오토큰관련
안녕하세요 질문이있는데요 제가 예전에는 security에서http.oauth2Login(oauth2Login -> oauth2Login.loginPage("/login").userInfoEndpoint().userService(customOAuth2UserService)); 이런식으로 oauth를 했었던거같은데 해당강의는 시큐리티를 적용안하고 바로 카카오로 회원가입을 진행시키는걸까요? 근데 궁금한게 제가 예전에 했을때는 저런 토큰을 안하고OAuth2User 이걸로 이용해서 가입을 시켜서 로그인을 했던거같은데 어떤차이가있는걸까요 해당강의에서 FeighClient를이용해서 토큰을 요청을하는게 훨씬 복잡해보이는데 어떤장점이있는지도 알려주시면감사합니다 시큐리티했을때는 그런작업이 없었던거같아서요 jwt를 이용하는거면 소셜로회원가입을 시키고 그 가입된걸 jwt를 이용하면되는거아닌가싶어서요 카카오토큰은 왜받는지 잘 모르겠습니다
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
로그인 후, redirect 에서 error
localhost:8080 에서 login 페이지로 넘어가고, 로그인을 하면, error?cutomerParam=y 주소로 넘어갑니다. 리다이렉트는 문제없이 잘 된거 같은데 어디서 에러가 생격서 savedRequest 객체에 error가 저장되는지 도통 모르겠네요;; 로그인 직후 network
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberService에서의 Autowired
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]섹션 5 강의 중 자바 코드로MemberService와 MemberRepository를 스프링 Bean으로 등록 후에 MemberController에서 MemberService객체를 사용할 때 @Autowired 어노테이션을 사용했는데 MemberService에서 MemberRepository 객체를 사용할 때 @Autowired 어노테이션이 없던데 이유가 무엇인지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
실무에서도 패키지 구조는 학습과 같이 많이 사용하게 되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요!패키지구조에 관련하여 문의드립니다!강의에서는controllerservice ..패키지가 이렇게 나뉘어져있는데member - controller - serviceorder - controller - service...이런 패키지구조도 있어 질문드립니다!프로젝트, 기업마다 규칙이 다르겠지만보통 보편적으로 어떤 패키지구조를 사용하게 되나요??
-
미해결스프링 웹 MVC 완전정복
강의자료 오타
안녕하세요, 강의를 듣다가 강의 자료에 오타가 난 부분이 있어 글 올립니다.아래 [기존] 부분들을 [수정]으로 바꾸셔야 할 것 같습니다.감사합니다.-------------------------------------04. 서블릿 이해HttpServletRequest 기본[기존]https://github.com/onjsdnjs/servlet/tree/httpRequestServletApi[수정]https://github.com/onjsdnjs/servlet/tree/httpServletRequestApiHttpServletRequest - 요청 처리[기존]https://github.com/onjsdnjs/servlet/tree/httpRequestServletProsess[수정]https://github.com/onjsdnjs/servlet/tree/httpServletRequestProsessHttpServletResponse[기존]https://github.com/onjsdnjs/servlet/tree/httpResponseServletApi[수정]https://github.com/onjsdnjs/servlet/tree/httpServletResponseApiHttpServletResponse – 응답 처리[기존]https://github.com/onjsdnjs/servlet/tree/httpResponseServletProcess[수정]https://github.com/onjsdnjs/servlet/tree/httpServletResponseProcess
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
orderItems[0] 은 아직 단일주문만 가능하기에 인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요! 강의를 듣는 도중 궁금한게 있어 질문드립니다. <td th:text="${item.orderItems[0].item.name}"></td> <td th:text="${item.orderItems[0].orderPrice}"></td> <td th:text="${item.orderItems[0].count}"></td>부분에 [0] 인건 아직 단일 주문만 가능하기에 [0] 으로 하신건가요?개인적으로 변경하여 한 번에 여러 개의 주문이 가능하게 될 경우에는 [0] 하드코딩이 아닌 타임리프 반복문의 인덱스를 넣으면 되는건가요??
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
암호화 관련 질문
실무에서 설정 파일의 내용을 어떻게 관리하시는지 궁금하여 질문 드립니다. 제 생각엔 [ '평문' -> jasypt 암호화 -> keytool 암호화 ] 이 과정으로 서버에 설정 정보를 저장하는 것이 좋을 거 같은데, 사바사 일거 같지만.... 보통 이렇게 2번 암호화를 하는지 궁금하네요.