일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프록시
- 링킹
- gradle
- AutoConfiguration
- 컴퓨터시스템
- JPA
- DesignPattern
- 토비의스프링
- 빌드툴
- 클린코드
- 자바
- FunctionalInterfaces
- springwebmvc
- hibernate
- beanfactory
- Spring
- String
- ORM
- IOC
- ApplicationContext
- Immutable
- java
- 토비의스프링3.1
- exception
- lambda
- springboot
- 링커
- 메이븐
- DispatcherServlet
- Kotlin for Java Developers
- Today
- Total
목록프로그래밍 (78)
엔지니어로 가는 길
@MockBean - Spring boot에서 제공하는 어노테이션으로 Spring 컨테이너에 mock을 추가하고 싶을 때 사용 - Mock이란 객체를 흉내 낸 객체 - Junit 4) @RunWith(SpringRunner.class) 어노테이션이 붙은 테스트 클래스에서 사용 - Junit 5) @ExtendWith(SpringExtension.class) 어노테이션이 붙은 테스트 클래스에서 사용 - Mock은 타입 또는 빈 이름에 의해 등록 가능 - 타입에 의해 등록될 때는 해당 타입의 빈이 하나 존재하는 경우 mock으로 대체 - 이름에 의해 등록될 때는 해당 이름을 가진 빈이 존재할 경우 mock으로 대체 - 두 경우 모두 빈이 존재하지 않는다면 mock을 추가 예시(출처: Spring boot d..
B 트리와 B+ 트리는 데이터베이스에서 유용하게 쓰이는 자료구조라고 한다. 왜 데이터베이스에서 유용하게 쓰일 수 있는지에 대해 살펴보자. Topics 1. 디스크 구조 2. 디스크에 데이터가 저장되는 방식 3. 인덱스 4. 멀티 레벨 인덱스 5. M-way 탐색 트리 6. B 트리 7. 레퍼런스 1. 디스크 구조 디스크는 트랙과 섹터를 통해 데이터를 구분한다. 트랙은 육상 트랙과 같은 의미로, 위의 그림에서 빨갛게 칠해져 있는 구역이 하나의 트랙이다. 섹터는 피자를 잘랐을 때 한 조각에 해당하는 영역이다. 트랙과 섹터의 교집합을 블록이라고 하며, 블록은 트랙 번호와 섹터 번호를 통해 식별 가능하다. 블록 주소 = 트랙 번호 & 섹터 번호 블록은 바이트 수만큼의 칸으로 나누어져 있으며 각각의 칸은 오프셋이..
아래 두 개의 글에 이어 이번이 세 번째 String 관련 글인 것 같다. Java String으로 보는 동일성과 동등성 Java StringBuilder를 쓰는 이유 Java String은 왜 불변일까? 불변이기 때문에 얻을 수 있는 장점에 대해 알아보자. 장점 1. 안전 Immutable이기 때문에 안전하다. 몇 개의 예시를 살펴보자. 1. 여러 참조 변수가 같은 String 객체를 참조하고 있다고 하더라도 안전하다. String 객체를 누가 조작할 수가 없기 때문이다. 2. String 객체를 이리저리 전달할 때 원본 String 객체가 저장된 주소 자체를 넘겨도 안전하다. 전달받은 곳에서 원본 값을 직접 읽을 순 있으나 조작할 수는 없기 때문이다. 장점 2. 성능 및 효율 Immutable은 안전..
1. Introduction 메멘토 패턴은 behavioral design pattern 중 하나로, 객체가 이전 상태를 복원할 수 있도록 해준다. 메멘토 패턴에는 개념적으로 다음의 세 객체가 필요하다. - Originator: 상태를 저장하고자 하는 대상으로 memento를 만들고, 소비하는 객체 - Memento: Originator의 상태를 저장할 객체(POJO) - Caretaker: Originator를 이용하여 여러 memento를 추적하는(keep track) 객체 2. Example 텍스트 에디터를 구현한다고 생각해보자. 일반적으로 텍스트 에디터들은 undo와 redo를 제공하는데, undo와 redo 기능을 구현하기 위해 메멘토 패턴을 사용해볼 수 있을 것 같다. 세 개의 클래스를 만들었..
1. Introduction 2. 실생활 속 어댑터 패턴 3. Spring 속 어댑터 패턴 4. Reference 1. Introduction 어댑터 패턴은 현실의 어댑터를 코드로 표현한 것이다. 서로 호환되지 않는 두 클래스를 호환되도록 만들어준다. 찾아보면 어댑터 패턴에 대한 글들이 굉장히 많은데, 각각의 글마다 어댑터 패턴에 대해 *약간씩 다르게 설명하는 부분이 있다. 하지만 어댑터 패턴이라는 건, 디자인 패턴이라는 건 자주 쓰이는 구조에 편의를 위해, 의사소통을 위해 이름을 붙인 것 뿐 깐깐한 기준이 있는 것은 아닐 것이다. 어댑터 패턴을 적용해야 하는 상황은 100번 있으면 100번 모두 디테일이 다를 것이므로 설명 역시 완전히 일치할 수 없는 것 아닐까? 어댑터 패턴을 엄밀하게 정의하려고 하지..
Origin Origin이란 URI 스키마(프로토콜), 호스트 이름(도메인), 포트 번호의 조합을 말한다. SOP Same-origin policy SOP에 의해 웹 브라우저는 하나의 웹 페이지에서 다른 웹 페이지의 데이터에 접근하기 위한 스크립트가 있을 때, 두 웹페이지가 같은 origin일 때만 이를 허가한다. 이로써 한 웹 페이지에서 다른 웹 페이지의 Document Object Model(DOM)*을 통하여 민감한 정보에 대한 접근을 얻기 위해 작성한 악의적인 스크립트를 막는다. * DOM is an API for HTML, XML documents. It defines the logical structure of documents and the way a document is accessed a..
목차 Introduction 절차적인 도형 클래스 객체적인 도형 클래스 객체 지향적인 코드 VS 절차 지향적인 코드 Reference Introduction 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. 자료 구조*는 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다. *여기서 말하는 자료 구조는 List나 Set과 같은 인터페이스가 아니라 정말 어떤 자료를 저장하기만 하는 클래스를 말하는 것 같다(이 글은 클린 코드의 일부 내용을 발췌한 글이다). C 언어의 struct와 유사할 것 같다. 이 글 내내 자료 구조는 이러한 뜻을 가진다. 구체적인 예시를 통해서 살펴보자. 절차적인 도형 클래스 위의 코드에서 도형 클래스는 절차적이다. Geometry 클래스는 두 가지 도형 클래스를..
Contents 1. Introduction 2. @Conditional 모든 Spring 프로젝트의 Configuration에서 공통되는 부분이 있다면? Configuration이 공유될 때 발생할 수 있는 문제 @Conditional @Conditional을 이용한 개선 3. AutoConfiguration Spring Boot 애플리케이션을 실행하면 일어나는 일 Spring Boot의 핵심적인 특징 세 가지 톰캣이 뜨는 과정(Spring Boot의 AutoConfiguration이 적용되는 과정) 4. Reference Introduction Spring Boot는 Spring 플랫폼과 써드 파티 라이브러리에 대한 *주관을 가지고 있기에 *요란한 동작 없이 Spring Boot로 애플리케이션 개발을..
문제 상황 로그인 정보를 제대로 입력했음에도 기대한 응답이 나오지 않았다. 분명 DB에 사용자 정보를 저장하였고, 저장된 정보를 POST 메소드에 담아 보냈는데 말이다. 정상적으로 코드가 동작한다면 응답 본문에 어떤 정보가 나와야 하는데, 위와 같이 응답 본문에 아무것도 뜨지 않았다. ('어떤 정보'라는 것은 BadCredentialException과 관련 없으므로 무시한다.) 로그에 에러가 보이지 않아서 디버거를 통해 따라가보았다. CustomAuthenticationFilter.class (extends UsernamePasswordAuthenticationFilter) attemptAuthentication 메소드를 수행하는 중에 BadCredentialException이 발생하였다. 원인 왜 Ba..
흔히 접할 수 있는 에러는 아닌 것 같다. 그런데 흔하지 않은 상황이 닥쳐서 이 에러를 만났고, 에러의 원인을 찾고 해결하기 위해 구글링했으나 쉽게 답을 못찾다가 이해할만한 답을 찾아냈다. This occurs because we are using a different Hibernate session to find or create inventory items associated with the incoming stock. The inventory item cannot be associated with both sessions at the same time. It might be as easy as flushing the temporary session, but I need to investigate f..