- 프로그래머스
- hibernate
- spring
- mysql
- Django
- 1차원 배열
- ORM
- @transactional
- jpa
- 스프링
- sql
- static
- 데이터베이스
- join
- SSL
- java
- 문자열
- AWS
- 자바
- springboot
- select
- spring security 6
- 스프링부트
- PYTHON
- Docker
- string
- spring boot
- DI
- spring mvc
- nginx
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
목록Java & Kotlin (88)
개발하는 자몽

프록시는 어떤 객체를 사용하려고 할 때 해당 객체에 직접 요청하는 것이 아닌 중간에 가짜 프록시 객체(대리인)를 둔다. 이 프록시 객체가 대신 요청을 받고 실제 객체를 호출한다. 프록시 모드를 설정하면 의존성 주입을 통해 주입되는 빈은 실제 빈이 아닌 해당 빈을 상속받은 프록시 객체이다. 스프링은 CGLIB 라이브러리(Byte Code Generation Library)를 사용하여 프록시 객체를 주입한다. 프록시 객체 내부에는 실제 빈을 요청하는 로직이 들어있다. 클라이언트의 요청이 들어오는 시점에 실제 빈을 호출한다. → 실제 빈의 조회를 필요 시점까지 지연 프록시 객체는 실제 객체를 상속받아서 만들어지므로 클라이언트 입장에서는 실제 빈을 사용하는 것과 동일한 방법으로 사용하면 된다. @Scope의 p..
빈을 찾기 위한 다양한 의존성 검색 방법 스프링 빈 스코프를 공부하다가 의존성 주입(DI)뿐만 아니라 의존성을 갖는 빈을 검색 (DL, Depndency Lookup)할 때도 있다는 것을 알게 되었다. 스코프가 prototype이거나 request인 경우가 대표적이다. Spring은 빈을 검색하기 위한 다양한 방법들을 제공한다. @Scope("prototype") //또는 @Scope("request") public class UserRequest { ... } 1. ApplicationContext 스프링은 DI 컨테이너인 ApplicationContext를 관리하고 있다. 그래서 ApplicationContext를 통해 필요한 빈을 검색할 수 있다. @Service @RequiredArgsConstr..
JUnit 테스트 케이스를 작성하면서 assertThat.isEqualTo()와 assertThat.isSameTo가 헷갈려서 정리한다. isSameAs() 주소 값 비교 "==" 비교 연산자와 동일 메모리 상에서 같은 객체를 참조하는지 확인 isEqualTo() 데이터 값 비교 equals() 메소드와 동일 객체가 서로 같은 값을 가지고 있는지 확인 isInstanceOf() 타입(class) 비교
수동 빈 등록과 의존관계 주입 @Bean 애노테이션은 method-level로 수동으로 빈을 등록할 때 사용한다. 메서드가 선언된 클래스 상단에는 @Configuration 애노테이션을 붙여 설정 정보 클래스임을 알려주고, 싱글톤이 깨지지 않도록 한다. (@Configuration을 붙이지 않아도 @Bean을 붙이면 다 빈으로 동록 되지만 싱글톤이 깨진다.) /* 수동 빈 등록 및 의존관계 주입 @Configuration, @Bean */ package hello.core; ... @Configuration public class AppConfig { @Bean public MemberService memberService() { //memberService에 의존관계로 memberRepository 주..
인프런 김영한 님의 스프링 인강을 보며 코딩을 하다가 궁금한 점이 생겨서 정리해본다. public class ApplicationContextSameBeanFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SameBeanConfig.class); ... @Configuration static class SameBeanConfig { @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public MemberRepository memberRepository2() { return ..
람다식(Lambda Expressions) 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어이다. 람다식은 함수(메서드)를 간단한 식으로 표현하는 방법이다. 람다의 표현방법은 다음과 같다. 함수가 단일 실행문이면 괄호를 생략할 수 있다. 함수가 return문으로만 구성되어 있는 경우 괄호를 생략할 수 없다. A a = (매개변수) -> {구현코드}; a -> a*a; //매개변수가 하나인 경우, 괄호 생략가능 (int a ) -> a*a; //타입이 있는 경우 괄호 생략 불가능 (int a) -> System.out.println(a); //함수가 단일문장인 경우 괄호 생략가능 (int a, int b) -> {return a > b ? a..
내부 클래스 클래스가 다른 클래스를 포함하는 경우, 내부에 있는 클래스를 내부 클래스라고 한다. 내부 클래스로 선언 시 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있으며, 외부에는 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다(캡슐화). 내부 클래스는 정의되는 위치에 따라 멤버 클래스와 지역 클래스로 나뉜다. 그리고 각 내부 클래스의 선언 위치에 따라 같은 선언 위치의 변수와 동일한 유효 범위(scope)와 접근성(accessibility)을 갖는다. 멤버 클래스 멤버 변수와 동일한 위치에 선언된 내부 클래스 `static` 예약어가 붙은 static 멤버와 instance 멤버로 나뉨 동일한 클래스뿐만 아니라 다른 클래스에서도 활용 가능 클래스의 멤버 변수와 성격이 비슷함 지역 클래스 ..
Class 클래스 Java의 모든 클래스, 인터페이스는 컴파일 후 .class 파일로 생성된다. 이 파일에는 멤버 변수, 메서드, 생성자 등의 객체의 정보가 담겨있다. Class 클래스는 컴파일된 class 파일에서 객체의 정보를 가져올 수 있다. forName() Class의 static 메소드인 forName은 클래스의 이름을 매개변수로 받아서 Class 객체를 리턴해준다. 이 메서드는 해당 statement가 수행될 때 매개변수로 받은 클래스를 메모리에 적재(load)한다. 이를 동적로딩이라 하며 상황에 따라 라이브러리나 클래스를 로드할 수 있어서 메모리를 아낄 수 있다. | Note - 동적 로딩(dynamic static) : 컴파일 시 데이터 타입이 모두 binding되어 자료형이 로딩되는 것..
Wrapper class 프로그램에 따라 기본 타입(primitive type)의 데이터를 객체를 취급해야 하는 경우 먼저 데이터를 객체로 변환한다. 8개의 기본 타입에 해당하는 데이터를 객체로 포장하는 클래스를 wrapper class라고 한다. wrapper class는 각각의 타입에 해당하는 데이터를 인수로 받아, 해당 값을 갖는 객체로 만든다. wrapper 클래스는 모두 java.lang 패키지에 포함된다. 자바의 기본 타입에 대응하여 제공하고 있는 wrapper 클래스는 아래와 같다. primitive type wrapper class byte Byte short Short int Integer long Long float Float double Double char Character bool..
상속을 공부하다가 is-a, has-a 관계를 명확하게 알아둬야 사용에 유의할 수 있음을 깨달았다. is-a 간단히 is-a는 'A는 B이다'의 '~이다'와 같다. is-a는 추상화(형식이나 클래스와 같은)들 사이의 포함 관계를 의미한다. 한 클래스 A가 다른 클래스 B의 서브클래스임을 말한다. 타입 A는 타입 B의 명세(specfication)를 암시한다는 점에서 타입 B의 서브타입이라고도 할 수 있다. is-a 관계는 타입 또는 클래스 간의 has-a 관계와는 대조된다. has-a 및 is-a 관계들 간의 혼동은 실세계 관계 모델에 대한 설계에 있어 자주 발견되는 에러이다. 또한 객체 또는 타입 간의 instance-of 관계와도 대조된다. - 위키피디아 - is-a 관계를 통해 생성된 클래스 및 객..