본문 바로가기

java9

Spring | Spring MVC 패턴 - MVC와 서블릿 (1) MVC 패턴의 등장서블릿과 JSP의 한계서블릿으로 개발할 때는 뷰(View)화면을 위한 HTML을 만드는 작업이 자바 코드에 섞여서 지저분하고 복잡했다.JSP를 사용한 덕분에 뷰를 생성하는 HTML 작업을 깔끔하게 가져가고, 중간중간 동적으로 변경이 필요한 부분에만 자바 코드를 적용했다.그러나 JSP를 사용할 때에도 프로젝트의 규모가 커지면서 불편함을 겪게 된다.JAVA 코드, 데이터를 조회하는 리포지토리 등등 다양한 코드가 모두 JSP에 노출되어 있다.JSP가 너무 많은 역할을 한다. 수백 수천줄이 넘어가는 JSP를 떠올려보면 정말 지옥과 같을 것이다.MVC 패턴 개요MVC 전의 문제 유지보수가 어려움너무 많은 역할 하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면, 너무.. 2024. 9. 5.
Spring | Spring AOP의 동작원리와 JDK Dynamic Proxy vs CGLIB Proxy 비교 및 Spring AOP와 AspectJ 비교 Spring AOP란Spring AOP는 스프링 프레임워크에서 제공하는 관점 지향 프로그래밍 기술이다.Spring AOP는 로깅, 보안, 트랜잭션 관리 등과 같은 공통적인 관심사를 모듈화하여 코드 중복을 줄이고 유지 보수성을 향상하는데 도움을 준다.관심 지향 프로그래밍(Aspect-Oriented Programming, AOP)란객체 지향 프로그래밍 패러다임을 보완하는 기술메서드나 객체의 기능을 핵심 관심사(Core Concern) 와 공통 관심사(Cross-cutting Concern) 로 나누어 프로그래밍을 하는 것을 뜻 함핵심 관심사 : 각 객체가 가져야 할 본래의 기능공통 관심사: 여러 객체에서 공통적으로 사용되는 코드여러 개의 클래스에서 반복해서 사용하는 코드가 있다면 해당 코드를 모듈화해서 공.. 2024. 9. 5.
Java | 클래스와 멤버의 접근 권한을 최소화하라 (Effective Java 3/E - joshua bloch) 해당 글은 이펙티브 자바 (Effective Java 3/E - joshua bloch) 를 읽고 정리한 글입니다.핵심프로그램 요소의 접근성은 가능한 한 최소한으로 하라.꼭 필요한 것만 골라 최소한의 public API를 설계하자.그 외에는 클래스, 인터페이스, 멤버가 의도치 않게 API로 공개되는 일이 없도록 해야 한다.public 클래스는 상수용 public static final 필드 외에는 어떠한 public 필드도 가져서는 안 된다.public static final 필드가 참조하는 객체가 불변인지 확인하라.이유잘 설계된 컴포넌트는 다른 컴포넌트와 소통하며 내부 동작 방식에는 전혀 개의치 않는다.즉, 정보 은닉, 캡슐화의 개념은 소프트웨어 설계의 근간이되는 원리다.정보은닉의 장점시스템 개발 속도.. 2024. 8. 6.
Java & Spring | Swagger 커스텀 ApiResponse 어노테이션 사용기 💎 작성된 글의 프로젝트https://github.com/MARU-EGG/MARU_EGG_BE GitHub - MARU-EGG/MARU_EGG_BEContribute to MARU-EGG/MARU_EGG_BE development by creating an account on GitHub.github.com 💎 작성된 글의 Pull Requesthttps://github.com/MARU-EGG/MARU_EGG_BE/pull/42 [feat] Swagger 커스텀 ApiResponse 어노테이션 적용 by Hoya324 · Pull Request #42 · MARU-EGG/MARU_EGG_BE✅ 작업 내용 작업 관련 정리 블로그 Swagger 커스텀 ApiResponse 어노테이션을 적용했습니다. 프로.. 2024. 7. 17.
프로젝트 | 텍스트 유사도 검색 어떻게 구현할까?(2) - Cosine Similarity과 TF-IDF 💎 작성된 글의 프로젝트https://github.com/MARU-EGG/MARU_EGG_BE GitHub - MARU-EGG/MARU_EGG_BEContribute to MARU-EGG/MARU_EGG_BE development by creating an account on GitHub.github.com 🚪 들어가기 전에..지난 번에는 Elasticsearch를 사용하지 않게 된 이유와 이를 해결하기 위해 Full-Text Inedx를 사용한 이유, 앞으로 개선점에 대해 다뤘습니다. 🎈 저번 블로그 보기https://hoya324.tistory.com/56 프로젝트 | 텍스트 유사도 검색 어떻게 구현할까?(1) - Elasticsearch를 안 쓴 이유와 MySQL Full Text Index?.. 2024. 7. 7.
Java | 생성자 대신 정적 팩터리 메서드를 고려하라 (Effective Java 3/E - joshua bloch) 해당 글은 이펙티브 자바 (Effective Java 3/E - joshua bloch) 를 읽고 정리한 글입니다.핵심정적 팩터리 메서드와 public 생성자는 각자의 쓰임새가 있으니 상대적으로 장단점을 이해하고 사용할 것.그러나 정적 팩터리를 사용하는 게 유리한 경우가 더 많으므로 무작정 public 생성자를 제공하던 습관은 고치자. 이유1. 이름을 가질 수 있다.반환될 객체의 특성을 쉽게 묘사2. 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다.이로인해 불변 클래스(Immutable class)는 인스턴스를 미리 만들어 놓거나 새로 생성한 인스턴스를 캐싱하여 재활용하는 식으로 불필요한 객체 생성 피함플라이웨이트 패턴(Flyweight pattern)과 비슷한 기법인스턴스 통제(Instance-co.. 2024. 7. 4.