'2010/01'에 해당되는 글 6건
- 2010/01/28 [Spring Batch] Spring Batch Monitoring System by 자바지기
- 2010/01/28 StringTemplate 소개 (1)
- 2010/01/27 자바 개발자를 위한 ‘共感(공감)’을 찾아서
- 2010/01/23 Spring Roo 소개 스크린 캐스트
- 2010/01/23 springOne 2GX의 스프링 루 발표자료 공개
- 2010/01/23 [Spring Roo] Roo 국내 자료 모음 (1)
자바지기 박재성님께서 Spring Batch의 메타데이터 테이블을 조회하고 Job을 수동실행 시킬 수 있는 관리프로그램을 개발하셨습니다. 즉, 배치작업들의 실행결과, 실행시각, 처리한 건수 등을 조회하고, 필요하다면 웹브라우저를 통해 Job을 실행할 수도 있는 것이죠.
Spring Batch Monitoring System 공개 및 요구사항 수렴
Spring Batch Monitoring System 개발자 인터뷰
앞으로 많은 분들에게 도움이 될 수 있는 프로젝트로 발전이 될 것이라 믿습니다.
StringTemplate template = null;
// setAttrubte로 값을 넣습니다.
template = new StringTemplate("안녕하세요. 저는 $name$입니다.");
template.setAttribute("name", "lee,jaeil");
System.out.println(template.toString());
StringTemplateGroup group = new StringTemplateGroup("mygroup", "특정폴더");
template = group.getInstanceOf("basic");
System.out.println(template.toString());
static class User {
private String name;
private int age;
private String job;
public User(String name, int age, String job) {
super();
this.name = name;
this.age = age;
this.job = job;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getJob() {
return job;
}
public String toString() {
return String.format("{name : %s, age : %s, job :%s}", name, age, job);
}
}
User me = new User("lee,jaeil", 19, "student");
template = new StringTemplate("안녕하세요. 저는 $user.name$이고 $user.age$살이고 $user.job$입니다.");
template.setAttribute("user", me);
System.out.println(template.toString());
template = new StringTemplate("$user$");
template.setAttribute("user", users);
System.out.println(template.toString());
// map도 지원합니다.
HashMap hm = new HashMap();
hm.put("name", "lee,jaeil");
hm.put("age", 19);
hm.put("job", "student");
template = new StringTemplate("안녕하세요. 저는 $user.name$이고 $user.age$살이고 $user.job$입니다.");
template.setAttribute("user", hm);
System.out.println(template.toString());
// Multi Values일 경우 이여 붙히지만, 구분자를 둘수 있습니다.
// Collection도 됩니다.
User[] users = new User[] {
new User("lee, jaeil", 19, "student")
, new User("seo,hyunju", 18, "student")
};
template = new StringTemplate("안녕하세요. $users; separator=\", \"$ 입니다.");
template.setAttribute("users", users);
System.out.println(template.toString());
// Group을 정하고 다른 Template을 include 합니다.
// Group을 정해야 다른 템플릿을 사용가능합니다.
StringTemplateGroup group = new StringTemplateGroup("mygroup", "/Users/jilee/Documents/workspace-sts-2.2.1.RELEASE/StringTemplateSample/sample");
template = group.getInstanceOf("basic");
System.out.println(template.toString());
안녕하세요. $bold(it="test")$ 입니다.
bold.st
<b>$it$</b>
// 템플릿 파일을 property에 : 로 접근하여 사용할수 있습니다.
template = new StringTemplate(group, "안녕하세요. 저는 $user.name:bold()$이고 $user.age$살이고 $user.job:bold()$입니다.");
template.setAttribute("user", me);
System.out.println(template.toString());
// 반복된값을 출력합니다.
// :{}를 사용합니다. :{ 와 | 사이의 이름으로 각각의 객체를 받습니다.
template = new StringTemplate("$users:{u | <ul><li>$u.name$, $u.age$, $u.job$</li></ul>}; separator=\"\n\"$");
template.setAttribute("users", users);
System.out.println(template.toString());
// 조건문을 사용
template = new StringTemplate("$if(users)$ $users:{u | <ul><li>$u$</li></ul>}; separator=\"\n\"$ $endif$");
//template.setAttribute("users", users);
System.out.println(template.toString());
//$를 쓰고 싶다면 \를 사용
template = new StringTemplate("\\$ $\\n$ $\\t$ $\\r$");
System.out.println(template.toString());
//주석도 사용할수 있음
template = new StringTemplate("$! this is a comment !$ ");
System.out.println(template.toString());
static class StringRender implements AttributeRenderer {
@Override
public String toString(Object o) {
return o.toString();
}
@Override
public String toString(Object o, String formatName) {
if("escape".equals(formatName)) {
String s = o.toString();
return s.replaceAll("<", "<").replaceAll(">", ">");
}
return toString(o);
}
}
static class DateRender implements AttributeRenderer {
@Override
public String toString(Object o) {
return o.toString();
}
@Override
public String toString(Object o, String formatName) {
if("simple".equals(formatName)) {
return new SimpleDateFormat("yyyy-MM-dd").format(o);
}
return toString(o);
}
}
// AttributeRenderer를 이용하여 포맷을 결정한다.
template = new StringTemplate("Today date is $currentTime; format=\"simple\"$ $html; format=\"escape\"$");
template.registerRenderer(String.class, new StringRender());
template.registerRenderer(Date.class, new DateRender());
template.setAttribute("currentTime", new Date());
template.setAttribute("html", "<a href=\"\">test</a>");
System.out.println(template.toString());
BasicUsage.java |
KSUG에서는 정상혁님이 스프링 루(Spring Roo)를 소개하고 시연하는 시간을 갖을 계획입니다. 의미있는 시간이 되기를 바라면서 관심 있는 분은 많은 참여 바랍니다.
무엇보다 아이폰 앱 "서울 버스"로 유명한 유주완님의 세션도 마련되어 있습니다. 빨리 신청하셔야 할 것 같습니다.
|
Introduction To Spring Roo Screencast
빠른 진행 때문에 좀 따라가기 힘든데처음에 계약 관리 시스템을 루로 생성하고
이클립스로 프로젝트로 임포트한 후에
루가 자동 생성한 통합 테스트를 실행해보고
루로 생성한 코드를 이클립스로 수정했을 때 루가 이것을 감지해서 aspectj 코드를 자동으로 수정하는 모습
기본적인 CRUD(scaffold)를 자동으로 생성해서 배포하는 모습
이클립스 리펙토링 기능으로 Java 코드와 Aspectj ITD 코드 간에 코드를 옮기는 모습
그리고 소스에서 Roo를 제거하는 모습을 시연합니다.
짧지만 중요한 루의 특징을 볼 수 있습니다.
먼저 Roo 개발팀으로 있는 Stefan Schmidt의 발표 자료 입니다.
시연 중심의 발표였기 때문에 슬라이드에는 큰 내용이 없지만 오히려 개요를 알기에는 좋을 듯 합니다.
그 다음은 Roo 개발팀 리더이자 스프링 시큐리티의 창시자이고 스프링소스의 떠오르는 태양 Ben Alex의 발표 자료로 두 개입니다.
첫번째 소개 자료에서는 Stefan Schmidt의 자료 보다 깊이 있게 스프링 루를 소개하고 있습니다.
두 번째 자료는 Roo의 내부와 add-on 개발과 관련된 기술적 부분을 다루고 있습니다.
참고로, 영문자료 모음은 http://forum.springsource.org/showthread.php?t=71985 에 있습니다.
Max님 : http://yunsunghan.tistory.com/tag/ROO
Spring ROO A2 Member 도메인 테스트 하기
Spring Roo RC2[Revision 319] Demo Testing
Toby님
Spring ROO 대충대충 분석 (2) ROO란 무엇인가?
Spring ROO 대충대충 분석 (3) ROO의 Inter-type declaration
Spring ROO 대충대충 분석 (4) ROO의 미래와 의의
테스트 할 수 없는 것을 테스트 하기. Spring ROO와 static method mocking.
Whiteship(백기선)님
박성철님
자바지기(박재성)님

BasicUsage.java



Prev



Rss Feed