[Java] 57. 람다가 필요한 이유
·
Java/Modern Java(8~)
람다가 필요한 이유#Java/adv3람다가 필요한 이유1변하지 않는 부분과 변하는 부분을 분리하여, 변하지 않는 부분은 유지하고 변하는 부분은 매개변수(파라미터)를 통해 외부에서 전달받도록 한다.프로그래밍에서 중복을 제거하고, 좋은 코드를 유지하는 핵심은 변하는 부분과 변하지 않는 부분을 분리하는 것“Hello Spring”과 같은 구체적인 값(Value)을 매개변수를 통해 외부에서 전달받아 메서드의 동작을 달리하고, 재사용성을 높이는 방법을 값 매개변수화(Value Parameterization)라 한다.람다가 필요한 이유2어떠한 동작의 실행 시간을 측정하는 메서드 두 개 하나의 메서드에서 실행되도록 리팩토링하려면, 문자열 같은 단순한 값이 아니라 코드 조각을 전달해야 한다.두 메서드에서 시간을 측..
[Spring] Spring Initializr에서 AOP가 없는 이유
·
Spring
세 줄 요약Spring Initializr(start.spring.io) 화면에는 ‘Spring AOP’(spring-boot-starter-aop) 항목이 기본으로 표시되지 않는다.2015년부터 “불필요하게 AOP 스타터를 고르는 사용자가 많다”는 이유로 의도적으로 숨긴 정책이 지금까지 이어지고 있다.프로젝트를 만든 뒤 빌드 파일에 spring-boot-starter-aop를 직접 추가하거나, Initializr 검색창에 전체 좌표(org.springframework.boot:spring-boot-starter-aop)를 입력하면 된다.1. 화면에서 빠진 이유배경설명AOP 스타터가 실제 필요 없는 경우에도 많이 선택됐다는 통계가 나왔다‘@Transactional’, ‘@Async’ 같은 기능은 다른 스..
[Java] 56. HTTP 서버에 Reflection & Annotation 활용
·
Java/Reflection, Annotation
HTTP 서버 활용#Java/adv2/HTTP/HTTP 서버7 - 애노테이션 서블릿1 - 시작 : 애노테이션을 이용하여 ReflectionServlet의 문제점을 개선해보자.애노테이션@Retention( RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)@Documentedpublic @interface Mapping { String value();}AnnotationServletpublic class AnnotationServletV1 implements HttpServlet { private final List controllers; public AnnotationServletV1(List controllers) { this.con..
[Java] 55. 애노테이션
·
Java/Reflection, Annotation
애노테이션#Java/adv2/애노테이션이 필요한 이유리플렉션으로 해결하지 못했던 문제들요청 이름과 메서드 이름을 다르게 하고 싶다면?/ , /favicon.ico 와 같이 자바 메서드 이름으로 처리하기 어려운 URL은 어떻게 처리할까?해결 방안: 메서드에 추가 정보를 적어두고, 추가 정보를 통해 메서드를 리플렉션으로 찾고 호출해보자.프로그램 실행 중에 읽어서 사용할 수 있는 주석이 필요하다. 애노테이션/애노테이션 예제package annotation.mapping;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;@Rete..
[Java] 54. 리플렉션(Reflection)
·
Java/Reflection, Annotation
리플렉션#Java/adv2/리플렉션이 필요한 이유기존 WAS의 문제점기존 커맨드 패턴 하나의 클래스에 하나의 기능새로 커맨드 클래스를 만들때마다 URL 경로와 클래스를 매핑해야 함.해결 방법: 하나의 클래스 안에서 다양한 기능을 처리하는 것.메서드와 경로를 어떻게 매핑할까? 리플렉션을 이용해 URL 경로와 같은 이름의 메서드를 호출하자./클래스와 메타데이터리플렉션(Reflection): 클래스가 제공하는 다양한 정보를 동적으로 분석하고 사용하는 기능"반사하다" 또는 "되돌아보다”. 프로그램이 자기 자신의 내부를 “반사하여” 들여다본다.프로그램이 실행 중에 자기 자신의 구조를 들여다보고, 그 구조를 변경하거나 조작할 수 있는 기능프로그램 실행 중에 클래스, 메서드, 필드 등에 대한 정보를 얻거나, ..
[Java] 53. HTTP 서버 만들기
·
Java/IO, Network
보호되어 있는 글입니다.
[Java] 52. 채팅 프로그램(feat. Command Pattern)
·
Java/IO, Network
보호되어 있는 글입니다.
[Java] 51. 네트워크 - 프로그램(2)
·
Java/IO, Network
보호되어 있는 글입니다.
[Java] 50. 네트워크 - 프로그램(1)
·
Java/IO, Network
보호되어 있는 글입니다.
[Java] 49. File, Files
·
Java/IO, Network
File, Files#Java/adv2파일이나 디렉토리를 다루는 객체 File 또는 Files, Path 클래스/FileFile은 파일과 디렉토리를 둘 다 다룬다.File file = new File("temp/example.txt");File directory = new File("temp/exampleDir");주요 메서드createNewFile(): 새 파일을 생성. 단순히 객체를 생성한다고 파일이 생성되는게 아니라, 이 메서드를 호출해야 생성된다.exists(): 파일이나 디렉토리의 존재 여부를 확인mkdir(): 새 디렉토리를 생성delete(): 파일이나 디렉토리를 삭제isFile(): 파일인지 확인isDi..