728x90

java 129

[Java] Generics

자바의 정석 챕터 13을 읽고 정리 1. 지네릭스란? - 지네릭스는 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시 타입 체크를 해주는 기능 - 타입 안정성 제공 - 타입체크와 형변환을 생략할 수 있어서 코드가 간결해짐 2. 지네릭 클래스 선언 - 클래스에 지네릭 타입을 넣을 수 있다. class Box { Object item; void setItem(Object item) { this.item = item; } Object getItem() { return item; } } // 지네릭 타입 T를 선언 class Box { T item; void setItem(T item) { this.item = item; } T getItem() { return item; } } - T는 타입변..

[Java] 컬렉션 프레임워크 (2)

자바의 정석 챕터 11을 읽고 정리 1.4 Hashset - Hashset은 Set 인터페이스를 구현한 가장 대표적인 컬렉션 - 중복된 요소를 저장하지 않음 - 저장순서를 유지하지 않음 Object[] objArr = {"1", new Integer(1), "2", "2", "3", "3"}; Set set = new Hashset(); for (int i = 0; i < objArr.length; i++) { set.add(objArr[i]); } System.out.println(set); // [1, 1, 2, 3] - "1", "1"은 눈으로 볼 때는 같지만 첫 번째는 String 인스턴스이고, 하나는 Integer 인스턴스라서 중복으로 보지 않음 - 순서 보장을 원하면 LinkedHashSet ..

[Java] 컬렉션 프레임워크 (1)

자바의 정석 챕터 11을 읽고 정리 1. 컬렉션 프레임워크 - 데이터 군을 저장하는 클래스들을 표준화한 설계 - 컬렉션은 다수의 데이터를 말한다. 1.1 컬렉션 프레임워크의 핵심 인터페이스 - 컬렉션 데이터 그룹은 3가지 (1) List: 순서가 있는 데이터 집합. 중복 허용 구현클래스: ArrayList, LinkedList, Stack, Vector 등 (2) Set: 순서가 없는 데이터 집합, 중복 허용X 구현클래스: HashSet, TreeSet 등 (3) Map: 키와 값의 쌍으로 이루어진 데이터 집합. 순서 없음. 키는 중복 허용X. 값은 중복 허용 - Vector나 Hashtable은 사용하지 말고, ArrayList, HashMap 사용하기 Collection인터페이스 - List와 Set..

[Spring] 스프링 시큐리티 (3)

스프링 시큐리티가 변경되었다. - 버전 5.7.0-M2 버전부터 변경되었고, SecurityFilterChain을 빈으로 등록해서 사용해야 한다. - 아래 코드는 카카오 로그인 구현 중에 작성한 코드다. private final CustomOauth2UserService customOauth2UserService; @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .csrf().disable() // enable h2-console .headers() .frameOptions() .disable() .and() .authorizeRequests() .antMatchers("/api/**").perm..

[Java] 객체 지향 설계 5원칙 - SOLID

스프링 입문을 위한 자바 객체 지향의 원리와 이해를 읽고 간단한 정리. SOLID는 아래 5가지 원칙의 앞 글자를 따서 부르는 이름 (1) SRP(Single Responsibility Principle): 단일 책임 원칙 (2) OCP(Open Closed Principle): 개방 폐쇠 원칙 (3) LSP(Liskov Substitution Principle): 리스코프 치환 원칙 (4) ISP(Interface Segregation Principle): 인터페이스 분리 원칙 (5) DIP(Dependency Inversion Principle): 의존 역전 원칙 1. SRP - 단일 책임 원칙 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다. - 단일 책임 원칙은 클래스 이외에도 속성, ..

[Java] 자바가 확장한 객체 지향

스프링 입문을 위한 자바 객체 지향의 원리와 이해를 읽고 간단한 정리. 1. abstract 키워드 - 추상 메소드와 추상 클래스 - 추상메소드는 선언부는 있지만 구현부가 없는 메소드 - 추상 메소드를 하나라도 갖고 있는 클래스는 반드시 추상 클래스로 선언해야 함 - 추상 클래스의 필요 이유 public class Driver { public static void main(String[] args) { Animal[] animals = new Animal[3]; animals[0] = new mouse(); animals[1] = new cat(); animals[2] =. ew dog(); for (int i = 0; i < animals.length; i++) { anumals[i].cry(); } ..

[Java] 자바와 객체 지향 (2)

스프링 입문을 위한 자바 객체 지향의 원리와 이해를 읽고 간단한 정리. https://devhooney.tistory.com/74 [Java] 자바와 객체 지향 (1) 스프링 입문을 위한 자바 객체 지향의 원리와 이해를 읽고 간단한 정리. 1. 객체 지향의 4대 특성 - 캡슐화: 정보 은닉 - 상속: 재사용 - 추상화: 모델링 - 다형성: 사용 편의 2. 클래스 : 객체 = 붕어 devhooney.tistory.com 이 포스트와 이어지는 내용 1. 다형성: 사용편의성 - 객체 지향에서 다형성은 오버라이딩, 오버로딩으로 대표된다. - 오버라이딩, 오버로딩의 차이 1. 오버라이딩은 같은 메소드, 같은 인자 목록으로 상위 클래스의 메소드를 재정의 2. 오버로딩은 같은 메소 이름, 다른 인자 목록으로 다수의 ..

[JPA] 스프링 데이터 - 나머지 기능들

김영한님의 실전! 스프링 데이터 JPA 정리 1. Specifications(명세) - 도메인 주도 설계(Domain Driven Design)는 SPECIFICATION(명세)라는 개념을 소개 - 스프링 데이터 JPA는 JPA Criteria를 활용해서 이 개념을 사용할 수 있도록 지원 2. 술어(predicate) -> 실무 사용 X - 참 또는 거짓으로 평가 - AND OR 같은 연산자로 조합해서 다양한 검색조건을 쉽게 생성 예) 검색 조건 하나하나 - 스프링 데이터 JPA는 org.springframework.data.jpa.domain.Specification 클래스로 정의 참고 Querydsl 사용! 3. Query By Example - 실무에서 사용하기에 매칭 조건이 너무 단순함. - LE..

[Java] 자바와 객체 지향 (1)

스프링 입문을 위한 자바 객체 지향의 원리와 이해를 읽고 간단한 정리. 1. 객체 지향의 4대 특성 - 캡슐화: 정보 은닉 - 상속: 재사용 - 추상화: 모델링 - 다형성: 사용 편의 2. 클래스 : 객체 = 붕어빵틀 : 붕어빵 X!!!! 클래스 객체명 = new 클래스(); - 붕어빵틀과 붕어빵이 아닌 개념과 실체로 설명했다. 예전에 배웠을 때 보다 훨씬 이해가 잘되는 문장이다. 3. 추상화 : 모델링 - 추상화는 모델링이다. 객체 지향의 추상화는 곧 모델링이다. - 객체: 세상에 존재하는 유일무이한 사물 - 클래스: 분류, 집합 같은 속성과 기능을 가진 객체를 총칭하는 개념 - 추상화: 구체적인 것을 분해해서 관심 영역(애플리케이션 경계)에 있는 특성만 가지고 재조합하는 것 = 모델링 애플리케이션 경..

[JPA] 스프링 데이터 - 스프링 데이터 JPA 분석

김영한님의 실전! 스프링 데이터 JPA 정리 1. 스프링 데이터 JPA 구현체 분석 - 스프링 데이터 JPA가 제공하는 공통 인터페이스의 구현체 - org.springframework.data.jpa.repository.support.SimpleJpaRepository - @Repository 적용: JPA 예외를 스프링이 추상화한 예외로 변환 - @Transactional 트랜잭션 적용 (1) JPA의 모든 변경은 트랜잭션 안에서 동작 (2) 스프링 데이터 JPA는 변경(등록, 수정, 삭제) 메소드를 트랜잭션 처리 (3) 서비스 계층에서 트랜잭션을 시작하지 않으면 Repository에서 트랜잭션 시작 (4) 서비스 계층에서 트랜잭션을 시작하면 Repository는 해당 트랜잭션을 전파 받아서 사용 (5..

728x90