- @transactional
- DI
- Django
- 프로그래머스
- springboot
- 자바
- Docker
- PYTHON
- spring mvc
- mysql
- nginx
- spring security 6
- spring
- select
- sql
- static
- ORM
- java
- hibernate
- string
- AWS
- spring boot
- jpa
- SSL
- join
- 문자열
- 1차원 배열
- 스프링부트
- 스프링
- 데이터베이스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
목록Java & Kotlin (86)
개발하는 자몽
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 관계를 통해 생성된 클래스 및 객..
static static 키워드를 사용하여 static 변수와 static 메서드를 만들 수 있다. 각각 정적 필드와 정적 메서드라고도 하며 둘 모두를 정적 멤버(클래스 멤버)라고 말한다. 이 둘은 객체(instance)에 소속된 멤버가 아닌 클래스에 고정된 멤버로, 클래스 로더(classloader)가 클래스를 로딩해서 메서드 메모리 영역에 로드할 때 클래스별로 관리된다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용이 가능하다. static 키워드로 생성된 정적 멤버는 heap이 아닌 static 영역에 메모리가 할당된다. static 영역에 할당된 메모리는 모든 객체가 공유할 수 있어서(같은 곳의 메모리 주소만 바라봄) 어디서든지 참조할 수 있다는 장점을 갖는다. 그러나 Garbage Collect..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/clbZs0/btrHfmgK7kK/lMKJuqqzXLjWLcfIRd8wt1/img.png)
자바를 공부하면서 new 키워드 없이 객체를 생성하면(only declaration) 이 객체는 메모리를 할당받는지 궁금했다. 처음에는 단순히 이렇게 검색했다. "자바 new 역할" "자바 메모리 할당" "자바 new 객체" 위와 같이 검색하면 new로 인스턴스화된 객체의 메모리 상태를 알려주는 글들이 수두룩하게 나온다. 하지만 내가 궁금했던 것은 인스턴스화 이후의 메모리 상태가 아니었기 때문에 친구에게 도움을 요청했다. 저렇게 검색 키워드 추천을 받고 다시 검색을 했다. "JVM 메모리 할당" "JVM declare memory" JVM과 선언, 메모리 이 세가지 키워드를 함께 검색하니 글을 하나 발견했다. JVM allocates memory at declaration for primitive typ..