이클립스를 쓰다가 인텔리제이로 넘어오면 신세계를 맛보는 느낌일것이다.일단 뭐가 더 좋은지도 모르면서 그저 유료툴이니까 더 좋아보이는 플라시보효과도 있을거고 이클립스에서는 뭔가 불안정했던 디자인적요소도 매우 깔끔해진것도 느낄것이다.그런 기쁨 마음으로 새 프로젝트를 시작하고자 스프링 mvc 프로젝트를 생성하려고하면 이클립스와는 뭔가 다름을 알수있을텐데 이클립스에서 지원해주는 spring mvc 초기 프로젝트 설정이 인텔리제이에서는 찾을 수가 없다.구글에 검색하면 왠지 있는것같은 게시물들이 막 나오는데 아무리 찾아도 없다. 아마도 버전이 올라오면서 사라진게 아닐까...생각하는데 찾고찾다가 도저히 없어서 나같은 사람을 위해 포스팅을 진행하게 됐다. intellij 는 이클립스와 명칭부터 약간 다른데 짧게 설명하..
자바에 추가된지 참 오래된기술이지만 아직도 익숙치않은 기술이 하나있다.Generics(제네릭)이 바로 그것인데 제네릭에대한 포스팅을 간략히 진행하려한다.사실 제네릭이란 단어는 생소하더라도 초보개발자들도 당연하게 사용하고있는 부분이있는데 콜렉션프레임워크에서 타입을 제한할때 주로 사용하고있다. List numbers = new ArrayList(); ArrayList는 선형 자료구조로 배열과 유사한 자료구조이다. 배열과 다른점은 동일한 자료형만 관리할 수 있다는 점과 크기변환이 자유롭지않다는 것이다.제네릭을 사용하지않을때는 이런식으로 사용한다. List numbers = new ArrayList(); numbers.add(100);numbers.add(200); Object element = numbers...
이번에 알아볼 패턴은 Decorator Pattern(데코레이터 패턴)이다. 구현법이 데코레이터 패턴과 비슷한 패턴들이 몇 존재하므로 구현법으로 구분하려하지말고 목적이 뭔지 잘 파악하는게 중요할듯 하다. 데코레이터 패턴은 전략 패턴(Strategy Pattern)과 마찬가지로 합성(Composite)을 이용하는 패턴이다. 내부적으로 실제 비즈니스로직을 처리하는 객체를 인스턴스변수로 갖고있으면서 해당 비즈니스로직의 처리 결과값을 자신의 이름이 말하든 한번 더 가공해주는 패턴이다. 소스로 확인해보자. //놀이공원 인터페이스 처음엔 A, B였는데 예제도 진화하고있다...interface AmusementPark {public int getTicketCost(); //티켓 값을 반환하는 추상메서드} //놀이공원..
앞선 두 포스팅을 통해 전략패턴(Strategy Pattern)과 템플릿 메서드 패턴(Template Method Pattern)에 대해 알아봤다. 이번에 알아볼 패턴은 템플릿 콜백 패턴(Template Callback Pattern)인데 앞선 두 패턴을 적절히 혼합한 형태라 크게 어려운 부분은 없다.전략 패턴의 경우 재사용하고자하는 클래스를 상속이 아닌 인스턴스 변수로 취급하는 합성(Composite)을 이용한다. 그리고 인터페이스를 활용한 다형성과 setter 메서드를 이용해 사용하고자하는 전략(인스턴스 변수가 참조하는 객체)을 필요할때마다 변경해가며 호출함으로서 변화에는 닫히고 확장에는 열린 소스를 짤수있게하는 패턴이다.템플릿 메서드 패턴의 경우는 템플릿이라는 단어에서부터 알수있듯이 크게 돌아가는 ..
자바에서 기 작성된 소스를 재사용하는 방법은 사용하고자 하는 클래스에게 상속하거나 혹은 인스턴스멤버로 합성(composite)하는 방법이 있다. 지난번 포스팅인 Strategy Pattern은 두 가지 방법중 합성을 선택해 외부에서 전략을 주입하며 사용하는 법에 대해 알아봤다.이번에는 상속을 사용하는 패턴에 대해 알아보자. 바로 Template Method Pattern(이하 템플릿 메서드 패턴) 인데 이름에서 느껴지듯 기 작성된 소스(Template)가 존재하고 해당 소스에서 부분적으로 메서드를 오버라이딩하는 패턴이다. 이렇게 작성할 경우 전체적인 뼈대인 기존 소스는 동일하게 작동하며 오버라이딩한 부분만 구현클래스별로 작동할것이다. 코드로 살펴보자 abstract class A{ //추상클래스로 작성한..
디자인패턴의 꽃이라 불리는 Strategy Pattern 에 대해 알아보자. 기본적으로 자바를 배울때 자바는 객체지향언어이고 그로인한 장점을 상속을 통해 이미 작성되어있는 코드를 재사용할 수 있는 장점이 있다고 배운다. Strategy Pattern은 그런 상속을 통한 소스 재사용을 상속이 아닌 합성(composite)을 통해 사용하는것에 초점을 맞춘다. 굳이 이렇게 거창하게 디자인패턴이라는 단어가 아니라도 다중상속이 지원되지않는 자바에서 상속 대신 합성을 사용하여 소스를 재사용하고자 하는 경우는 많다. 대표적으로 is a, has a 로 구분해서 상속과 합성을 알맞게 사용하자는 말이 있는데 합성이 구체적으로 뭔지부터 알아보자. //getString() 을 재사용 하고싶다.class A{ public S..
이제는 JSP 개발시 MVC 패턴으로 작업하는게 당연시 되고있다. MVC패턴이란 화면에 보여줄 view 에 대한 작업, DB에서 조회 혹은 DB에 저장할 내용을 중간에 가공, 처리하는 비즈니스로직, DB에 연결하는 DAO 작업까지 JSP에서 다 하던걸 패턴화 시켜 분리하여 개발하는것인데 각각의 역할에 따라 파일들을 분리해서 작업하는것이다.그렇게 하는 이유는 소스를 분리함으로서 각 소스의 목적이 명확해 지고 유지보수하는데 있어서 용이하기 때문이다. MVC 패턴으로 개발하고자하면 자연스레 한 페이지에 5개의 파일이 생성되는데 JSP, Controller, DTO, Service, DAO 이다. 오늘 포스팅할 내용은 이 파일들 중 Service에 관한것이다. 오랜시간 궁금했던 것Service 에 대해선 항상 ..
현재 널리 사용되고있는 자바 프레임워크인 Spring의 핵심 가치중 하나는 IoC라 할 수 있다. IoC는 Inversion of Control의 약자로 번역하면 제어의 역전이라는 뜻인데 스프링 컨테이너를 의미한다. 간단하게 말하면 개발자들이 직접 new 연산자를 통해 생성하던 객체제어를 스프링 컨테이너가 가져감으로서 애플리케이션 내에서 사용되는 객체의 생성과 소멸(LifeCycle)을 프레임워크가 담당하겠다는 것이다. 그리고 그런 IoC를 구현하기위해 도입된게 DI인데 IoC는 공부를 하면 할수록 너무 방대한 개념인것같아 아직 내가 다루기엔 무리가 있는듯해 DI에 대해서만 포스팅을 해보겠다.DI는 Dependency Injection의 약자로 의존성 주입이라는 말로 번역된다.여기서 의존성이란 간단하게 ..
Spring4, Maven 기준. pom.xml 에 의존성 추가 org.apache.tilestiles-jsp3.0.5org.apache.tilestiles-core3.0.5 스프링 빈 설정파일에 view resolever 수정(servlet-context.xml) /WEB-INF/views/layout/tiles-layout.xml 위 설정에서 짐작했겠지만 tiles-layout.xml 추가 DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" "http://tiles.apache.org/dtds/tiles-config_2_0.dtd"> 설명을 하자면 default 로 설정되어있는 ..
이런저런사이트에서 이제막 자바를 배우기 시작한 분들이 많이 하는 실수중 하나가 문자열 비교이다. String 변수와 리터럴 문자열을 비교하는데 동일한 값인데 false가 떨어진다는 것이다. 이런 질문에 대한 답변은 주로 '문자열은 eqlaus()로 비교하세요.' 라는 답변이 주로 달리는데 이러다보니 equals()가 문자열 비교를 위해 존재하는 메서드인줄 아는 분들이 있는것같아 이번 포스팅을 작성하게 됐다. 일단 String 클래스의 특수성부터 확인해보자. 문자열은 무조건 equals()로 비교하라고 하지만 ==연산자가 항상 false를 반환하진 않는다. String str1 = "str"; System.out.println(str == "str"); String str2 = new String("str..
- Total
- Today
- Yesterday
- spring cloud
- code
- Design Pattern
- java
- javascript
- 정규표현식
- servlet
- Kotlin
- DesignPattern
- java8
- mariadb
- TEST
- http
- generics
- backend개발환경
- Spring
- go-core
- programming
- frontend개발환경
- db
- toby
- Git
- MySQL
- JPA
- clean code
- OOP
- frontcode
- Jackson
- EffectiveJava
- JavaScript Core
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |