빌더패턴 질문있습니다!
해결됨
떠먹여주는 객체지향 디자인 패턴 - by 얄코
2분대에 나오는 PizzaBuilder static내부 클래스에 기본 생성자가 없으면 뒤에 나오는 main문에서 new Pizza.PizzaBuilder()가 가능한가요??
- java
- 객체지향
- 디자인-패턴
172만명의 커뮤니티!! 함께 토론해봐요.
해결됨
떠먹여주는 객체지향 디자인 패턴 - by 얄코
2분대에 나오는 PizzaBuilder static내부 클래스에 기본 생성자가 없으면 뒤에 나오는 main문에서 new Pizza.PizzaBuilder()가 가능한가요??
미해결
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@ResponseBody나 HttpEntity를 사용해서 뷰를 렌더링하지 않는 경우에도 HandlerAdapter에서 DispatcherServlet으로 ModelAndView를 반환하나요? 만약 반환한다면 ModelAndView에는 그냥 빈 값이 들어 있는건가요? 빈 값이 들어 있으면 DispatcherServlet은 이게 View Path가 빈 값인지 아닌지에 따라 View를 렌더링 할지 말지 결정하는 건가요??
해결됨
스프링 DB 2편 - 데이터 접근 활용 기술
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 6. 데이터 접근 기술 - 스프링 데이터 JPA.pdf (v20240526) 4페이지에 나온 두 링크를 눌러도 주소가 바뀌어서 원래 페이지로 이동하지 않습니다. https://docs.spring.io/spring-data/jpa/reference/jpa/query-methods.html#jpa.query-methods.query-creation https://docs.spring.io/spring-data/jpa/reference/repositories/query-methods-details.html#repositories.limit-query-result 이 링크로 바뀐 것 같습니다.
미해결
스프링 시큐리티 OAuth2
제가 만든 두 서버 사이트끼리 sso 인증으로 로그인을 공유하려고 합니다. 이 강의에 그것에 관한 내용이 있나요? 있다면 몇강쯤에 있나요? 없다면 이 강의를 어떤식으로 활용해야 구현할 수 있을까요 ?
미해결
안녕하세요! 엔티티 -> DTO, DTO -> 엔티티 변환 모두 STRICT 전략을 사용하는 modelMapper.map을 사용하고있습니다. DTO를 쓰는 이유 -> 엔티티가 바뀌어도, dto는 그대로이므로 api 스펙이 바뀌지않음. 그런데 STRICT 전략을 쓰는 modelMapper를 사용하면, dto와 엔티티 필드이름이 정확하게 일치해야하므로 엔티티가 바뀌면 dto 필드도 바뀌어야함. 이렇게 되면 엔티티 변경 시에 api 스펙이 바뀌지않는다는 장점이 없어지게됨 이런 생각이 들었는데, 그럼 STRICT 전략은 지양해야하나요, 아님 다른 방법이 있는 것인가요?
해결됨
실전! 스프링 데이터 JPA
안녕하세요. 좋은 강의 항상 감사합니다. JPA 와 디비를 배우면서 적용 하는 과정에서 궁금한게 생겼습니다. @Transactional public Post getPostDetail(Long postId) { Post post = postRepository.findById(postId) .orElseThrow(() -> new CustomException(ErrorCode.POST_NOT_FOUND)); post.incrementViewCount(); // 조회수 증가 return post; } 상세글 조회 시 조회수가 +1 되는 간단한 로직을 가정하겠습니다. 트래픽이 크다고 가정 할 시 해당 로직 대로 하면 조회 시 마다 DB에 부하가 예상되서 질문 드립니다. 해당 로직대로 해도 DB에 크게 부하를 주지 않는 수준인가요? Redis를 써서 조회수 만 따로 캐시로 저장을 한다면 DB랑 데이터가 정합하지 않을 것으로 예상됩니다. 만약 조회수가 중요한 서비스라면 db 락을 이용하여 성 능 저하를 감안 하고 하시는지.. 실무에선 어떻게 처리하시는 지 궁금합니다
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 연관관계의 주인은 일반적으로 외래키가 있는 쪽에 설정하는 것이 좋다고 알고 있습니다. 강의자료에서 "일대다 단방향 관계에서는 1 쪽이 연관관계의 주인이 된다." 라는 것은 "항상" 참인건가요? 아니면 강의의 2:11 처럼 Member 가 Team 을 참조할 일이 없는 특수한 경우에는 "1쪽을 연관관계의 주인으로 둘 수도 있다" 라는 것인가요? 만약, Member 엔티티에서 Team 을 참조하는 일대다 양방향인 상황이 생긴다면, "여전히 1쪽을 연관관계의 주인으로 둘 수도 있지만, 장단점을 고려했을때 다쪽을 연관관계의 주인으로 두는 다대일 양방향을 사용하는 것이 좋다 " 라고 이해하였는데 맞는 말일까요?
미해결
김영한의 실전 자바 - 기본편
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 강의를 듣다가 궁금한게 생겨서 질문 드립니다. 앞에 수업에서는 부모 클래스는 자식 클래스가 누군지 모른다고 했었고 부모가 자식의 기능을 사용하려면 다운 캐스팅을 해서 사용 가능하다고 하셨는데, 이 코드의 메서드 파라미터 부분 (Animal animal)에서 Dog, Cat, Caw가 어떻게 상속 받은 자식 클래스인 걸 알고 작동하는지 궁금합니다ㅠㅠㅠㅠ package poly.ex2; public class AnimalPolyMain1 { public static void main(String[] args) { Dog dog = new Dog(); Cat cat = new Cat(); Caw caw = new Caw(); soundAnimal(dog); soundAnimal(cat); soundAnimal(caw); } //동물이 추가 되어도 변하지 않는 코드 private static void soundAnimal(Animal animal) { System.out.println("동물 소리 테스트 시작"); animal.sound(); System.out.println("동물 소리 테스트 종료"); } }
미해결
스프링 DB 2편 - 데이터 접근 활용 기술
[질문 내용] ItemMapper가 자동으로 빈으로 등록되는 이유가 뭔가요?
미해결
김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
수강하고 있는 좋은 강의의 내용이 명확히 전달되기를 바라는 마음으로 오타 제보 드립니다. 생산자 소비자 문제1.pdf [오타] 소비자 스레드는 데이터를 소비자 고, [변경] 소비자 스레드는 데이터를 소비하고,
미해결
김영한의 실전 자바 - 중급 2편
불변 객체는 내부 필드에 변경이 생길 경우 새로운 객체를 반환해줘야 한다고 배웠습니다. 제네릭 타입은 타입 소거 문제 때문에 new 키워드를 사용할 수 없는데... 이 경우 제네릭과 불변 객체는 공존할 수 없는 건가요? 아래 코드와 같이 실습을 해봤는데 주석 처리한 부분을 어떻게 해결해야 할지 잘 모르겠습니다 ㅠㅠ public class Box<T extends Animal> { private final T value; public Box(T value) { this.value = value; } public T get() { return value; } public Box<T> withName(String name) { //이 부분을 어떻게 처리해야할까요..? } } public class Animal { private final String name; private final int size; public Animal(String name, int size) { this.name = name; this.size = size; } public Animal withName(String name) { return new Animal(name, size); } public class Dog extends Animal { public Dog(String name, int size) { super(name, size); } @Override public Dog withName(String name) { return new Dog(name, getSize()); } }
미해결
실전! 스프링 데이터 JPA
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 잘 보고 있습니다. 컨트롤러에서 Repository에 바로 의존성이 있는 방식으로 사용하는 예제를 알려주셨는데 간단한 예시를 들어주시느라 사용하신 패턴이신가요? 아니면 어차피 페이징 기능은 레포지토리 단의 간단한 메서드로 충분히 수행되므로 서비스 레이어를 통한 매핑이 불필요해서 그러신건가요??
미해결
실전! Querydsl
@PersistenceUnit EntityManagerFactory emf; @Test public void fetchJoinNo() { em.flush(); em.clear(); Member findMember = queryFactory.selectFrom(member).where(member.name.eq("kim")).fetchOne(); boolean loaded = emf.getPersistenceUnitUtil().isLoaded(findMember.getCart()); assertThat(loaded).as("패치조인미적용").isFalse(); } // select // m1_0.member_id, // m1_0.city, // m1_0.street, // m1_0.zipcode, // m1_0.cart_id, // m1_0.member_login_id, // m1_0.member_login_pw, // m1_0.name // from // member m1_0 // where // m1_0.name=? // -> 분명히 fetch join 미적용인데 select 절에 연관 entity 가 같이 조회되는 이유를 모르겠습니다. 현재 Cart 엔티티는 member 와 @OneToOne 관계이고 @FetchJoin.LAZY 로 설정되어 있습니다.
미해결
스프링 시큐리티 OAuth2
안녕하세요 강사님 OAuth2 로그인을 구현하고 회원 탈퇴를 위해 구글과 카카오의 unlink API를 호출하려는데, 소셜 로그인 과정을 시큐리티가 자동으로 처리해주고 있어서 API 호출에 필요한 토큰이 관리되고 있지 않은 상황입니다. 이럴 때 어떤 방식으로 토큰을 받아야 하는지 궁금합니다. 제가 생각해본 방법은 다음 두가지가 있습니다. 첫 번째 방법 : 인증 코드를 직접 요청하고, 반환 받은 인증 코드로 토큰 또한 직접 요청 두 번째 방법 : 설정해둔 리다이렉트 URI에 대한 처리를 직접 구현 후, 인증 코드를 받고, 해당 인증 코드로 토큰을 직접 요청 혹시 이중에 맞는 방법이 있는지, 아니면 시큐리티의 자연스러운 흐름안에서 토큰을 받을 방법이 있을까요? 보통 어떤식으로 토큰 값을 받는지 궁금합니다!
해결됨
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
안녕하세요 @Component @RequestMapping public class SpringMemberFormControllerV1 { @RequestMapping("/springmvc/v1/members/new-form") public ModelAndView process() { return new ModelAndView("new-form"); } } @RequestMapping을 클래스 레벨에 사용하는 경우 @Component + @RequestMapping 은 @Controller와 동일하게 동작하고, 해당 클래스를 컨트롤러로 등록한다고 하셨는데 저렇게 해보니까 컨트롤러로 등록하지도 않고, 제대로 동작도 하지 않네요.. @RequestMapping + @Component @Controller 브레이크 포인트를 저기다 저기다 거는게 맞는지는 모르겠는데 handler랑 method 정보가 두 개가 다르게 나오네요 ㅜ
해결됨
실전 jOOQ! Type Safe SQL with Java
안녕하세요 강사님. jooq 강의 잘 듣고 있습니다. 현재 update 부분 강의를 들으면서 실습해보고 있는데 Actor 에 setter 메소드들이 없어서 dao 를 통한 update를 하는데 다소 어려움이 생겼습니다. insert 의 경우는 생성자에 데이터를 넣어서 잘 넘어갔는데, update 에서는 setter 가 없으니까, insert 한 값을 Actor 객체로 반환 받아서 그 객체에 있는 setter 를 이용해 update 하는 방식이 불가능하다 보니 "setter 는 어디로 갔는가?" 생각이 들더라구요. 실습중인 jooq 버전은 3.19.5 이고, 아래는 Actor pojo 파일 구조 입니다.
미해결
스프링 DB 1편 - 데이터 접근 핵심 원리
레포지토리의 update, find.. 등의 메서드를 실행할 때 getConnection 의 DataSourceUtils 메서드를 통해 커넥션을 가져오는데요. 여기서 트랜잭션 동기화 매니저에 커넥션이 있으면 해당 커넥션을 가져오는 설명을 잘 들었습니다. 그런데 트랜잭션 매니저는 DataSourceTransactionManager 의 인스턴스고 DataSourceUtils 는 static util 클래스인데 이 사이에 트랙잭션 동기화 매니저가 어느 위치에 있는지 궁금합니다.
미해결
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
package hello.config; import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.web.servlet.LocaleResolver; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.i18n.CookieLocaleResolver; import org.springframework.web.servlet.i18n.FixedLocaleResolver; import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; import org.springframework.web.servlet.i18n.SessionLocaleResolver; import java.util.Locale; @Configuration public class LocalConfig implements WebMvcConfigurer { @Bean public LocaleResolver localeResolver() { return new SessionLocaleResolver(); } @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setDefaultEncoding("UTF-8"); messageSource.setBasenames("messages", "error"); return messageSource; } @Override public void addInterceptors(InterceptorRegistry registry) { LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor(); localeChangeInterceptor.setParamName("locale"); registry.addInterceptor(localeChangeInterceptor); } } 따로 LocalConfig 클래스를 구현했고 <a href="?locale=ko">한국어</a> | <a href="?locale=en">English</a><br/> 각 폼마다 한국어랑 영어를 선택할수 있게했는데 언어가 변경이안됩니다.messages 프로퍼티스도 다 적용했고 form에서 타임리프로 적용도했습니다. 크롬설정으로 언어 우선순위를 바뀌면 바뀌는데 . 이방식으로는 변하지않아서요
해결됨
[인프런 X VMware Tanzu] Spring Boot 밋업 with Josh Long
한국어 더빙이 안되는것 같은데요~ 다른 언어는 다 되는데 한국어를 선택하면 영어로 나오네요~
미해결
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@WebMvcTest(StudentResgisterController.class) class StudentResgisterControllerTest { private MockMvc mockMvc; @MockBean private StudentRepositoryImpl studentRepository; private Student testStudent; @BeforeEach void setUp() { mockMvc = MockMvcBuilders.standaloneSetup(new StudentResgisterController(studentRepository)).build(); testStudent = new Student( "student1", "student1password", "student1", "student1@gmail.com", 10, "student1comment"); } @Test void studentRegisterForm_ShouldReturnStudentRegisterView() throws Exception { mockMvc.perform(get("/student/register")) .andExpect(status().isOk()) .andExpect(view().name("studentRegister")) .andExpect(model().attributeExists("student")); } 이런식으로 테스트코드랑 관련된 학습은 따로 강의가없을까요?