Method chaining - Wikipidea : http://en.wikipedia.org/wiki/Method_chaining

자바 7에 추가될뻔한 기능이었다고 한다. ^^; 자바의 빈클래스에 막 길들어지기 시작한 내게는 조금 낯선 형태랄까?
setter 메소드에서 클래스(this)를 리턴해주는 형태니까...

Chaining.java
public class DateChaining {

    private String year;
    private String month;
    private String day;
    
    public String getMonth() {
        return month;
    }

    public DateChaining setMonth(String month) {
        this.month = month;
        return this;
    }

    public String getDay() {
        return day;
    }

    public DateChaining setDay(String day) {
        this.day = day;
        return this;
    }

    public String getYear() {
        return year;
    }

    public DateChaining setYear(String year) {
        this.year = year;
        return this;
    }

    @Override
    public String toString() {
        return "DateChaining [year=" + year + ", month=" + month + ", day="
                + day + "]";
    }

}

ChainingTest.java
package test;

import main.DateChaining;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;

import org.junit.Test;

public class ChainingTest {
    
    @Test
    public void 체이닝_테스트() {
        //given
        DateChaining chain = new DateChaining();
        //when
        chain.setYear("2011").setMonth("07").setDay("17");
        //then
        assertThat(chain.getYear(), is("2011"));
        assertThat(chain.getMonth(), is("07"));
        assertThat(chain.getDay(), is("17"));
    }
    
    @Test
    public void 순서흐트러진_체이닝_테스트() {
        //given
        DateChaining chain = new DateChaining();
        //when
        chain.setMonth("07").setDay("17").setYear("2011");
        //then
        assertThat(chain.getYear(), is("2011"));
        assertThat(chain.getMonth(), is("07"));
        assertThat(chain.getDay(), is("17"));
    }
    
    @Test
    public void 중복된_필드에대한_세트선언시() {
      //given
        DateChaining chain = new DateChaining();
        //when
        //
        chain.setYear("2011").setMonth("07").setDay("17").setYear("2012");
        //then
        assertNotSame(chain.getYear(), is("2011"));
        assertThat(chain.getMonth(), is("07"));
        assertThat(chain.getDay(), is("17"));
    }
}
이렇게 쓰는 것에 낯설기는 하지만... 익숙하게 사용했을때 어떤 장점이 있는지 확인해보고 익혀두는 것도 나쁘지 않겠다.

로컬환경에서 개발을 하다보면, URL에 프로젝트명이 들어가는 것이 번잡스럽고 귀찮은 때가 참 많다. Link를 통해서 연결을 할 떄에도 이에 대한 고려를 해야하는 것이 번거롭기 그지없다.

이클립스 모듈설정을 수정하여 로컬URL에서 프로젝트명을 제거해보자.



  이클립스에서 실행하는 서버를 더블클릭하면 아래 그림과 같이 서버의 정보를 확인할 수 있는 탭이 열린다.

  그 열린 탭의 하단을 보면 [Modules] 라는 탭이 보일 것이다.

  그 탭을 클릭하자.

  그리고는 'Web Modules' 에서 로컬 실행경로(Path : 화면에서는 /honeymon.mvc)를 선택하고, 오른쪽에 있는 버튼들 중 [Edit]를 클릭한다.


[Edit]를 클릭하면 아래의 내용을 가진 팝업창이 뜬다.

'Path'를

'/honeymon.mvc'

에서

'/'

으로 변경한다. 그리고는 [OK] 버튼을 눌러주자.

그런 다음, [Server]탭에서 서버를 선택한 후 [Clean] 과 [Publish]를 차례로 클릭해준다.

그 후에 서버를 재시작하고 URL을

http://localhost:8080/

으로 입력하면 아래와 같이 내용이 나타나는 것을 확인해볼 수 있다.

아래처럼 나타나면 정상적으로 적용된 것이다.

@_@) 이클립스의 workspace를 바꿔주네, 이클립스에서 사용하는 서버의 설정파일을 수정하네

라는 글들이 있었지만, 위의 방법이 제일 빠르고 손쉬웠다.

나는 그랬다.



책에는 많은 정보가 담겨있다.
그래서 많은 사람들이 정보를 얻기 위해 책을 읽는다.

하지만, 그 책에 있는 정보만으로는 할 수 없는, 얻을 수 없는 것들이 꽤 많다.
그것은 일을 다시 시작하고 모르는 것들을 배워가면서 눈에 보이기 시작한다.
Java를 이용한 서비스, 컨트롤러 단의 처리, 그것을 프리마커를 이용하여 화면에서 받고 스크립트를 이용하여 작동시키는 것들은 한 분야의 책만을 가지고 알 수는 없다. 물론 꽤 많은 책들이 기술과 관련한 정보를 전달하려고 노력하지만 여러가지 이유로 전달하는 데에 한계가 따른다. 그것을 인정하게되면 많은 것들이 눈에 들어오기 시작한다. 그리고 사람이 눈에 들어온다. 그 사람은 내가 필요로 하는 정보들을 이미 경험 속에 축적해두고 있다. 그 사람의 힘을 빌어 알게 되는 것들이 참 많다.

_IMG_0888
_IMG_0888 by redslmdr 저작자 표시비영리동일조건 변경허락



사람에게 잘하자.
일의 시작과 끝, 그리고 그 연장선에는 사람이 있다.
정보의 시작과 끝, 그리고 그 연장선에도 사람이 있다.

^^ 오늘 하루도 즐겁게 보냅시다!!  
11. 6. 26 오후 4시 02분 09초: Refreshing [/SpringMVCtest/pom.xml]
11. 6. 26 오후 4시 02분 25초: Maven Builder: FULL_BUILD 
11. 6. 26 오후 4시 02분 26초: [WARN] 
11. 6. 26 오후 4시 02분 26초: [WARN] Some problems were encountered while building the effective model for com.honeymon:spring:war:1.0.0-BUILD-SNAPSHOT
11. 6. 26 오후 4시 02분 26초: [WARN] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 148, column 12
11. 6. 26 오후 4시 02분 26초: [WARN] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-surefire-plugin is missing. @ line 208, column 12
11. 6. 26 오후 4시 02분 26초: [WARN] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-war-plugin is missing. @ line 156, column 12
11. 6. 26 오후 4시 02분 26초: [WARN] 
11. 6. 26 오후 4시 02분 26초: [WARN] It is highly recommended to fix these problems because they threaten the stability of your build.
11. 6. 26 오후 4시 02분 26초: [WARN] 
11. 6. 26 오후 4시 02분 26초: [WARN] For this reason, future Maven versions might no longer support building such malformed projects.
11. 6. 26 오후 4시 02분 26초: [WARN] 
11. 6. 26 오후 4시 02분 55초: Maven Builder: AUTO_BUILD 
지금 넷북에 깔려있는 STS는 2.6.2 버전이다. Spring template project 를 생성후에 위와 같은 메시지가 나타난다.
maven과 관련된 플러그인 버전 정보가 빠져있다는 것이다.
그래서 프로젝트에 있는 pom.xml 을 열어보았다. <version></version>이 없다. 
그래서 http://mvnrepository.com/ 여기에서 해당하는 플러그인들의 버전을 확인하고 넣어줬다.
 
DB : sybase
Caused by: com.sybase.jdbc3.jdbc.SybSQLException: A wrong datastream has been sent to the server. The server was expecting token 32 but got the token 33. This is an internal error.
해당 쿼리를 실행시키기 위해 주어지는 paramaterClass(혹은 파라메터)에 null값이 없는지 확인해보기 바란다.

 

+ Recent posts