Java43 [Refactoring] 이해하기 힘든 이름 (Mysterius Name) 백기선 님의 리팩터링 강의를 들으며 요약한 내용입니다. 1. 이해하기 힘든 이름 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 깔끔한 코드에서 가장 중요한 것 중 하나가 바로 “좋은 이름”이다. 함수, 변수, 클래스, 모듈의 이름 등 모두 어떤 역할을 하는지 어떻게 쓰이는지 직관적으로 이해할 수 있어야 한다. 다음과 같은 방식으로 이름을 리팩터링 할 수 있다. 함수 선언 변경하기 (Change Function Declaration) 변수 이름 바꾸기 (Rename Variable) 필드 이름 바꾸기 (Rename Field) 1. 함수 선언 변경하기 함수의 선언 변경에는 함수 이름 변경하기, 메서드 이름 변경하기, 매개변수 추가하기, 매개변수 제거하기, 시그니처 변경하기.. BackEnd/Refactoring 2022. 2. 19. [Spring] 빈 스코프 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 빈 스코프란? " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 빈 스코프란 말 그대로 빈이 생존할 수 있는 범위(기간)을 의미한다. 지금까지 공부했던, 스프링 컨테이너가 생성될때 같이 생성되서 ~ 스프링 컨테이너가 종료될때 까지 유지되는 범위는 싱글톤 범위이다. 스프링은 다음과 같은 다양한 스코프를 지원하고 있다. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스.. BackEnd/Spring 2022. 2. 8. [Spring] 의존관계 자동 주입 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 옵션 처리 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번시간에는 옵션처리를 공부하였다. 이는 주입할 스프링 빈이 없을때도 동작하도록 하는 과정이였다. 기본적으로 @Autowired는 required = true 이기 때문에 자동 주입대상이 없으면 오류가 발생한다. 3가지 방식으로 처리가 가능했다. 1) @Autowired(required = false) : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안되는 방식 2) org.springframework.lang.@Nullable : 자동 주입할 대상이 없으면 null이 입력된다. 3).. BackEnd/Spring 2022. 2. 5. [오브젝트] 객체지향 프로그래밍 (2장) 조영호님의 오브젝트 라는 책을 읽으며, 공부 내용을 정리하는 용도로 간략하게 정리해 봅니다. 오브젝트: 코드로 이해하는 객체지향 설계 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라! 객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두 번째 걸음은 객체를 wikibook.co.kr 1. 객체지향 프로그래밍을 향해 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 진정한 객체지향 페러다임으로의 전환은 Class 가 아닌, Object에 초점을 맞출 때 에만 얻을 수 있다. 1. 어떤 클래스가 필요한지가 아니라, 어떤 객체가 필요한지 고민해야 한다. 클래스는 공통적인 객체들의 상태와 행동을 추상화 한 것 이다. 따라서.. BackEnd/OOP 2022. 2. 2. [Spring] 스프링 컨테이너와 스프링 빈 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 스프링 컨테이너 생성 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 컨테이너가 생성되는 과정과 코드를 살펴보자! 다음 코드를 먼저 살펴보자. ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 애노테이션 기반의 구성 정보를 담고 있는 AppConfig.class가 있다. 이를 사용하여 스프링 컨테이너를 생성할 수 있다. 위의 ApplicationContext는 인터페이스에 해당한다. 따라서 이를 구현한 여러 구현체.. BackEnd/Spring 2022. 2. 1. [Thymeleaf] 반복 인프런 김영한님의 Spring강의에서 공부한것을 올리며, Thymeleaf의 경우 unit 단위로 공부후 각각 정리하는 글을 작성하겠습니다. 반복 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 타임리프에서 반복은 th:each 를 사용한다. 추가로 반복에서 사용할 수 있는 여러 상태 값을 지원한다. 우선 컨트롤러에서 여러 User의 정보를 담아서 model로 반환해 봅시다. @GetMapping("/each") public String each(Model model){ List list = new ArrayList(); list.add(new User("UserA", 10)); list.add(new User("UserB", 20)); list.add(new User(".. BackEnd/Thymeleaf 2022. 1. 27. [서평] Java의 정석 저의 돈으로 직접사서 직접 완독해본후 써보는 후기입니다. 따라서 장점은 장점대로 칭찬할것이며, 단점은 단점대로 언급할 것 입니다. Java의 정석 저자 : 남궁성 출판 : 도우출판 발매 : 2016.01.27 2021/07/21 ~ 2021/08/11 1) 책의 표지 2) 단원별 구성 3) 읽은소감 우선 저의 글의 앞부분만 보는 분들을 위해 먼저 간단히 3가지에 대해 답해보겠습니다. Q 이 책을 읽기 전에 필요한 수준/ 지식은? => 어떠한 사전지식도 필요 없다. 처음부터 끝까지 상세하게 알려주신다. 간혹 이책이 어렵다 하시는 분들이 있는데, 이는 끈기있게 책을 보지 않아서 그렇다 생각한다. 중간중간 고비가 있을 수 있지만, 여러번 읽어가는 노력을 하면서 읽다보면 도움되는 내용들이 상당하게 많.. Life/Book Record 2022. 1. 26. [Java] 람다와 익명클래스의 scope 주말에 팀 slack에 재미있는 내용이 올라와 공부후 정리해 본다. 1. 문제 상황 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 내가 읽었던 유명한 자바 책 에서는 람다는 익명클래스 라고 나와있었다. 이는 틀린말이 아니다. 다만 정확하게 "익명클래스 == 람다" 가 아니라는 점에서 문제점이 발생한다. 다음 예시를 살펴보자. anonymous 는 익멱 클래스를 활용한 코드이며, lambda는 람다식을 활용한 코드이다. 두 코드 하는 역할은 동일한데, lambda 쪽에서 number 라는 변수를 사용할려 할면 문제가 발생한다. (" 'number' 라는 변수는 초기화 되어있지 않기 때문" 이라는 경고를 보여준다) 다음 코드의 일부를 살펴보자. private final in.. BackEnd/Java 2022. 1. 23. [Java] 자바 함수형 프로그래밍 함수형 프로그래밍이란 무엇일까? 스스로의 궁금증에 답하기 위해 공부하며 기록해 본다. 함수형 프록래밍이 엄청 특별하고 그런것은 아니다. 우리가 일반적으로 익숙한 절차지향적 프로그래밍과 같은 프로그래밍 패러다임중 하나이다. 보통 객체지향 패러다임 에서는 객체 스스로가 상태를 가지고 있고, 객체간에 메시지를 전달하면서 협력하게 된다. 하지만 함수형 패러다임 에서는 작은 단위의 함수들이 모여 처리된다. 함수들은 외부와의 관계는 없고 단지 함수 자신만으로 존재한다. 객체지향 프로그래밍의 경우, 클래스 디자인과 객체들의 관계를 중심으로 코드 작성이 이루어진다. 따라서 상태, 멤버변수, 메서드 등이 긴밀한 관계를 가지고 있다. 특히 멤버변수가 어떤 상태를 가지고있는가에 따라 결과가 달라진다. 함수형 프로그래밍의 경.. BackEnd/Java 2022. 1. 21. [Spring] AOP : Aspect Oriented Programming 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 섹션 7. AOP " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 1. AOP가 필요한 상황 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 우리가 작성한 코드에 함수가 1000개 있다고 해보자. 문제는 갑자기 위에서 모든 함수들의 시간을 측정해보라는 명령이 내려왔다는 것 이다. AOP를 아직 모르는 사람은 함수 하나를 다음과 같이 변경하였다. public Long join(Member member) { long start = System.currentTimeMillis(); try { validateDuplicat.. BackEnd/Spring 2022. 1. 14. [Servlet, JSP] RequestDispatcher와 요청 재지정 RequestDispatcher " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 RequestDispatcher 객체에서 제공하는 메소드를 이용하여 요청 재지정을 할때는 재지정하는 자원이 반드시 현재 자원과 동일한 웹 어플리케이션에 있어야만 합니다. 우성 재지정 메소드를 확인해 봅시다. 1) forward(ServletRequest request, ServletResponse response) : 요청을 다른 자원으로 넘긴다. 2) include(ServeltRequest request, ServletResponse response) : 다른 자원의 처리 결과를 현재 페이지에 포함시킨다. RequestDispatcher 객체 생성 " data-ke-type="html"> .. BackEnd/Servlet, JSP 2022. 1. 13. [Design Patterns] State Pattern : 스테이트 패턴 State Pattern 이란? State Pattern - 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있습니다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있습니다. 이 패턴에서는 상태를 별도의 클래스로 캡슐화한 다음 현재 상태를 나타내는 객체에게 행동을 위임하기 때문에, 내부 상태가 바뀜에 따라서 행동이 달라지게 된다는 것을 알 수 있습니다. "클래스가 바뀌는 것과 같은" 결과를 얻는다는 것이 어떠한 의미일까요? 클라이언트 입장에서 생각해봅시다! 만약 클라이언트가 사용중이던 객체의 행동이 완전히 달라진다면 마치 다른 클래스로부터 만들어진 객체처럼 느껴지겠죠? 물론 실제로 바뀌는 것은 아니고 여러 상태객체를 바꿔가면서 사용하는 방식입니다. Context라는 클래스에는 여러가지.. BackEnd/Design Patterens 2022. 1. 13. 이전 1 2 3 4 다음