inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

객체 생성을 막기위한 abstract 클래스 선언

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

안녕하세요 영한님! JDBC 이해 강의를 듣던 중 사소한 거지만 궁금한 점이 생겨서 질문드리게 되었습니다. ConnectionConst 객체의 경우, static 멤버만을 저장하는 객체이기 때문에 의도치 않은 외부로 부터의 객체 생성을 막고자 abstract 추상 객체로 선언해 주셨다고 이해하였는데요. public abstract class ConnectionConst { public static final String URL = ... .... } 단순히 객체 생성만을 막고자 한다면 abstract이 아닌 private 생성자를 선언해주는 방법도 있을것 같습니다. 혹시 두 방식의 장단점이나 차이점이 있을까 해서 질문 드려봅니다!

  • spring
Kim Chae Eun 댓글 1 좋아요 3 조회수 352

주문 서비스를 변경하지 않아도 된다라고 하는데요

미해결

스프링 핵심 원리 - 기본편

주문과 할인 도메인 설계 강의 8:00 부터입니다. 회원을 메모리가 아닌 실제 DB에서 조회하고, 정률 할인 정책을 지원해도 주문 서비스를 변경하지 않아도 된다고 하시는데 이전 강의 중 회원 도메인 설계에서 문제점으로 OCP, DIP 전부 다 위반한다고 하셨습니다. 이렇게 위반을 하니까 스프링을 사용해야 하는 것 같고요. 이 강의도 마찬가지로, OrderServiceImpl에서 private final MemberRepository memberRepository = new MemoryMemberRepository(); 를 사용함으로써 '회원을 메모리가 아닌 실제 DB에서 조회'하면 OrderServiceImpl 파일의 내용도 변경되어야 한다고 생각합니다. '회원을 메모리가 아닌 실제 DB에서 조회하고, 정률 할인 정책을 지원해도 주문 서비스를 변경하지 않아도 된다' 틀린 말 아닌가요?

  • oop
  • spring
이기정 댓글 1 좋아요 1 조회수 597

시큐리티 필터보다 MyFilter1()을 먼저 실행하는 이유가 궁금합니다.

해결됨

스프링부트 시큐리티 & JWT 강의

안녕하세요 강의 잘 듣고있습니다. 감사합니다. 강의를 듣다가 MyFilter1()이 시큐리티 필터보다 먼저 실행되야 하는 이유가 궁금해서 질문드립니다. 항상 잘 듣고 있습니다. 감사합니다.

  • spring
  • Spring Security
  • jwt
magh 댓글 2 좋아요 1 조회수 536

쓰레드로컬관련 질문이 있습니다.

해결됨

스프링 핵심 원리 - 고급편

안녕하세요. 수업을 듣다가 궁금하여 질문드립니다.. FiedlLogTrace는 빈으로 등록하여 작동하니, 동시성 문제가 있어 쓰레드 로컬을 사용하였는데 @Controller, @Service 이러한 것들도 빈으로 등록이 되는 것인데 이러한 것들은 동시성 문제와 관련이 없는건가요? 바보같은 질문이지만.. 감사합니다.

  • spring
  • 디자인-패턴
레오나 댓글 1 좋아요 2 조회수 396

중첩 bean validation 질문입니다.

미해결

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

안녕하세요? 지난번에 Collection Bean 검증 관련해서 질문 글을 올렸었어요. 지난번 글은 아래 링크를 통해서 보실수 있습니다. https://www.inflearn.com/questions/639710 Collection Bean 검증까지도 잘 되었고 1차 중첩 검증 까지는 잘 되었었습니다. 코드를 보여드리자면... @Component @Slf4j @RequiredArgsConstructor public class CollectionValidator implements ConstraintValidator<CustomValid, Object> { private final ElementValidator validator; @Override public void initialize(CustomValid constraintAnnotation) { ConstraintValidator.super.initialize(constraintAnnotation); } @Override public boolean isValid(Object values, ConstraintValidatorContext context) { log.info("validator 로직 실행 {}", values.toString()); DataBinder dataBinder = new DataBinder(values); BindingResult bindingResult = dataBinder.getBindingResult(); //bindingResult를 생성해서 전달 validator.validate(values,bindingResult);//필드에 선언된 어노테이션에 따라 검증 if(bindingResult.hasErrors())return false; return true; } }//지난번 글에서 David님의 조언에 따라 수정되었습니다. @Data public class Item { @CustomValid private PatternDto pattern;//내부에는 phonNumber라는 필드와 @Pattern으로 전화번호 형식인지 검사합니다 public Item() { } } @PostMapping("/nested") public Object nested(@RequestBody @Validated Item item){ return item; } 여기까지는 검증이 잘 되었습니다. 즉 POST: /nested 로 아래 형식으로는 잘 검증이 되었습니다. { "pattern" : { "phoneNumber":"01045309731" } } 하지만 PatternDto안에 새로운 객체 ItemValid를 넣고 검증 어노테이션을 추가하게 되면 ItemValid에 대한 검증이 되지 않아요. 즉, 정리하자면 POST: /nested url로 Item 객체에 선언된 PatternDto pattern 필드 객체는 검증이 잘 되지만, PatternDto 클래스 안에 있는 ItemChild의 @Min(10) value에 대한 검증은 이뤄지지 않네요. @Data @NoArgsConstructor public class ItemChild { @Min(10) private Long value; } @Data @EqualsAndHashCode @NoArgsConstructor public class PatternDto { @Pattern(regexp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$", message ="잘못된 번호 형식입니다.") private String phoneNumber; @CustomValid private ItemChild itemChild; } 이렇게 domain을 수정 후에 다음과 같이 요청을 보내면 { "pattern" : { "phoneNumber":"01045309731", "itemChild":{ "value":10 } } } 아래 사진과 같은 에러가 나옵니다. 구글링 해도 잘 안나오는데 어떻게 해결할 수 있을까요?

  • MVC
  • spring
기혁 댓글 1 좋아요 0 조회수 500

연관관계 메서드

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

왜 연관관계 메서드에서 어떤 건 set이라고 하고 어떤 건 add라고 하나요?? ex. setMember() / addOrderItem() //== 연관관계 메서드 ==// public void setMember(Member member) { this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); orderItem.setOrder(this); } public void setDelivery(Delivery delivery) { this.delivery = delivery; delivery.setOrder(this); } setMember는 member.getOrders()라고 하고 setDelivery()는 setOrders()로 다른 이유는 무엇인가요?? 여기서 this는 order를 의미하는 걸까요??

  • java
  • JPA
  • spring
  • spring-boot
  • 웹앱
jjin 댓글 1 좋아요 2 조회수 508

질문이 있습니다.

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

private List<OrderItemQueryDto> findOrderItems(Long orderId) { return em.createQuery( "select new jpabook.jpashop.repository.query.OrderItemQueryDto(oi.order.id, i.name, oi.orderPrice, oi.count)" + " from OrderItem oi" + " join oi.item i" + //이걸 왜 하는거지 => 실 객체바꿀라고? " where oi.order.id = :orderId", OrderItemQueryDto.class ).setParameter("orderId", orderId).getResultList(); } 위 코드에서 "join oi.item" 하는 이유가 궁금합니다. OrderItem엔 Item이 있으니 i.name 대신 oi.item.name하여도 될 것 같은데 굳이 Item도 조인하는 이유가 있을까요? 제가 생각한 결과로는 Item을 조인하여 i.name할 때 Item이 프록시에서 실 객체로 바뀌니 이것을 위해 조인하였을 것 같은데 맞을까요?

  • java
  • JPA
  • spring-boot
  • spring
김형민 댓글 1 좋아요 0 조회수 287

분산락 관련 질문입니다.

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

안녕하세요 좋은 강의 감사드립니다. 이전까지 알아보았던 락들은 분산락이 아닌 것인가요? 만약 아닌 것이라면 다중 서버 환경에서 동시성 문제를 해결하기 위해서는 위의 방법들이 아닌 분산락을 사용하여야 하는 것인지 궁금합니다. 추가로 동시성 관련 질문이 하나 있습니다. 다중 서버 환경에서 게시판 등에서 조회수 기능을 동시성 문제 없이 해결하고 싶으며, 다음과 같이 구현하고자 합니다. (조회수라 어느정도 누락되어도 상관 없다고 하실 수 있겠지만, 목표는 하나도 누락되지 않게 하는 것입니다!) 조회 요청이 들어오면 레디스에 조회수 증가분을 올린 이후, 특정 시간마다 배치처리를 통해 반영하고자 합니다. 이때 다음 두 의문점이 있습니다. 먼저 다중 서버 환경에서 레디스 증가분을 올리는 경우, 이 경우에도 동시성 문제가 발생할 수 있을 것 같습니다. 이를 해결하기 위해서는 이곳에도 분산락을 걸거나 increment()를 사용하여 동기적으로 처리해야 할 거 같은데 저의 생각이 맞는 것인지, 맞다면 다른 방법은 없는지 궁금합니다. 두번째는 레디스 조회수 증가분을 배치처리를 통해 반영시키는 경우, 해당 작업 사이에 조회수 증가가 되어버리면 해당 증가분은 누락될 것 같습니다. 이를 해결하기 위해서는 배치처리를 할 때 레디스에 Lock을 걸어야 할 것 같습니다. 그런데 그렇게 된다면, 배치처리가 진행되는 그 순간동안은 레디스가 블로킹되어 있기에 게시글 조회가 이루어지지 않을 것 같습니다. 이정도는 감수하고 사용하거나, 혹은 카프카 등을 활용하여 이벤트로 처리하는 방법도 있을 것 같은데, 이러한 방법이 모두 사용 가능한 것인지, 더 나은 방법은 없는지 궁금합니다. 너무 많은 질문을 하는 것 같아 죄송합니다. 좋은 강의 정말 감사합니다.

  • spring
  • java
  • 동시성
댓글 1 좋아요 -2 조회수 902

dto 설계시 궁금증

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

위와같이 Form의 필드가 4개라고 했을 때 각각을 입력하거나 입력하지 않는 경우 총 2^4 = 16개입니다. 그렇다고 하면 dto에 입력 경우의 수에 따른 변경감지 로직을 총 16개 작성해 두어야하는건가요? 어떻게 설게를 해야하는지 궁금합니다.

  • java
  • spring-boot
  • JPA
  • 웹앱
  • spring
taeu kim 댓글 1 좋아요 1 조회수 386

createMember, createItem 메서드

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

테스트 클레스에 createMember, createBook 메서드를 만들었는데 이걸 domian에 생성하고 기본 생성자를 protect로 만들어놓으면 OrderItem에서 했던 방식처럼 더 나은 방식인건가요??

  • JPA
  • java
  • spring-boot
  • spring
  • 웹앱
댓글 1 좋아요 0 조회수 430

/orders에서 화이트라벨페이지가 뜹니다..

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

짧은 지식으로 추측컨데, html파일에 문제가 있는것으로 판단해 몇차례 확인 후 복붙을 시도해보았습니다 매핑을 잘못한것인가 컨트롤러도 수차례 확인하였고... 혹시 관련된 비지니스로직에서 데이터를 잘못 불러오는것인지,, 데이터를 백업해두고, 강의 초반에 있는 소스코드를 통해 java 부분과 templates을 통채로 복사해보았음에도, 해결이 되지 않습니다. 최대한 혼자서 해결하려 했으나... 도저히 해결방안이 떠오르지 않아서 질문드립니다. 어째서 이러한 문제가 발생하는것일까요...?ㅜㅜ 하단에 구글드라이브 링크 첨부해두었습니다. 도와주세요...ㅠㅠ 야생형 코스로 활용 -> 기본 -> 활용 단계로 복습하는 시점이라..(1회차에선 멀쩡히 넘겼던 부분을 2회차때 도저히 못고치는 기현상...... ㅜㅜ) 아티펙트, 그룹명이 jpabook2 , jpashop2 로 설정되어 있습니다. 이점 양해 부탁드립니다.. https://drive.google.com/file/d/1gY3cQKM2yq8SsObwAMAbk3gKOScsx6Jp/view?usp=sharing

  • JPA
  • 웹앱
  • spring-boot
  • spring
  • java
하나 댓글 1 좋아요 1 조회수 443

테스트코드 작성시 메소드

미해결

스프링 핵심 원리 - 기본편

MemberServiceTest 코드를 작성할 때 영한님 코드를 보면 join 메소드를 default로 선언하시고 실행하고 정상적으로 테스트에 성공하셨습니다. 하지만 제 환경에서는 에러가 발생하네요 해당 에러코드를 확인 후 join 메소드를 public으로 선언하니 정상적으로 테스트에 성공했습니다. 제가 아직 JUnit에 대한 이해가 충분하지 않지만 혹시 어떤 원인 때문에 package-private 메소드인 join에 접근하지 못하는지 궁금합니다. 혹은 어떤 키워드로 검색해보면 좀 도움이 될까요? 감사합니다.

  • oop
  • spring
댓글 1 좋아요 1 조회수 330

커스텀 익셉션을 만들어볼려고 합니다.

미해결

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

@Data @AllArgsConstructor public class ErrorResult { private String code; private String message; private Map<String, Object> map; } @Slf4j @RestControllerAdvice public class ExControllerAdvice { @ExceptionHandler public ResponseEntity<ErrorResult> userExHandler(UserException e, Map<String, Object> map) { log.error("[exceptionHandler] ex", e); ErrorResult errorResult = new ErrorResult("USER-EX", e.getMessage(), map); return new ResponseEntity(errorResult, HttpStatus.BAD_REQUEST); } } public class UserException extends RuntimeException { public UserException() { super(); } public UserException(String message) { super(message); } public UserException(String message, Throwable cause) { super(message, cause); } public UserException(Throwable cause) { super(cause); } protected UserException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); } } 이렇게 만들고 컨트롤러에서 사용을 할려고 ... Map<String, Object> returnMap = new HashMap<>(); returnMap.put("errorTitle", "titleMsg"); throw new UserException("ERROR", returnMap); ... 이런식으로 만들었는데 UserException 클래스에서 두 번째 파라미터로 받는 부분이 Throwable 타입이라 오류가 발생되는데.. 혹시 두번째 파라미터에 맵이나 리스트나 String등 원하는 값을 받아서 ResponseEneity 타입으로 보내줄려고 하면 어떻게 수정을 해야할까요? UserException을 아래처럼 수정을 했는데 public UserException(String message, Map<String, Object> map) { super(message); this.map = map; } 포스트맨으로 테스트를 해 보면 원하는 에러코드가 출력되는게 아니라 기본적인 오류코드가 출력이 되어버리네요..

  • spring
  • MVC
인프러너 댓글 1 좋아요 2 조회수 270

Bean Validator 적용 범위

미해결

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

안녕하세요. 영한님 항상 강의 잘 보고 있습니다. 현재 강의에서는 모든 예제가 Thymeleaf 기준으로 진행되고 있는데, 현재 Bean Validator 기술이 다른 뷰 템플릿이나 / 리액트에는 적용되지 않는 것인지 궁금합니다. 만약 적용되지 않는다면 리액트와 스프링 부트를 활용한 프로젝트를 진행할 때 어떠한 방향으로 예외처리를 진행해야 할지 궁금합니다!

  • MVC
  • spring
Gugbab2 댓글 1 좋아요 0 조회수 356

args관련해서 질문있습니다!.

해결됨

스프링 핵심 원리 - 고급편

안녕하세요 항상 좋은 강의 감사합니다. 전 강의 args와 현재 강의를 듣고 제가 이해를 잘 하지 못한 것 같아 질문 하나 드립니다. 해당 강의에서 " args, @args, @target은 실제 객체 인스턴스가 생성 되고 실행될 때 어드바이스 적용 여부를 확인할 수 있다. " 고 하셨습니다. 1.전 강의 args에서는 spring을 통한 테스트가 아니었기 때문에 모든 스프링 빈에 AOP를 적용 하려는 것을 생각하지 않아도 되는게 맞을까요? 2.args를 테스트 할때는 왜 스프링으로 빈 등록을 할 필요가 없었을까요? String, Object는 java.lang은 이미 가지고 있고, args(), args(..), args(*)등은 인스턴스 정보가 필요 없고 만약 Custom한 객체 args(Parent)같은 타입이 들어간다면 자동으로 스프링 동작이 필요한 걸까요? 기초적인 질문이라 죄송합니다.

  • spring
  • 디자인-패턴
이북자 댓글 1 좋아요 1 조회수 366

Collection Bean 검증 질문입니다

해결됨

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

안녕하세요! 영한님! 항상 강의 잘 보고 있습니다. 사실은 영한님 팬이기도 해요. 아무튼 제가 며칠 계속 고민하던 부분이 있어요. 제 목표는 컬렉션 타입과 상관 없이 컬렉션 안에 선언되어 있는 객체의 Bean Validation을 수행하고 싶어요. @RequestBody @Validated List<ItemSaveForm> 를 사용하게 되면 ItemSaveForm에 대한 검증이 아닌 List에 대한 검증 처리가 되더라고요. 그렇다고 List<@Validated ItemSaveForm> 는 컴파일 에러가 납니다. 물론 저 스스로 해결하고자 많은 곳을 돌아 다녀 보았고 찾아낸 방법은 Validator를 구현한 객체(CollectionValidator)를 만들어서 validate 메서드 구현 을 했습니다. 이후 ItemController에서 CollectionValidation 를 주입 받아 collectionValidator.validate(itemList, bindingResult);를 통해서 검증 처리를 하는 법을 알아냈습니다. 하지만 모든 Collection 마다 주입과 collectionValidator.validate 코드를 넣는게 비효율적이라 생각해서 어노테이션으로 만들거나 인터셉터에서 처리하고 싶었습니다. 인터셉터에서 처리하고 싶었지만 CollectionValidation의 validate 메서드는 Errors 객체를 인자로 받는데 HandlerMethodArgumentResolver의 resolveArgument인자에서 errors 객체를 뽑아낼 방법이 안보이네요. 어노테이션으로 만들고자 한 부분은 어노테이션 안에 Errors 객체를 선한 할 수가 없어서 CollectionValidator를 불러낼 수가 없었습니다. 다른 해결 책이 있을 까요? 아니면 제가 보지 못한 부분이 있었던 걸까요? 혹시 결국 스프링 입문때 잠시 다루었던 AOP를 통해서만 해결할 수 있는 걸까요? 어노테이션 만들기를 검색하다보니 AOP를 결국 다뤄야 하더라고요 ㅜㅜ 아래 제 코드와 함께 올리겠습니다. @Data public class PatternDto { //이 어노테이션에게 검증을 맡기고자 합니다. @Pattern(regexp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$", message ="잘못된 번호 형식입니다.") private String phoneNumber; } @RestController public class ValidationItemApiController { //private final CollectionValidator validator; @PostMapping("/list") public Object addList(@RequestBody List<PatternDto> request, BindingResult bindingResult){ //validator.validate(request, bindingResult); -> 이 부분을 어노테이션이나 인터셉터로 처리하고 싶어요. log.info("list valid"); if(bindingResult.hasErrors()){ log.error("검증 오류 발생 {}", bindingResult); return bindingResult.getAllErrors(); } log.info("성공 로직 실행"); return request; } } @Component @Slf4j public class CollectionValidator implements Validator { private SpringValidatorAdapter validator; public CollectionValidator() { this.validator = new SpringValidatorAdapter( Validation.buildDefaultValidatorFactory().getValidator() ); } @Override public boolean supports(Class<?> clazz) { return true; } @Override public void validate(Object target, Errors errors) { if(target instanceof Collection){ Collection collection = (Collection) target; for (Object o : collection) { validator.validate(o,errors); } } else validator.validate(target,errors); } } //이 검증기를 통해 List<@Valid PatternDto>와 같이 검증하고 싶었지만 //validtor.validate에게 검증을 위임하려고 할때(많은 검증 로직들이 간소화 되기 때문에) validate메서드의 두번째 인자인 errors //에 넣을 값을 찾지 못한게 문제였습니다. //ArgumentResolver를 통해 해결하고자 했지만 이때도 validate의 errors 인자를 넣을 값을 못찾았습니다. @Component @Slf4j @RequiredArgsConstructor public class CustomValidator implements ConstraintValidator<CustomValid, List<PatternDto>> { private final CollectionValidator validator; @Override public void initialize(CustomValid constraintAnnotation) { ConstraintValidator.super.initialize(constraintAnnotation); } @Override public boolean isValid(List<PatternDto> values, ConstraintValidatorContext context) { log.info("validator 로직 실행"); validator.validate(values,null); //null 대신에 어떤 값을 넣어야 할까요? 이 부분만 해결 되어도 문제가 해결 될거 같아요. return true; } }

  • MVC
  • spring
기혁 댓글 1 좋아요 0 조회수 390

User Entity 생성 관련 질문입니다.

해결됨

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

안녕하세요. 강의 덕분에 코틀린을 잘 배우고 있는 수강생 입니다. 다름이 아니라, 예저 소스에서 User Entity로 DB에 테이블을 생성하고 있는데, 제가 별도로 만든 프로젝트에서는 동일하게 User로 Entity 어노테이션을 붙이고 애플리케이션을 시작하면 에러가 발생하길래 에러 내용으로 찾아봤더니, User Entity를 user라는 이름으로 테이블을 생성하려고 하는데, user는 사용할 수 없는 이름이라는 것 같습니다(예약어) 예제 소스와 동일하게 설정을 했는데 제가 놓치고 있는 부분이 있는 걸까요?

  • refactoring
  • java
  • spring-boot
  • kotlin
  • spring
타노스 댓글 1 좋아요 1 조회수 1177

커넥션 풀에 있는 커넥션이 데이터를 얻는 과정에 대한 질문입니다.

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

커넥션 풀에 있는 커넥션들은 서버가 올라갈 때 데이터베이스와 연결되는 것 같은데.. 각각의 커넥션들이 연결을 얻을 때는 데이터베이스 드라이버를 통해 획득 가능한 커넥션을 조회하고, 드라이버에서 TCP/IP 커넥션을 연결하고, 데이터베이스에서는 내부 인증을 하고... 이런 과정을 거쳐야 하나요?

  • spring
13months 댓글 1 좋아요 1 조회수 369

멀티 모듈에 대한 질문이 있습니다!!

해결됨

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

안녕하세요 !! 자바 개발자가 되기 위해 학습하다가 코틀린을 새로 배우는 과정에서 이 강의를 듣게 된 학생입니다!! 먼저 좋은 강의 제공해주셔서 정말 감사합니다!! 멀티 모듈에서 Repository를 각각 api 모듈에 맞게 구현하고, Spring Data JPA Repository를 코어 모듈에 둔다고 하셨는데. 이런 경우에는 api 모듈에서 core와 관련된 그래들 설정(Querydsl or db 등)이 들어가겠구나 라는 생각이 들었습니다. 멀티 모듈의 장점 중 하나가 모듈의 역할에 맞게 의존성을 관리하는 것도 있다고 생각하는데, 이런 경우 이 장점을 잃지는 않을까 우려됩니다. 그래서 저는 멀티모듈을 사용할 때, core 모듈에 Repository와 관련한 코드를 놓고, 사용하는 모듈에서 인터페이스, 혹은 Repository를 참조하는 구현체를 만들어 해당 클래스만 사용하게끔 유지하는 게 좋지 않을까 생각하는 편인데요. 혹시 강사님의 의견은 어떠신지 궁금합니다!! (적고 보니 강의 내용과는 조금 다른 질문인 것 같아 조금 죄송스럽네요 ㅠㅠ)

  • 멀티모듈
  • 코틀린
  • refactoring
  • java
  • spring
  • spring-boot
  • kotlin
steadyJay 댓글 1 좋아요 2 조회수 3104

인기 태그

인프런 TOP Writers

주간 인기글