분류 전체보기 149

[java] 원시타입(Primitive types)과 참조타입(Reference types)

프로그래밍 언어에서 데이터 유형은 보통 "원시타입(Primitive types)"과 "참조타입(Reference types)"으로 분류되며, 다른 방식으로 저장되고 처리된다. 원시타입(Primitive types) - 원시타입은 단일한 데이터를 나타내며, 해당 데이터는 스택(stack)이나 기본적인 메모리 공간에 직접 저장된다 - 변수에 원시타입의 값을 할당하면 해당 값이 직접 변수에 저장된다. 참조타입(Reference types) - 원시 타입을 제외한 타입들(문자열, 배열, 열거, 클래스, 인터페이스)을 일컫는다. - 참조타입은 객체(object)를 나타내며, 해당 객체의 주소(참조)가 변수에 저장된다. - 객체는 힙(heap)이라는 메모리 영역에 동적으로 할당된다. - 여러 변수가 동일한 객체를 ..

CS 2023.11.24

[java] 동일성(identity, ==)와 동등성(equality, equals)

동일성(Identity) - 객체나 값이 메모리 내에서 정확히 동일한 것인지를 확인하는 개념 - 두 객체의 메모리 주소가 같은지를 비교하여 판단한다. 즉, 두 객체가 정확히 같은 인스턴스인지를 확인한다. 동등성(Equality) - 값이나 객체의 내용이 동일한지 여부를 확인하는 개념 - 두 객체가 가지고 있는 값이 같은지를 비교하여 판단한다. 즉, 두 객체가 동일한 데이터를 가지고 있는지를 확인한다. [Java] 동일성(identity)과 동등성(equality) java-study에서 스터디를 진행하고 있습니다. 동일성 동일성은 동일하다는 뜻으로 두 개의 객체가 완전히 같은 경우를 의미한다. 여기서 완전히 같다는 뜻은 두 객체가 사실상 하나의 객체로 봐도 steady-coding.tistory.com

CS 2023.11.24

[Spring] 의존성과 설정값을 생성자 인자로 주입해야 하는 이유

느슨한 결합(Loose Coupling) 의존성을 생성자 인자로 주입하면, 해당 클래스는 직접 의존하는 객체를 생성하는 책임을 갖지 않게 된다. 대신 의존성을 외부에서 주입받아 사용하므로, 클래스 간의 결합도를 낮출 수 있다. 테스트 용이성 의존성 주입을 통해 Mock Objects를 사용하여 단위 테스트(Unit Test)를 수행할 수 있다. 단일 책임 원칙(SRP; Single Responsibility Principle) 의존성을 주입받는 방식을 사용하면 이러한 객체의 역할을 분리하여 단일 책임 원칙을 준수할 수 있다. 유연성 외부에서 객체를 생성할 때 의존성을 변경하거나 다른 객체로 교체하기 쉽다. 코드를 변경하지 않고도 애플리케이션의 동작을 수정하거나 유연하게 구성할 수 있게 합니다. 코드의 명..

CS 2023.11.22

[Spring] Spring Application 메서드 실행 방법

1. CommandLineRunner 및 ApplicationRunner 구현 CommandLineRunner `run()` 메서드에 `String[] args` 파라미터를 갖는다. 이 인터페이스를 구현하면, Spring Boot 애플리케이션이 구동될 때 `run()` 메서드가 호출된다. ApplicationRunner `run()` 메서드에 `ApplicationArguments` 객체를 파라미터로 받는다. 이 인터페이스를 구현하면, Spring Boot 애플리케이션이 구동될 때 `run()` 메서드가 호출된다. 2. Spring의 ApplicationEvent Spring의 `ApplicationEvent`와 `ApplicationListener`를 사용하면, 커스텀 이벤트를 생성하고 리스너를 통해 ..

CS 2023.11.22

[Spring] Filter, Interceptor 예외 처리방법

HandlerInterceptor HandlerInterceptor 흐름 Interceptor(preHandle) -> Handler -> Interceptor(postHandle) -> HandlerExceptionResolver(예외 복구) -> View 렌더링 -> Interceptor(afterCompletion) 1. afterCompletion 전에 발생한 예외는 모두 DispatcherServlet으로 반환된다. afterCompletion은 모든 처리가 끝난 후 예외 정보, 요청, 응답 정보를 모두 받는 위치에 있기 때문이다. 2. preHandle, postHandle 에서 예외가 발생할 때 @ExceptionHandler 로 핸들링할 수 있다. 3. preHandle에서 예외발생 시, ..

CS 2023.11.22

[Spring] Servlet

Servlet(서블릿) 동적인 페이지를 제공하기 위해서 웹서버는 다른 곳에 도움을 요청하여 동적인 페이지를 작성해야 한다. 여기서 웹서버가 동적인 페이지를 제공할 수 있도록 도와주는 어플리케이션이 서블릿이며, 동적인 페이지를 생성하는 어플리케이션이 CGI이다. Q) CGI(Common Gateway Interface)란? CGI는 특별한 라이브러리나 도구를 의미하는 것이 아니고, 별도로 제작된 웹서버와 프로그램간의 교환방식을 칭한다. 어떠한 프로그래밍언어로도 구현 가능하며, 별도로 만들어 놓은 프로그램에 HTML의 Get or Post 방법으로 클라이언트의 데이터를 환경변수로 전달하고, 프로그램의 표준 출력 결과를 클라이언트에게 전송하는 것이다. 즉, 자바 어플리케이션 코딩을 하듯 웹 브라우저용 출력 화..

CS 2023.11.22

[Spring] ServletConfig, ServletConfig

ServletConfig Servlet 설정 정보 객체이며, Servlet 객체당 하나가 생성된다. ServletConfig 객체는 Servlet이 초기화될 때 생성되며, Servlet의 init() 메서드에서 사용할 수 있다. ServletConfig 객체는 Servlet이 종료될 때까지 사용할 수 있다. ServletContext 웹 애플리케이션의 컨텍스트. 웹 애플리케이션의 이름, 경로 및 초기화 파라미터를 포함한 웹 애플리케이션에 대한 정보를 포함한다. 또한 웹 애플리케이션의 모든 서블릿 및 JSP에 대한 공유 저장소로 사용할 수 있다. ServletContext 객체는 웹 애플리케이션이 시작될 때 웹 컨테이너에 의해 생성되고 웹 애플리케이션이 종료될 때 웹 컨테이너에 의해 파괴된다. Servle..

CS 2023.11.22

[Spring] POJO

POJO "Plain Old Java Object"의 약자로, 특정 프레임워크를 구현 및 상속받지 않은 일반적인 자바 객체를 말한다. 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고, 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 의미한다. 특정 프레임워크나 라이브러리에 종속되지 않는 객체를 의미한다. 위 이미지는 POJO는 IoC/DI, AOP, PSA를 통해서 달성할 수 있다는 것을 의미한다. POJO 프로그래밍 POJO 프로그래밍은 POJO를 이용하여 프로그래밍 코드를 작성하는 것이다. 그러나 순수 자바 객체만을 사용한다고 해서 POJO 프로그래밍이라고 볼 수는 없다. POJO 프로그래밍으로 작성한 코드가 되기 위해서는 기본적인 규칙들을 지켜야 한다. 1. Java나 Java..

CS 2023.11.20

[Spring] Filter와 Interceptor

Filter와 Spring Interceptor는 모두 웹 애플리케이션에서 요청을 가로채고 처리하는 데 사용된다. Filter(Servlet Filter) J2EE 표준 스펙 기능으로 디스패처 서블릿(Dispatcher Servlet)에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공한다. HTTP 요청이 서블릿에 도달하기 전과 후에 모두 동작할 수 있다. 요청 및 응답에 대한 일반적인 작업을 수행하는 데 사용된다. 메소드 종류 필터를 사용하기 위해서는 javax.servlet의 Filter 인터페이스를 구현(implements) 해야 하며, 다음과 같은 메소드를 가진다. init() 필터 객체를 초기화하고 서비스에 추가하기 위한 메소드 웹 컨테이너가..

CS 2023.11.20

[Spring]Front Controller, Dispatcher Servlet

Front Controller MVC 구조에서 함께 사용되는 디자인 패턴 중 하나로, 애플리케이션의 진입점(entry point) 역할을 수행하는 컨트롤러. 클라이언트가 보내는 모든 요청을 자신이 먼저 받게 되고, 이러한 요청들을 세부 컨트롤러에게 전달하는 역할을 수행한다. Dispatcher Servlet은 spring에서 Front Controller 패턴을 구현한 것이다. Dispatcher Servlet의 동작 과정 1. 요청 수신 클라이언트로부터 HTTP 요청이 들어오면, Dispatcher Servlet이 가장 먼저 받는다 2. Handler Mapping(핸들러 매핑) Dispatcher Servlet은 Handler Mapping을 사용하여 해당 요청을 처리할 컨트롤러(Controller)..

CS 2023.11.16