>

TIL 80

decorators.xml 파일

📑 decorators.xml 웹 어플리케이션을 구성하고 있는 웹 페이지들은 대부분은 페이지 레이아웃이 동일하게 구성되어 있다. 따라서 동일한 레이아웃을 여러 페이지에 적용하게 된다. 이를 쉽게 할 수 있게 해주는 것이 tiles, velocity, siteMesh 등의 기술이다.Apache Tiles(프레임워크) - , 와 비슷한 역할. 하지만 tiles의 성능이 더 우수.Apache Velocity(템플릿 엔진) - Java 코드에 정의된 객체를 참조하는 템플릿 언어를 제공함. 웹 애플리케이션에서 프레젠테이션 계층과 비즈니스 계층 MVC 패턴에 맞게 분리하는 것을 목표로 함. Tiles나 Velocity 방식이 전체 페이지 중 내용 부분에 해당하는 코드만을 생성하는 방식이라면, SiteMesh는 완..

TIL 2025.01.17

Spring AOP

📑 Spring AOPAOP(Aspect-Oriented Programming): 스프링 프레임워크에서 제공하는 관점 지향 프로그래밍 기술이다.로깅, 보안, 트랜잭션 관리와 같은 공통 관심사를 모듈화하여 코드의 중복을 줄이고 재사용성, 유지보수성, 확장성을 향상시킬 수 있게한다. 객체지향프로그래밍(OOP)의 핵심단위가 클래스인 반면, AOP는 Aspect가 모듈화 단위가 되기 때문에 OOP를 보완해준다.핵심 관심사(원래 각 객체의 기능)와 공통 관심사(여러 객체에서 반복적으로 쓰이는 코드)로 나누어 프로그래밍. AOP의 주요 개념과 구성요소Aspect - 공통관심사항을 정의하는 모듈. Advice, PointCut 및 Introduction의 세 가지 주요 구성 요소를 포함함.Advice - Aspec..

TIL 2025.01.13

Transaction, 생성자와 this, 생성자 주입, json 역직렬화

📑 Transaction논리적 작업 단위(LUW, Logical Units of Work)데이터베이스 시스템에서 복구 및 병행 시행(SELECT, INSERT, UPDATE, DELETE) 시 처리되는 작업의 논리적 단위. 데이터베이스에서 트랜잭션을 조작하는 기능은 사용자가 데이터베이스 완전성(integrity) 유지를 보장하게 한다.*데이터베이스 시스템은 각각의 트랜잭션에 대해 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 영구성(Durability)을 보장한다. 이 성질을 각 첫글자를 따 ACID라고 한다. 이 ACID를 보장하는 것이 트랜잭션 기능. 간단한 트랜잭션은 아래 양식의 SQL 언어로 데이터베이스 내에서 실행된다.Begin the transact..

TIL 2025.01.09

Mybatis foreach문

📑 Mybatis foreach문동적으로 SQL을 처리하는 반복문. collection = 전달받은 인자값(Array 또는 List여야한다)index = 목록의 위치값(index, count, first, last ..)에 대한 참조 지정item = 전달받은 인자값의 새 이름(foreach문에서 사용할 변수명)open = 해당 구문이 시작할 때 넣을 문자close = 해당 구문이 끝날 때 넣을 문자separator = 한번 이상 반복할 때 반복되는 사이에 넣어줄 구분자.  #{item} foreach문에 nullable="true"를 추가하면 컬렉션이 null인 경우 foreach가 무시된다.   사용예시 UPDATE T_BSN_CTMMNY SET USE_YN = 'Y' , UPD..

TIL 2025.01.08

JSTL

📑 JSTLJSP 표준라이브러리. (JavaServer Pages Standard Tag Library)JSP에서 반복문과 조건문, 데이터 관리 포맷, XML 조작, 데이터베이스 액세스를 구현하는 커스텀 태그 라이브러리의 모음.자신만의 태그를 추가할 수 있다. Java 코드를 바로 사용하지 않고 HTML 태그() 형태로 직관적인 코딩을 지원한다. => EL(Expression Language)*EL은 하단에서 다시 설명. 라이브러리기능접두어코어  일반 프로그램 언어에서 제공하는 변수선언, 조건/제어/반복문등의 기능을 제공한다. c포맷팅  숫자,날짜,시간을 포맷팅 하는 기능과 국제화, 다국어 지원 기능을 제공한다. fmt함수  문자열을 처리하는 함수를 제공한다.  fn데이터베이스  데이터베이스의 데이터를..

TIL 2024.12.31

JAVA Spring - Bean

📑 BeanSpring IoC 컨테이너가 관리하는 자바 객체.*IoC: Inversion of Control. 제어의 역전. 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 뜻.컴포넌트 의존관계 설정, 설정 및 생명주기를 해결하기 위한 디자인 패턴.IoC 컨테이너스프링 프레임워크의 객체 생성 및 관리와 의존성 관리를 책임지는 컨테이너.스프링 컨테이너라고도 함. 객체들은 독립적으로 동작하는 것보다 서로 상호작용하여 동작하는 경우가 많은데,이렇게 상호작용하는 객체를 '객체의 의존성'이라고 표현함.스프링 컨테이너에 객체들을 생성하면 객체끼리 의존성을 주입(DI, Dependency Injection)하는 역할을 함.스프링 컨테이너에 등록한 객체들 = 빈. 인스턴스 생성부터 소멸까지의 ..

TIL 2024.12.17

JAVA - 자바 웹 프로젝트 개념

📑 AnnotationAnnotation은 프로그램 내에서 주석과 유사하게, 프로그래밍 언어에는 영향을 미치지 않으면서 프로그램/프로그래머에게 유의미한 정보를 제공하는 역할을 한다. 표준 어노테이션Annotation쓰임@Override컴파일러에게 오버라이딩하는 메서드라는 것을 알린다. 오버라이딩을 올바르게 했는지 컴파일러가 체크하게 한다.(오탈자가 있다면 컴파일 에러를 발생시켜 문제를 막는다.)@Deprecated앞으로 사용하지 말 것을 권장하는 대상에 붙인다. 에러는 아니지만 알림 메세지가 출력된다.@SuppressWarnings컴파일러의 특정 경고메세지가 나타나지 않게 해준다.@SafeVarargs제너릭 타입의 가변인자에 사용한다.(JDK 1.7)@FunctionalInterface함수형 인터페이스..

TIL 2024.12.17

JAVA - Map, Maven

📑 Map 자료구조Map은 인터페이스로 선언되어 있고 Map으로 구현한 여러 클래스들이 있다.Map 인터페이스는 키와 값을 하나의 쌍으로 저장하는 Key-Value방식을 사용한다.=> Key로 Value를 얻어냄.*키(key): 실질적인 값(value)을 찾기 위한 이름의 역할. 특징- 요소의 저장 순서를 유지하지 않음.- Key는 중복을 허용X, Value는 중복 허용.*이미 존재하는 Key 값을 다시 저장하면 기존 값이 사라지고 새로운 값으로 대체된다. 가장 많이 쓰이는 클래스는 HashMap, TreeMap, LinkedHashMap이다.  🖤 HashMapHashMap map = new HashMap();HashMap hm = new HashMap();Hashmap의 키로 사용할 객체는 has..

TIL 2024.12.16

JAVA - 클래스, 제어자, 인스턴스, final

📑 클래스클래스는 객체를 만들기 위한 설계도이다.(class명과 파일명이 같아야만 함.) 클래스의 구성요소를 멤버라고 부름.멤버 - 속성을 표현하는 필드 & 기능을 나타내는 메서드.클래스는 생성된 객체의 필드를 초기화해주는 메소드인 생성자를 가짐.접근제어자 class 클래스이름 { 접근제어자 필드1의타입 필드1의이름; 접근제어자 필드2의타입 필드2의이름; ... 접근제어자 메소드1의 원형 접근제어자 메소드2의 원형 ...}; ◾ 필드(field)객체 내에 값을 저장할 멤버 변수.클래스 내에서 선언된 위치에 따라 클래스 변수, 인스턴스 변수, 지역변수로 구분. ◾ 메소드(method)함수. 객체의 행동을 구현. ◾ 생성자(constructor)클래스의 이름과 동일한 메서드..

TIL 2024.12.16

JAVA - Lambda 표현식, Stack과 Deque

📑 Lambda 표현식int add(int x, int y) { return x + y;}// 위의 메서드를 람다 표현식을 이용해 아래와 같이 단축 시킬수 있다. (메서드 반환 타입, 메서드 이름 생략)(int x, int y) -> { return x + y;};// 매개변수 타입도 생략 할 수 있다.(x, y) -> { return x + y;};// 함수에 리턴문 한줄만 있을 경우 더욱 더 단축 시킬 수 있다. (중괄호, return 생략)(x, y) -> x + y;   StackLIFO(Last In First Out)java.util.Stack  클래스를 통해 자료형을 제공. Vector 클래스를 상속받아 구현됨.Method삽입 - push(e)삭제 - pop()조회 - peek() 사..

TIL 2024.12.13