묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
localhost:8080 질문이요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.적용하고 실행하면 잘 나오는거 같은데웹페이지에서 실행하면안된다고 나옵니다. 버전은 지금 21로 다 맞춰서 했는데 오류가 납니다. 추가로 포트 9090으로 추가도 해서 열어봤는데 동일합니다.
-
미해결스프링 핵심 원리 - 고급편
빈 후처리기-적용 관련 질문
AppV1Config.class, AppV2Config.class를 BeanPostProcessorConfig 에서 주석처리하고아래와 같이 ProxyApplication 에서 import를 해도 정상 실행됩니다.맞는건가요? @Import({BeanPostProcessorConfig.class,AppV1Config.class, AppV2Config.class}) @SpringBootApplication(scanBasePackages = "hello.proxy.app") public class ProxyApplication { public static void main(String[] args) { SpringApplication.run(ProxyApplication.class, args); }
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Session ID의 저장 위치는 어디인가요?
서버가 받은 요청의 JSESSIONID가 A12345이고, 서버 측 HTTP Session의 사용자 {username: "john123"}의 JSESSIONID가 A12345라고 가정하겠습니다. 그럼 A12345 == {username: "john123"}인데, A12345라는 세션ID 요청을 받았을 때 john123이라는 사용자에 대한 정보를 제공해야 합니다. 이때 서버에서 Session ID를 저장하는 곳은 어디인가요?그 클래스는 아래와 같은 작업을 수행할 것입니다. public void addSession(String sessionId, HttpSession session) { sessions.put(sessionId, session); } public HttpSession getSession(String sessionId) { return sessions.get(sessionId); }
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
API 호출에 관해 질문드립니다 (내용보충)
안녕하세요. 현재 Rest Api로 백엔드 개발을 하고,View는 Html thymeleaf를 이용해 구현을 하려고 합니다. 리액트 등의 프레임워크를 사용하지 않는다면,@GetMapping으로 View단을 불러올 때,@RestController가 아닌 @Controller에서 불러와야하는데그렇다면 @RestController와 @Controller 둘 다 따로 만들어야 하는지 궁금합니다.예를 들어, 공지사항 전체 조회의 @RestController의 코드가// // 공지사항 전체 조회 // @GetMapping("/ypjs/board/notice/notices") // public Result findAll(@RequestParam int offset, @RequestParam int limit) { // List<Notice> noticeList = noticeService.findAll(offset,limit); // List<NoticeDto.NoticeApiDto> result = noticeList.stream() // .map(n -> new NoticeDto.NoticeApiDto(n.getNoticeId(), n.getNoticeTitle(), n.getNoticeContent(), // n.getNoticeCnt(), n.getNoticeDate(), n.getMember().getNickname())) // .collect(Collectors.toList()); // return new Result(result); // }라면,공지사항 전체 조회의 @Controller의 코드는이렇게 구현하면 되는건가요?+ 만약 이게 맞다면 @RestController의 GetMapping URL과 @Controller의 GetMapping URL이 겹치면 실행이 안되므로, @RestController의 URL을 /api/ypjs/board/notice/notices로 변경하면 될까요?그렇다면, 제 프로젝트에서 @RestController의 @GetMapping 코드는 더 이상 쓰지 않는 코드가 되는 것인데, 남겨놔도 되는건지 궁금합니다..그리고 View 연결만을 위한 @Controller 클래스를 따로 만드는 것이 현업에서도 많이 쓰이는 방법인지가 궁금합니다.----------------------------------------------------------------------------------------------------------------(질문 요약)1. 리액트 같은 프레임워크 없이 프로젝트를 Rest Api로 개발할 때, 화면만을 위한 @Controller 클래스를 따로 만들어도 되나요? 만약 이 경우에 GetMapping URL이 겹치면 안되니까 @RestController의 URL엔 /api/를 추가해서 겹치지 않게 하는 식으로 하나요?2. 다른 부분은 rest api로 개발하고, View 연결만을 위한 @Controller 클래스를 따로 만드는 것이 현업에서도 많이 사용하는 방법인가요?3. 만약 화면을 위해 @Controller 클래스를 만드는게 좋은 방법이라면, @RestController의 @GetMapping 코드는 더 이상 쓰지 않는 코드가 되는 것인데, 활용할 방법이 있을까요? + 남겨놔도 되는건가요?화면을 따로 개발하는 것이 아니라, 저처럼 같이 개발하는 경우 Rest api 개발을 하는것이 의미가 있는지 궁금합니다.Rest api 개발을 경험해보고 연습해보고싶어 백엔드단을 Rest api로 먼저 개발해서 완성하고, 프론트엔드는 프레임워크를 다루지 못해 html을 이용해 화면을 만들고 연결하는 식으로 했다!는 것이 Rest api로 프로젝트를 만드는 것에 대한 충분한 설명이 될 수 있을까요?
-
미해결스프링 부트 - 핵심 원리와 활용
webapps
인텔리제이로 말씀주신것처럼 배포하면왜 톰캣폴더의 webapps안에 아무것도 생성이 안될까요?그런데 프로젝트는 잘 실행됩니다..
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
기능 추가시 프론트 문제
안녕하세요! 강의를 따라하며 프로젝트를 진행했더니 어느덧 배포까지 끝냈는데요 다 해보고나니 대출목록 조회나 다른 추가 기능들을 혼자 구현해보고 싶다는 생각이 들었습니다. 제가 프론트에 대한 지식이 많이 부족하고 저희 프로젝트에서는 강사님이 주신 프론트를 그대로 가져다 사용하고있기 때문에 프론트가 어떤식으로 구성되어있는지 잘 모르겠습니다..ㅠ 혹시 저희 프로젝트에서 프론트 단을 어떻게 하면 수정하거나 추가할 수 있는지 알 수 있을까요? 아니면 변경이 어렵다면 백엔드 개발자가 프로젝트를 진행하면서 간단하게 프론트를 구현할 수 있는 방법이 있을까요? 감사합니다.
-
해결됨토비의 스프링 부트 - 이해와 원리
메타 어노테이션
안녕하세요.@Component 나 @Controller 또한 Target(ElementType.TYPE)으로만 설정되어있는데, 어떻게 @Configuration이나 @RestController 등과 같이 메타 어노테이션으로 설정될수있는건지 질문드립니다ㅜㅜ
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
BeanPropertySqlParameterSource
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]BeanPropertySqlParameterSource를 사용하려면해당 DTO나 도메인에 getter setter or @Data가 필수로 있어야 하는 게 맞겠지요?
-
해결됨스프링 시큐리티 완전 정복 [6.x 개정판]
@Role 어노테이션은 무슨 역할인가요?
@Bean 등록할 때 사용이 되던데왜 쓰는건지 궁금한데 제가 강의 보다가 놓친건지 ㅠㅠ 궁금합니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
정적화면 제공하는 상황
좋은 강의 감사합니다 !매번 똑같은 화면(안내문구나 안바뀌는 정보들?)을 제공할 땐 서버측에서 타임리프 사용하여 랜더링해주면 편한거고, 그 외에 정보가 매번 바뀌는 등 동적인 상황에선 클라이언트 측에서 랜더링하는게 좋다 이게 맞는거죵?? 현업에서도 이런게 어느정도 나뉘어있나요? A는 서버에서 타임리프로 내려주세요~ B는 클라이언트에서 CSR하세요~ 이런게 ??현업에서도 백엔드측에서 타임리프를 사용하여 SSR한다면 백엔드 개발자도 타임리프 관련 문법(html 등)을 어느정도 알아야 하나요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
자바와 스프링 버전 변경 방법
수업에 사용되는 파일의 스프링 버전을 변경하려면 어떻게 해야하나요?버전이 17일 때는 한글이 나오는데 그 외의 버전은 한글이 깨져서 나옵니다ㅠㅠ수업에 사용되는 파일의 버전은 자바 11, 스프링 2.4.4입니다.
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
Lomkob API 관련
혹시 지금은 pom.xml에 lombok 의존성만 추가해도 쓸 수 있는 거 같은데 맞나요?? eGovFrame-4.2.0 버전 입니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션에 보관하면 안되는 정보
세션 하이재킹이란 게 세션 id가 담긴 쿠키를 탈취하는 것인데, 이때 세션에 민감한 정보가 보관된 상태라면 사용자에게 노출할 가능성이 있어서 보관하면 안되는 것인가요?member_id와 같은 pk 값은 세션에 보관해도 되나요? (현재 레디스 세션을 사용 중입니다)
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Api 호출과 관련된 질문드립니다.
안녕하세요. 현재 Rest Api로 백엔드 개발을 하고,View는 Html thymeleaf를 이용해 구현을 하려고 합니다. 리액트 등의 프레임워크를 사용하지 않는다면,@GetMapping으로 View단을 불러올 때,@RestController가 아닌 @Controller에서 불러와야하는데그렇다면 @RestController와 @Controller 둘 다 따로 만들어야 하는지 궁금합니다.예를 들어, 공지사항 전체 조회의 @RestController의 코드가// // 공지사항 전체 조회 // @GetMapping("/ypjs/board/notice/notices") // public Result findAll(@RequestParam int offset, @RequestParam int limit) { // List<Notice> noticeList = noticeService.findAll(offset,limit); // List<NoticeDto.NoticeApiDto> result = noticeList.stream() // .map(n -> new NoticeDto.NoticeApiDto(n.getNoticeId(), n.getNoticeTitle(), n.getNoticeContent(), // n.getNoticeCnt(), n.getNoticeDate(), n.getMember().getNickname())) // .collect(Collectors.toList()); // return new Result(result); // }라면,공지사항 전체 조회의 @Controller의 코드는이렇게 구현하면 되는건가요?+ 만약 이게 맞다면 @RestController의 GetMapping URL과 @Controller의 GetMapping URL이 겹치면 실행이 안되므로, @RestController의 URL을 /api/ypjs/board/notice/notices로 변경하면 될까요?그렇다면, 제 프로젝트에서 @RestController의 @GetMapping 코드는 더 이상 쓰지 않는 코드가 되는 것인데, 남겨놔도 되는건지 궁금합니다..그리고 View 연결만을 위한 @Controller 클래스를 따로 만드는 것이 현업에서도 많이 쓰이는 방법인지가 궁금합니다. ----------------------------------------------------------------------------------------------------------------(질문 요약)1. 리액트 같은 프레임워크 없이 프로젝트를 Rest Api로 개발할 때, 화면만을 위한 @Controller 클래스를 따로 만들어도 되나요? 만약 이 경우에 GetMapping URL이 겹치면 안되니까 @RestController의 URL엔 /api/를 추가해서 겹치지 않게 하는 식으로 하나요?2. 다른 부분은 rest api로 개발하고, View 연결만을 위한 @Controller 클래스를 따로 만드는 것이 현업에서도 많이 사용하는 방법인가요?3. 만약 화면을 위해 @Controller 클래스를 만드는게 좋은 방법이라면, @RestController의 @GetMapping 코드는 더 이상 쓰지 않는 코드가 되는 것인데, 활용할 방법이 있을까요? + 남겨놔도 되는건가요?화면을 따로 개발하는 것이 아니라, 저처럼 같이 개발하는 경우 Rest api 개발을 하는것이 의미가 있는지 궁금합니다.Rest api 개발을 경험해보고 연습해보고싶어 백엔드단을 Rest api로 먼저 개발해서 완성하고, 프론트엔드는 프레임워크를 다루지 못해 html을 이용해 화면을 만들고 연결하는 식으로 했다!는 것이 Rest api로 프로젝트를 만드는 것에 대한 충분한 설명이 될 수 있을까요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
userdetail java 17 버전 못쓰는것같습니다.
@Bean public UserDetailsService userDetailService(){ UserDetails userDetails = User.withUsername ( "user" ) .password ( "{noop}1111" ) .roles ( "USER" ) .build ( ); return new InMemoryUserDetailsManager ( userDetails ); } // 어떻게 바꿔주면 해결이 될까요..
-
해결됨스프링 핵심 원리 - 기본편
NoUniqueBeanDefinitionException, UnsatisfiedDependencyException 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 김영한님의 스프링 강의를 듣던 도중 해결되지 않는 문제가 생겨 글을 남깁니다.전체 Test를 돌리던 중에 CoreApplicationTests에서 java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@2cc03cd1 testClass = hello.core.CoreApplicationTests, locations = [], classes = [hello.core.CoreApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@b91d8c4, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@4fd4cae3, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@2baa8d82, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@142eef62, org.springframework.boot.test.context.SpringBootTestAnnotation@4ec067d1], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]이라는 오류가 발생했습니다. 그래서 원인을 찾기 위해 로그를 읽어내려가던 중Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [/Users/sin-eunsu/study/core/out/production/classes/hello/core/member/MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository UnsatisfiedDependencyException, NoUniqueBeanDefinitionException때문에 오류가 생겼다는 로그를 발견했습니다. 해당 오류를 해결하기 위해 memberServiceImpl과 orderServiceImpl에 있는 Component어노테이션을 비활성화 처리를 하면 CoreApplicationTests를 제외한 다른 테스트에서 오류가 생깁니다.해당 로그들에 따르면 memoryMemberRepository, memberRepository 스프링 빈이 해당 테스트에서 2개가 발견되어 오류가 생겼다는 뜻같은데 어떻게하면 해결할 수 있나요?
-
미해결3. 웹개발 코스 [Enterprise Architecture(EA) X 전자정부프레임워크]
강의자료 중 프로젝트 파일 여는 방법
안녕하세요. 강의자료 중에 프로젝트 파일을 압축해주신게 있는데혹시 이걸 이클립스에서 열고 싶습니다. 그런데 아래 이미지처럼 경로설정후에 launch를 클릭하면시간이 지나도 프로젝트 파일이 열리지 않습니다.계속 기다려도 상태가 아래처럼 변하지 않습니다.혹시 이렇게 여는게 아닌가요? 그리고 인텔리제이에서도 이클립스처럼 톰캣서버 연결하고 빌드하고 실행하는게 가능한지 방법도 궁금합니다. 감사합니다!
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
afterCompletion()은 완전히 응답이 나가고 난 이후에 호출된다는 의미
[질문 내용]강의에서 afterCompletion()은 완전히 응답이 나가고 난 이후에 호출된다고 하신 의미가 궁금합니다.아래 그림으로 생각하면, 클라이언트에게 원래 보내고자 하는 응답이 WAS를 통해 클라이언트 쪽으로 보내진 다음, 그다음에 또 afterCompletion()이 호출되면서 예외가 WAS 쪽으로 보내진다는 의미인 건가요? 만약 afterCompletion() 코드 내에서 response에 뭔가를 넣어서 보내려고 하면, 클라이언트 쪽으로 원래 응답 + afterCompletion()으로 생긴 응답 2개가 보내지는 건가요? 제가 잘못 이해한 것 같아서 질문드립니다! +) 그림에서 X 그림이 총 4개인데 postHandle()에 있는 X는 그냥 postHandle()이 호출 안 된다는 의미로의 X이고, 나머지는 예외를 그냥 X라는 그림으로 표현했다고 생각하면 되는 거죠? X를 예외라고 생각하면 될 것 같았는데 postHandle()에도 있으니깐 postHandle()에도 예외가 전달되는 거처럼 보여서, 혹시 몰라서 질문드립니다!
-
해결됨스프링 핵심 원리 - 기본편
인터페이스 타입 변수에 인터페이스가 담길 수 있나요?
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("애플리케이션 빈 출력하기") void findApplicationBean(){ String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { // 이부분 질문 BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName); //이하 생략.. } }스프링 빈 중에서 애플리케이션 빈만 출력하는 예제입니다 BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName); 위 코드에서 변수 beanDefinition 의 타입인 BeanDefinition는 인터페이스니까 ac.getBeanDefinition(beanDefinitionName)의 리턴 타입이 BeanDefinition의 구현체일 줄 알았는데 매서드를 따라가보니 제일 상위에서 map.get()이 리턴되는데 그 값이 구현체가 아닌 BeanDefinition인터페이스 자체가 리턴되더라구요 Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(256);BeanDefinition bd = beanDefinitionMap.get(String beanName)bd 가 리턴되게 되어있음 즉 BeanDefinition 인터페이스 타입인 bd가 메서드를 타고 내려오면서 질문한 부분인BeanDefinition beanDefinition 에 담기게 되는 걸로 확인이 되었는데인터페이스에 구현체가 아닌 인터페이스가 담길 수 있나요? 아니면 제가 뭔가 잘못 알고있거나 잘못 확인한 걸까요?
-
해결됨Practical Testing: 실용적인 테스트 가이드
패키지 구조
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강사님 강의를 수강 중 질문이 생겨 질문드립니다.강의 프로젝트의 패키지 구조를 보면 spring 속 api와 domain으로 나누었는데 이는 헥사고날 아케텍쳐와 연관이 있는 건가요??제 생각엔 domain으로만 구별을 해서 한 domain안에 service, controller, entity, repository를 생성했습니다.