블로그 이미지
Max.

calendar

          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            

Notice

2013. 9. 10. 13:57 개발관련

springroo에서 mongo* 명령시, spring-data-mongodb 1.2.1.RELEASE 버전으로 dependency가 설정되는데, 빌드하면 mongoOperations 에 대한 NoSuchMethodError 를 발생시킨다. 이는 spring-data-commons 버전의 의존성과 관련있는데, spring-data-jpa 버전이 1.2.0으로 spring-data-commons 의 1.4.1에 의존되어 있고, spring-data-mongo는 1.5.1에 의존하고 있어서 의존성이 꼬여버린다. spring-data-jpa를 1.3.2 바꾸면, spring-data-commons의 1.5.1로 의존하게 되고 (또는, 직접 exclude시키고 주입해도 된다), 관련 문제는 없어진다.


spring-roo로 작업시 의존성이 자동생성되는 코드에 의존하게 되는데 이런부분은 버전업시 잘 정리하면서 사용하면 될것 같다.



찾아보니, spring-jira에도 있군... https://jira.springsource.org/browse/DATAMONGO-716 

posted by Max.

댓글을 달아 주세요

2013. 7. 12. 16:55 개발관련


akka 기본 패키지에 있는 설정파일 대신, 원하는대로 설정한 파일을 읽어서 적용된 내용을 보고 싶을때 아래처럼 설정하면 됨.

@Bean(name = "mySys", destroyMethod = "shutdown")
    public ActorSystem actorSystem() {
        actorSystem = ActorSystem.create("mySys",ConfigFactory.load("META-INF/system/application.conf"));
        System.out.println(actorSystem.settings().toString());
        return actorSystem;
    }

끝.


posted by Max.

댓글을 달아 주세요

2013. 3. 18. 17:04 개발관련

스프링엔 org.springframework.web.servlet.view.velocity.VelocityConfigurer라는 것이 있어서 velocity 설정을 도와준다. 헌데, #parse로 선언된 macro 수정시 수정된 macro를 인식 못하고, tomcat을 재시작해야된다. 개발시 여간 번거러운게 아니다. 


사실 velocity Engine엔 그런 것이 가능하게 되어 있는데, VelocityConfigurer 에서는 설정할수 없다. 해서 그런 기능이 가능하게 VelocityEngineFactory를 확장하거나 VelocityConfigurer  재구현 하면 된다. 


재구현시 아래 처럼 속성를 넣어주기만 하면 된다.


...

private Boolean velocityEngineReloadable = false;


public void setVelocityEngineReloadable(Boolean velocityEngineReloadable){

this.velocityEngineReloadable = velocityEngineReloadable;

}


@Override

protected void postProcessVelocityEngine(VelocityEngine velocityEngine) {

...

velocityEngine.setProperty(RuntimeConstants.VM_PERM_ALLOW_INLINE_REPLACE_GLOBAL, velocityEngineReloadable);

...

}

...


설정파일에 <property name="velocityEngineReloadable" value="true"/> 비슷하게 하면 될것이다.



posted by Max.

댓글을 달아 주세요

2013. 3. 8. 17:38 개발관련

1) project ~

 : 프로젝트 생성


2) persistence setup --database MSSQL --provider HIBERNATE

: DB설정, database.properies 파일 알맞게 수정.


3) download status

: addon 플러그인 상태 확인


4) download accept terms of use

: 허락


5) osgi install --url file:/E:/JAVA/REPOSITORY/maven3/net/sourceforge/jtds/jtds/1.2.4/jtds-1.2.4.jar

:접속할 DB 드라이버 설치


6) osgi start --url file:/E:/JAVA/REPOSITORY/maven3/net/sourceforge/jtds/jtds/1.2.4/jtds-1.2.4.jar

: 구동


7) database introspect --schema dbo --enableViews 

: 리버스할 테이블 보기


8) database reverse engineer --schema dbo --package ~.domain --testAutomatically --enableViews 

: 클래스 생성




posted by Max.

댓글을 달아 주세요

2012. 12. 17. 17:00 개발관련


스프링 웨비나에 소개된, 거들떠 볼 UI 관련 기술


- Lumbar : http://walmartlabs.github.com/lumbar

- Thorax : http://walmartlabs.github.com/thorax/stable

- Thorax + Lumber Sample : https://github.com/walmartlabs/thorax-example

- http://functionsource.com/post/lumbar-support-for-your-thorax-introducing-an-opinionated-backbone-application-framework



npm 부터 설치해야 하는구나...






posted by Max.

댓글을 달아 주세요

2012. 8. 29. 15:49 개발관련

1) 방법


myBatis는 MapperScannerConfigurer 를 통해 interface 기반의 Mapper를 등록하여 매핑한다. MapperScannerConfigurer 의 스캐너 기능은 Spring의 ClassPathBeanDefinitionScanner를 확장한 것이다.  ClassPathBeanDefinitionScanner는 ClassPathScanningCandidateComponentProvider를 확장한 것이다.  ClassPathScanningCandidateComponentProvider는  resourcePattern라는 속성을 제공하고 있다. 이것의 기본값은 **/*.class 로 모든 클래스를 스캔하게 된다. 


보통 spring 의 스캐너 기능은 리소스에 대한 패턴을 이용해서 그 편리함이 높다.  그런데 구현확장하는 과정에서 resourcePattern를 더이상 찾아볼수 없게 된것이다.


MapperScannerConfigurer 의 inner class에 ClassPathBeanDefinitionScanner를 확장한 Scanner가 있는데 스캔을 실행하기 전에 setResourcePattern()를 이용해 적당한 값을 넣어주면 패턴을 이용한 스캔이 가능하게 된다.




2) 문제


MapperScannerConfigurer는 basePackage 속성값으로 스캔을 하는데 Mapper 후보군으로 해당 basePackage 이하의 모든 Interface 구현체를 올려놓고 등록해 버린다. 그때 호출자와 매핑을 시도하는데 문제가 발생한다. 예를들어 AccountDao 를 테스트 하면 xxx.AccountDao.save를 잘 호출한다. 그런데 이를 이용한 Service를 구현하고 호출하면 AccountService.save를 호출해 버린다. 


물론 basePackage 를 특별한 패키지로 구분하여 관리하면 이같은 문제는 없다. 스캔 대상을 달리 정하면 되니까 (xxx.mapper 패키지에만 매퍼파일을 넣으시요... 같이) 하지만 도메인 기준으로 패키지명 분류로 하면 위와 같은 방법은 곤란하다. 다른 방법이 있긴 하다 basePackage 가 String형이긴 하지만, 콤마(,)로 여러개를 등록할수있다. 해서 xxx.A.dao, xxx.B.dao, xxx.C.dao 이렇게 등록해도 된다. 다만, 설정파일이 지저분해지고, 도메인 추가할때마다 넣어주는걸 기억할수 있다면 그리 나쁜 방법은 아니다.


Spring의 compoent-scan 처럼 include와 exclude 기능이 있다면 좋겠지만 현재는 없고 문제를 해결해야 한다면...

posted by Max.

댓글을 달아 주세요

  1. 포도농장 2012.10.25 11:03  Addr Edit/Del Reply

    이해하는데 도움이 되었습니다. 감사합니다.

2012. 8. 21. 16:36 개발관련

오래전 arawn 님이 만들고 현재는 버려진 spring-data-sqlmap 프로젝트와 비슷한 걸 만들어야 할 일이 생겼다. 해서 해당 프로젝트를 뜯어볼 요량이다.


그런데 소스버전이 오래되어서 돌려보기도 어렵다... 많은 자바 개발자가 스프링을 사용하고 myBatis를 사랑(?)하는데 왜 이런 프로젝트가 발전하지 못하고 있을까... ORM 말고 어떤 대체제가 있는걸까? 내가 찾지 못한.... 뭘까...ㅡㅡ;;;


그나저나 객체지향이란 무엇일까....

posted by Max.

댓글을 달아 주세요

  1. 자세한건 Arawn님이 아실텐데... 컨셉이 저 프로젝트에서 https://github.com/spring-sprout/egov-data/tree/master/egov-data-ibatis 로 옮겨온걸로 알고 있습니다. 필요로 하시는게 맞을지 모르지만요.

    • Max 2012.08.22 16:06  Addr Edit/Del

      앗... 그런가요....필요로 하는게 맞아요 :)

2012. 8. 21. 16:25 개발관련

spring-data-commons-core 프로젝트가 좀 이상한게 있는데 버전이 낮으면, Spring3.x 일부 버전과 충돌된다. spring-data-commons-core 프로젝트 홈페이지에 나온 버전을 써도 그런다. 찾아보니 최신버전은 http://central.maven.org/maven2/org/springframework/data/spring-data-commons-parent/ 여기서 제일 높은 버전을 찾아 POM에 넣으면 문제가 사라진다. 현재 최신은 1.3.2.RELEASE 버전이고 이를 dependency 시키면 된다.


이렇게 별 관심 없는 프로젝트에서 삽질하다 Spring 4.0 Properties가 있는걸 보고 이건뭐지... Spring JIRA를 급히 들어가 보니 로드맵(https://jira.springsource.org/browse/SPR)에도 없는 버전닝 아닌가... 요 프로젝트엔 재밌는 녀석들이 많나 보다...


그나저나 Spring Roo 는 어떻게 되어 가고 있을까.... 


posted by Max.

댓글을 달아 주세요

2012. 6. 19. 17:04 개발관련

순서... (JIRA4.0.2 버전에서 테스트함)


1) XML-RPC Plugin 설치여부 확인

Administrator의 Plugin 항목에서 찾아 볼수 있고, 기본으로 깔려 있음. 하지만 활성화(Enable)되어 있지는 않으니 클릭하여 Enable로 바꿀것.


2) Remote API calls ON 확인

Administrator의 General Configuration 메뉴의 Options 에 'Accept remote API calls' 라는 것이 기본적으로 OFF 되어 있다. 아래 Edit 버튼을 통해서 'ON' 으로 변경하면 된다.


끝.


옵션) 이클립스에서 접속하기

My-lyn의 new Query로 접속하는데, URL은 http://{서버아이피}:{포트} 로 접속한다. 특별히 Context Path가 있다면 적어주고 없으면, 해당 JIRA 사이트 메인까지 적으면 Connection 된다. 이후 쿼리를 위해서 적당한 쿼리조건으로 Task 카테고리를 네이밍 하면된다.

posted by Max.

댓글을 달아 주세요

2012. 6. 5. 17:55 개발관련

이쁘면 되는 세상....


<skin>

   <groupId>org.apache.maven.skins</groupId>

   <artifactId>maven-fluido-skin</artifactId>

   <version>1.2.1</version>

 </skin>


:)

posted by Max.

댓글을 달아 주세요