일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- lambda
- Immutable
- 링커
- AutoConfiguration
- 토비의스프링3.1
- 프록시
- Kotlin for Java Developers
- ApplicationContext
- DesignPattern
- 자바
- 링킹
- 메이븐
- ORM
- IOC
- springboot
- hibernate
- java
- DispatcherServlet
- 클린코드
- JPA
- beanfactory
- 컴퓨터시스템
- Spring
- 토비의스프링
- gradle
- String
- 빌드툴
- springwebmvc
- FunctionalInterfaces
- exception
- Today
- Total
목록프로그래밍 (78)
엔지니어로 가는 길
* HttpMessageConverter가 무엇인지에 대해서는 다음 기회에 다루기로 한다. WebMvcConfigurer Spring은 `WebMvcConfigurer`라는 인터페이스를 통해 웹과 관련된 설정을 커스터마이징 할 수 있도록 돕는다. WebMvcConfigurer Defines callback methods to customize the Java-based configuration for Spring MVC enabled via @EnableWebMvc. @EnableWebMvc-annotated configuration classes may implement this interface to be called back and given a chance to customize the defau..
@EnableWebMvc - Spring에서 제공하는 어노테이션 - `@Configuration`이 붙은 자바 클래스 설정 파일에 사용될 수 있다 - 이 어노테이션이 붙을 경우 `WebMvcConfigurationSupport` 클래스로부터 Spring MVC 설정을 import 한다 (`HandlerMapping`, `HandlerAdapter`, `ConversionService` 등 웹과 관련된 빈들이 등록된다) @WebMvcAutoConfiguration - Spring Boot에서 제공하는 어노테이션 - 웹과 관련된 자동설정이 이루어진다 - spring-boot-starter-web 의존성을 추가하면 별도의 작업을 해주지 않아도 말 그대로 자동으로 설정된다 Spring Boot 자동설정과 관련해..
Table Of Contents 1. Nullable types 2. Nullable types under the hood 3. Safe casts 4. Importance of nullability 5. TMI 1. Nullable types The problem of nullability is sometimes referred to as billion dollar mistake. `NullPointerException` is really hard to fix. Modern approach: to make NPE compile-time error, not run-time error 코틀린은 nullable types과 non-nullable types을 구분한다. val s1: String = alwa..
속 디미터 법칙에 대한 내용을 정리한 글이다. 디미터 법칙 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙이다. 구체적으로 예를 들자면 어떤 클래스 C의 메서드 M에서는 아래와 같은 메서드만 호출해야 한다. 클래스 C의 메서드 클래스 C의 인스턴스 변수로 저장된 객체의 메서드 메서드 M 안에서 생성한 객체의 메서드 메서드 M의 인자로 넘어온 객체의 메서드 아래의 코드를 살펴보자. ctxt.getOptions().getScratchDir().getAbsolutePath(); // 아파치 프레임워크 속 코드 만약 위의 코드에서 ctxt가 객체라면(자료 구조가 아니라) 이는 디미터 법칙을 어긴 것이다. 메서드 체이닝이 중요한 것이 아니다. 디미터 법칙을 어겼는지를 결정하는 요소는 ctxt, Opti..
Table of contents 1. Extension functions 2. 표준 라이브러리 속 확장 함수 3. Calling Extensions 4. 확장 함수가 중요한 이유 5. TMI Extension functions Extension functions Extension functions(이하 확장 함수)는 클래스 외부에서 정의되지만 클래스의 멤버 함수인 것처럼 사용할 수 있는 함수이다. // 확장 함수 정의 fun String.lastChar() = this.get(this.length - 1) // 확장 함수 사용하는 예시 val c: Char = "abc".lastChar() 위와 같이 `lastChar()`라는 extension 함수를 정의하면 `lastChar` 함수가 마치 String..
최근에 지인에게 예외가 뭐냐는 질문을 받았다. 코드에서 예외를 다루는 건 익숙한데 예외에 대해 설명하려니 긴가민가한 부분이 있었다. ‘예외랑 에러랑 어떻게 다르더라? 예외는 이름에서 알 수 있듯 예외적인 상황과 관련이 있는데, 어디선가 예외도 정상 플로우라고 들었던 것 같은데 핸들링하고 있는 예외는 정상 플로우로 보는 거였나?’ 아래의 글에서 토비의 스프링을 읽으며 Checked exception과 Unchecked exception에 대해 간략히 정리한 적이 있는데, 이번에는 오라클 문서를 읽으며 예외가 무엇인지 기본 개념에 대해 정리해보려고 한다. JAVA Error와 Checked/Unchecked Exception Error java.lang.Error 클래스의 서브 클래스들이 해당된다. 에러는 ..
코세라에 있는 Kotlin for Java Developers를 들으며 정리한 내용이다. Table of contents 1. Hello world example 2. Variables 3. Functions 4. Control Structures 5. Exceptions "Hello, world" example 간단한 예제를 통해 코틀린의 특징을 살펴보자. fun main(args: Array) { val name = if (args.size > 0) args[0] else "Kotlin" println("Hello, $name!") } - 세미콜론이 필요없다. - 함수는 `fun`을 이용하여 정의한다. - 함수가 top level(package level)에 존재할 수 있다. - 인자가 없는 메인 함..
코세라에 있는 Kotlin for Java Developers를 들으며 정리한 내용이다. 강의 소개 및 특징 - 코틀린을 배우고 싶은 자바 개발자를 위한 강의 - Kotlin/JVM(Server & Android) 플랫폼에 대해서만 다룸 - 자바와 비교했을 때 코틀린이 어떤 점이 새롭고, 어떤 점이 다른지에 초점을 맞춤 - 영어 강의 What is Kotlin? - general-purpose, FP + OOP 코틀린은 함수형 프로그래밍과 객체지향 프로그래밍을 모두 지원하는 general-purpose 언어이다. - open source JetBrains에 의해 개발된 오픈 소스 프로젝트이다. - statically typed language 자바와 마찬가지로 statically typed 언어이나 코틀..
클린 코드에 쌓인 먼지를 털어낸 뒤 다시 읽기 시작했다. 저자가 서문에서 이 책은 가볍게 읽을 책이 아니고 앞으로 갔다가 뒤로 갔다가 하면서, 많은 노력을 들여 코드를 최대한 이해하려고 해야 한다고 신신당부했다. 그렇게 읽어보려고 한다. 90p에 보면 GeneratePrimes 클래스가 나쁜 버전으로 주어지고, 이를 리팩터링 한 결과를 다음 페이지에 보여주고 있다. 그냥 보는 것보다는 나라면 어떻게 고칠지 생각해보고, 실제로 고쳐보고, 정답(?)과 비교해보는 게 더 좋을 것 같아서 한 번 리팩터링을 해보았다. 먼저 나쁜 버전 원본이다. public class GeneratePrimes { public static int[] generatePrimes(int maxValue) { if (maxValue >..
버전 충돌이란 하나의 dependency 그래프 내에 같은 라이브러리의 버전이 두 개 이상 존재하는 것을 말한다. 빌드툴은 버전 충돌을 해결해야 하며, 빌드툴마다 다른 버전 충돌 해결 전략을 가질 수 있다. 가장 대표적인 빌드툴에 해당하는 메이븐과 그래들은 버전 충돌 해결 전략이 다르다. 이 글에서는 버전 충돌이 무엇인지, 메이븐과 그래들에서는 각각 버전 충돌을 어떻게 해결하는지에 대해 알아본다. 참고) 메이븐에서는 버전 충돌 해결 프로세스를 dependency mediation, 그래들에서는 version conflict resolution이라고 부른다. The concepts of version resolution Version resolution란 unresolved dependency 그래프를 입..