스프링31 TIL : Bean 컨테이너와 ComponentScan (22) 🎛️ ApplicationContext 스프링에서 핵심인 ApplicationContext는 Bean을 관리해준다. 싱글톤 레파지토리로도 불리는데 Bean을 싱글톤으로 관리해주기 때문이다. 우리가 작성한 설정 정보를 적용시키려면 @Configuration을 붙여준다. 여기에 싱글톤의 비밀이 들어있다. 설정 정보는 우리가 작성한 순수 자바 클래스가 빈으로 등록되는 것이 아니다. 작성한 자바 클래스를 상속받는 임의의 다른 클래스를 만들고 빈으로 등록한다. 여기서는 CGLIB라는 바이트코드 조작 라이브러리를 사용한다. CGLIB 라이브러리가 내부적으로 어떻게 구현되었는지는 모르겠지만, 빈이 존재하면 기존 인스턴스를 반환하고 아니라면 생성할 수 있도록하는 클래스로 변환될 것이다. 따라서 @Configuratio.. 2023. 5. 17. [Spring] @ModelAttribute 🌞 들어가기 앞서 스프링에서 요청한 파라미터를 바인딩하는 방법은 여러 가지 있다. 오늘은 그중에서 @ModelAttribute에 대해서 이야기해 볼 생각이다. 사용은 쉽지만 주의할 점이 있기 때문에 어떻게 동작하는지와 같이 주의점도 정리해 보겠다. 😋😋 🪄 @ModelAttribute란? 파라미터를 바인딩하는 여러 어노테이션 중에 모델 객체를 바인딩하는 어노테이션이다. 다음과 같은 모델 객체(혹은 DTO)가 존재할 때 정보를 받아오는 방법은 여러 가지가 있겠지만 이 글에서는 @RequestParam과 @ModelAttribute를 비교해서 사용법을 알아보겠다! 가볍게 참고만 하자 ㅎㅎ.. // 모델 객체 public class User { private String name; private int age.. 2023. 4. 19. [Spring] @Valid, @Validated과 Custom Annotation (2) 😋 들어가기 앞서 1편에 이어서 커스텀 어노테이션을 구현하고 이에 필요한 예외를 어떻게 처리했는지 다루겠다! 유효성 처리를 위해서 세 가지 단계가 필요하다. 어노테이션 구현하기 유효성 검사기 구현하기 발생하는 예외 다루기 🪄 어노테이션 구현하기 비밀번호를 검증하는 어노테이션을 통해서 이해해 보겠다! 어노테이션이 어떻게, 어디서, 무엇으로, 누구에게 사용될지 등의 정보는 메타 어노테이션과 필드값으로 명시해줘야 한다. @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = PasswordFormatValidator.class) public @interface PasswordFormat { String .. 2023. 3. 21. [토비의 스프링] 테스트 (2장) 2.1 UserDaoTest 다시 보기 2.1.1 테스트의 유용성 UserDao에서 관심을 분리하고 기능을 확장할 때 테스트가 없었다면 불안했을 것이다. 머릿속으로 시뮬레이션을 돌려보는 방법은 100% 확신할 수 없기 때문에 테스트란 내가 예상하고 의도했던 대로 코드가 정확히 동작하는지 확신할 수 있게 해주는 작업이 필요하다. 2.1.2 UserDaoTest의 특징 웹을 통한 DAO 테스트 방법의 문제점 웹 화면을 통한 테스트는 가장 흔히 쓰이는 방법이지만 단점이 너무 많다. 테스트를 위해 사용되는 자원이 많기 때문에 DAO만 테스트하고 싶은데 다른 곳에서 문제가 발생할 수 있다. 작은 단위의 테스트 테스트 수행 과정을 간단히 하고 오류를 쉽게 찾을 수 있게 하기 위해서 작은 단위로 쪼개는 것이 중요하다.. 2023. 1. 16. TIL : @PathVariable vs @RequestParam (20) 🌞 Spring Spring에서 URI로 전달되는 값을 받아오는 방법이 두 가지 존재한다. id가 1인 게시글을 가져올 때 다음과 같이 표현할 수 있다. GET http://xxx.xxx.xxx/api/post?id=1 // query parameter GET http://xxx.xxx.xxx/api/post/1 // path variable 딱 보면 다른데 자세하게 어떤 차이가 있는지 알아보자! 🌀RequestParam GET http://xxx.xxx.xxx/api/post?id=1 이렇게 URI에 쿼리가 들어가는 방식일 때 사용하는 어노테이션이다. 일반적으로 Http GET Method에서 많이 사용한다. 조금 더 자세하게 들어가면 다음 4가지 경우로 많이 사용한다. 1️⃣ Searching @Ge.. 2023. 1. 10. [토비의 스프링] 오브젝트와 의존관계 (1장) 1.2 dao의 분리 객체지향의 꽃은 결국 관심사를 분리하는 것 (Seperating of Concerns) 왜? 자유로운 변경, 발전, 확장을 위해서 어떻게? 관심이 다른 것을 가능한 분리하여 서로 영향을 주지 않게 템플릿 메소드 패턴 : 슈퍼 클래스에 기본적인 기능을 구현하고 기능의 일부를 서브 클래스에 필요에 맞게 구현할 수 있도록 하는 패턴. (protect로 선택 가능하게, 추상 메서드로는 꼭 구현하게) 여기서 템플릿 메소드란? 기본 알고리즘 골격을 담은 메소드, 애플리케이션의 run() 같은게 템플릿 메서드이다. 훅 메서드 : protect로 구현된 선택적으로 오버라이드가 가능한 메서드 팩토리 메서드 패턴 : 서브 클래스에서 구체적인 오브젝트 생성 방법과 클래스를 결정하게 하는 패턴. 슈퍼클래.. 2022. 12. 21. 이전 1 2 3 4 5 6 다음