1. 이슈와 해결 레거시 코드가 있는 상태에서 기존 코드의 동작을 확장시키는 코드를 만들일이 있었다. 한 문장이지만 표현이 거창해서 그렇지 사실 대부분의 개발은 첫 문장과 같은 형태가 될것이다. 기존 코드를 어떤방식으로 확장하면 좋을까를 고민하다가 상속과 오버라이딩을 이용하기로 했다. 간략화된 코드는 아래와 같다. @Service @RequiredArgsConstructor class AService { private final BService bService; @Transactional void aMethod() { bService.bMethod1(); bService.bMethod2(); } } @Service class BService { @Transactional void bMethod1() { ..
spring bean 설정시 lite mode 라는게 있어서 찾아보고, 그에대해 정리해보려한다. 일단 lite mode 는 java 설정에서만 사용할 수 있다. 보통의 java 설정파일을 알아보자. @Configuration public class BeanConfig1 { @Bean public ObjectMapper objectMapperBean() { return new ObjectMapper(); } }평소에 많이 사용하는 java 설정 내용이다. @Bean 애노테이션을 이용해 spring bean 을 생성한다. 그리고 이 java 클래스가 설정 클래스임을 나타내기위해 @Configuration 애노테이션을 사용한다. @Configuration 애노테이션은 설정 클래스임을 나타내며 그 자신도 spr..
음..아마 2~3년전에 DI에 관한 포스팅을 하나 했던걸로 기억하는데 그때는 DI가 무엇인지에 대해 적었다면 이번엔 Spring이 어떤방식으로 DI를 해주는지 적어보려한다. 이 글을 적게된 계기는 가장 마지막에 소개할 생성자 주입 방식을 요근래에 알게됐기때문이다. 1. Field Injection가장 간단하고 코드량이 적고, 그때문에 가장 많은 분들이 이용하는 방식이 아닐까싶다. 3개 회사를 다녀봤지만 전부 필드 주입방식을 사용하고있었다. @Service class PersonService{ @Autowired private PersonRepository personRepository; } 이 방식은 가장 간단하고 편리하지만 스프링에 종속적이게된다는 단점이 있다. 뭐 사실 코드의 변경없이 기반 프레임워크..
객체를 초기화할때는 보통 생성자를 이용하게된다. class Person { private int age; public Person(){ this(29); } public Person(int age){ this.age = age; } } 스프링 빈을 이용할때는 빈 라이프사이클에 알맞는 초기화 방법들을 제공하고있는데 그것들에 대해 알아보자. 1. InitializingBean, DisposableBean Interface스프링은 초기화, 소멸을 지원하기위한 인터페이스를 제공하는데 그것이 InitializingBean, DisposableBean이다. public interface InitializingBean { void afterPropertiesSet() throws Exception; } public ..
생성자를 통한 주입, 설정자(setter)를 통한 주입은 평소에도 많이 사용해오던 방식이라 익숙한데 static factory method를 이용한 spring bean 생성은 어렵다기보다 익숙하지않았다. 그래서 간략하게 정리를 해보고자 한다. 1. static factory Methodclass Person { private int age; public static Person newInstance(int age) { Person person = new Person(); person.age = age; return person; } private Person(){} } Person 클래스가 있고 해당 클래스의 인스턴스를 생성하는 팩토리 메서드를 제공한다. 팩토리메서드의 사용을 강제하기위해 기본생성자는 ..
얼마전 포스팅했던 Joda Time에 대해 사내발표를 진행했는데... 사내 프로젝트 내에서 Date타입으로 선언된 필드들을 Joda Time으로 변경하자는 의견이 나왔고, 다른 개발자들이 별다른 설정이나 추가코드를 작성할 필요없이 Joda Time 클래스를 사용할 수 있게 하라는 지시가 내려왔다. 이렇게까지 일을 벌일(?) 생각은 없었는데 그 작업을 맡게되었고 일단 날짜 데이터를 화면에서 보내면 LocalDate(혹은 LocalDateTime)로 자동으로 받을 수 있게끔 작업하는것부터 시작이 됐어야했다. 그 작업을 포스팅으로 남겨두려한다. 1. Spring Data Binding일단 Spring 컨트롤러는 매개변수로 변수를 넣어놓으면 알아서 해당 타입으로 값을 갖다 쓸 수있게 되어있다.@RequestMa..
현재 널리 사용되고있는 자바 프레임워크인 Spring의 핵심 가치중 하나는 IoC라 할 수 있다. IoC는 Inversion of Control의 약자로 번역하면 제어의 역전이라는 뜻인데 스프링 컨테이너를 의미한다. 간단하게 말하면 개발자들이 직접 new 연산자를 통해 생성하던 객체제어를 스프링 컨테이너가 가져감으로서 애플리케이션 내에서 사용되는 객체의 생성과 소멸(LifeCycle)을 프레임워크가 담당하겠다는 것이다. 그리고 그런 IoC를 구현하기위해 도입된게 DI인데 IoC는 공부를 하면 할수록 너무 방대한 개념인것같아 아직 내가 다루기엔 무리가 있는듯해 DI에 대해서만 포스팅을 해보겠다.DI는 Dependency Injection의 약자로 의존성 주입이라는 말로 번역된다.여기서 의존성이란 간단하게 ..
- Total
- Today
- Yesterday
- Design Pattern
- MySQL
- backend개발환경
- JavaScript Core
- java
- spring cloud
- OOP
- frontend개발환경
- programming
- code
- DesignPattern
- servlet
- TEST
- Jackson
- 정규표현식
- Spring
- JPA
- clean code
- go-core
- db
- java8
- frontcode
- Git
- generics
- EffectiveJava
- Kotlin
- http
- mariadb
- javascript
- toby
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |