블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
12-31 00:00
 

달력

« » 2024.12
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
 

최근에 올라온 글

최근에 달린 댓글

org.springframework.context.annotation.CommonAnnotationBeanPostProcessor 이 클래스가...

<context:component-scan> 의 역할 중 하나를 맡고 있다라는 걸 어제야 알았다;;; 


찾아보니 AutowiredAnnotationBeanPostProcessor  이 클래스도 마찬가지...


쩝;;; 아직 멀었구만...



Posted by 자수씨
, |

지난 번 포스팅에서 작성한 코드에 대한 테스트 코드를 만들어보겠습니다.


1. 테스트 클래스 생성

/spring-data-sample/src/test/java/kr/co/vicki/sample/spring/data/jpa/repository/IMemberRepositoryTest.java


위의 테스트 코드를 실행하니 아래와 같은... 시퀀스가 없다고 합니다.




하이버네이트 용 시퀀스를 생성합니다.



코드를 실행하면 결과는 체크가 불가능하지만 녹색바가 뜨기 때문에 정상 동작한다고 생각합니다 -ㅅ-;;;


2. JpaRepository 의 이용



JpaRepository 는 기존에 사용하였던 CrudRepository 와 PagingAndSortingRepository 를 상속받는 구조입니다.

기존에 사용하였던 CRUD 외에 페이징과 소팅도 지원을 하며 메소드 이름을 통해 쿼리 제너레이션이 가능합니다.

IMemberRepository 의 superclass 를 JpaRepository 로 변경한 후 아래와 같이 메소드를 추가합니다.



findByMemberId(String memberId) 메소드는 메소드 이름 통해 쿼리를 생성하여 실행되게 됩니다.

select m from Member m where m.memberId = ?1


아래와 같은 규칙으로 메소드 이름으로 쿼리가 생성되니 참고를...
Keyword
Sample JPQL snippet
And findByLastnameAndFirstname … where x.lastname = ?1 and x.firstname = ?2
Or findByLastnameOrFirstname … where x.lastname = ?1 or x.firstname = ?2
Between findByStartDateBetween … where x.startDate between 1? and ?2
LessThan findByAgeLessThan … where x.age < ?1
GreaterThan findByAgeGreaterThan … where x.age > ?1
IsNull findByAgeIsNull … where x.age is null
IsNotNull,NotNull findByAge(Is)NotNull … where x.age not null
Like findByFirstnameLike … where x.firstname like ?1
NotLike findByFirstnameNotLike … where x.firstname not like ?1
OrderBy findByAgeOrderByLastnameDesc … where x.age > ?1 order by x.lastname desc
Not findByLastnameNot … where x.lastname <> ?1


SQL 없이 직관적으로 코딩이 가능한 Spring Data JPA!!! 실제 개발 프로젝트에 적용시키까지는 많은 시간이 걸리겠지만 컨셉은 아주 상콤합니다!!!

Posted by 자수씨
, |

이전 포스팅에 이어 샘플 소스를 작성해보도록 하겠습니다.


1. 테이블 생성
샘플 테스트에 사용할 테이블을 아래 스크립트를 실행시켜 생성합니다.




2. domain, repository 소스 구성



Member 클래스: id 컬럼을 기본적으로 제공해주는 AbstractPersistable 를 상속받습니다.
- kr.co.vicki.sample.spring.data.jpa.domain.Member



IMemberRepository 클래스: id 를 이용하여 기본적인 CRUD 를 제공해주는 CrudRepository 를 상속받습니다.
- kr.co.vicki.sample.spring.data.jpa.repository.IMemberRepository



3. 환경 설정



/META-INF/persistence.xml (JPA 설정)


/infrastructure.xml (DB 환경 설정)


/repository-context.xml (jpa repository 등록)




이제 테스트 코드를 만들일만 남았습니다.

Posted by 자수씨
, |

Spring Data JPA 가 눈에 들어와서 간략한 튜토리얼을 작성합니다.


1. Maven 프로젝트 생성하기

이클립스에서 "New Maven Project" 로 Spring Data JPA 용 프로젝트를 생성합니다.

생성 시에 "Create a simple project (skip archetype selection)" 을 체크하시면 좀 더 빠르게 구조화된 프로젝트 구성이 가능합니다.




빌드 패스에서 "JRE System Library" 를 1.4 에서 1.6 으로 변경하고 /src/test/resource 를 삭제하면 위와 같은 구성이 됩니다.


2. pom.xml 설정

pom.xml 에 디펜던시와 플러그인과 관련된 설정을 적용합니다.



위와 같이 pom.xml 을 설정하고 저장하면, Spring Data JPA 로 개발할 수 있는 기본 환경 구성이 완료되었습니다~

Posted by 자수씨
, |


항상 List 는 프로퍼티로만 사용하고 빈으로 만들어 사용한 적은 없었는데, 어쩌다 보니 List 를 재사용할 일이 생겨서 빈으로 만들어야 했습니다.

처음에 조금 고민하다가 바로 구글 검색...




sourceList 프로퍼티에 기존에 사용하던 list 값을 설정하면 되고, targetListClass 에 원하는 List 클래스를 정의하면 됩니다.


참고사이트: http://forum.springsource.org/showthread.php?t=10561

Posted by 자수씨
, |
아래와 같이 스프링 applicationContext 들이 web.xml 에 정의되어 있었습니다.

web.xml



conf/gw-Common.xml



conf/gw-Mail.xml



conf/gw-Workflow.xml



conf/gw-Board.xml



이상하게도 자꾸 gw-Common.xml 에 선언된 sqlmap 들을 찾을 수 없다고 하여 org.springframework.orm.ibatis.SqlMapClientFactoryBean 의 소스를 넣고 트레이싱을 해본 결과 com/idstrust/wiseone/engine/gw/conf/SqlMapConfig.xml 대신에 com/idstrust/wiseone/engine/gw/conf/SqlMapConfig-Board.xml 가 설정되고 있었습니다.

여러가지 실험을 해본 결과 gw-Common.xml 에 선언된 sqlMapConfig 의 id 를 다른 것으로 변경하여 문제는 해결하였습니다.
		
	
		
		
	

	...



자기 멋대로 오토와이어링이 먹을리는 없고... 분석할 시간이 없으므로 일단은 다음 단계로 넘어갑니다;;;
(이전 포스팅의 문제는 아니였습니다;;;)

Posted by 자수씨
, |

아... REST in Spring 3

Spring / 2011. 1. 7. 17:11

꼬치몽을 통해 알게된 Spring 3 의 REST 지원 방식... 감동입니다.



주소값에 따라 알아서 맵핑이 되는 구조입니다.

털썩... 아름답네요...


참고자료: http://blog.springsource.com/2009/03/08/rest-in-spring-3-mvc/

Posted by 자수씨
, |

@Autowired...

Spring / 2010. 12. 20. 14:30

@Autowired 라는 것을 스프링을 시작한지 3년만에 처음 써 보았습니다.
(2.5 에서 추가된 기능인가???)


참 편합니다. 일단 setter 를 만들지 않아도 되며, bean 설정에서 parameter 들이 획기적으로 줄어듭니다.

이렇게 편한 걸 왜 안썼는지 모르겠네요... 기존에 잘 되던걸 복사해서 쓰다보니 새로운 것에 대해 잘 받아들일 수 없다는...

Posted by 자수씨
, |

회사에서 개발하는 솔루션이 spring framework 기반이라 웹서비스도 spring webservices 로 구축을 하였는데, JBoss 에 올리려고 하니 여러 오류가 생겨 재 작년부터 고민하고 여러가지 시도를 하였으나 실패를 하였습니다.

우연히 다른 것을 검색하다가 발견한 것에서 아이디어가 떠올라서 여러가지 실험을 해본 결과 JBoss 용 웹 서비스를 publish 하는 데 성공하였습니다.



기존의 Spring WebServices Class

별 다른 작업 없이 DI 를 이용하여 service 객체를 이용하여 웹 서비스를 제공하였습니다.



JBossWS 에서 Spring Bean 사용하는 WebService Class

JBossWS 에서@Resource 라는 어노테이션을 이용하여 ThreadLocal 한 WebServiceContext 객체를 설정할 수 있습니다.
메소드에 어노테이션 설정하여 WebServiceContext 객체가 웹 서비스 객체에 설정이 될 때 Spring Bean 을 WebApplicationContext 를 이용하여 가지고 오는 방법을 사용하였습니다.


이렇게 구성된 웹 서비스를 JBoss 에 publish 하는 방법은 단순합니다.

web.xml 에 servlet 과 servlet-mapping 에 웹 서비스 클래스를 등록하는 것이 전부입니다.


Spring WebService 로 publish 할 경우 별도의 포트로 binding 해야 하지만 JBossWS 는 JBoss 포트로 서비스가 가능합니다.

포트가 하나로 통합되면 얻는 이점이 많을 듯 합니다





Posted by 자수씨
, |

오늘도 피곤한 몸을 이끌고 컴퓨터를 하고 있었습니다.
허나... 메신저에서 날라오는 헬프메시지가...
Tomcat에서는 잘 돌아가는데, WebLogic에서는 문제가 발생한다는 이야기를 듣고서 확인 작업을 시작하였습니다.

Error in "xxxx.jsp" at line 52: No method with this name could be found at this location.

일단 에러는 위와 같았습니다. 다른 jsp 파일에서 xxxx.jsp를 include 한 것인데, xxxx.jsp에 문제가 생겨서 발생한 것이었습니다.

그리하여 xxxx.jsp의 52번 째 줄을 확인해 보았습니다.

WebApplicationContext context =
WebApplicationContextUtils.getWebApplicationContext(getServletContext());

전혀 문제될 것이 없는 소스였습니다. 물론 이클립스에서도 에러나 워닝을 표시해 주지 않았습니다.

혹시나하고 열심히 구글링을 한 결과 getServletContext()는 표준이 아니라는 듯한 뉘앙스를 풍기는 글을 보았습니다.
getServletContext() 대신에 pageContext.getServletContext() 메소드를 사용하라는 내용이였습니다.
WebApplicationContext context =
WebApplicationContextUtils.getWebApplicationContext(pageContext.getServletContext());

방법을 알려드리니 잘 돌아간다고 하십니다.

jsp에서는 스프링 빈을 사용해본 적이 없어서 처음으로 겪어본 일이었습니다.
(게다가 맨날 자바스크립트만 하다보니... jsp는...)

뭐 여튼 미션 클리어~ ㅋㅋㅋ





Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백