Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Spring/탐험스터디/wiki만들기: Difference between revisions

From ZeroWiki
imported>rabierre
No edit summary
imported>rabierre
No edit summary
Line 2: Line 2:
=== Spring Framework ===
=== Spring Framework ===
=== Spring Security ===
=== Spring Security ===
* 스프링 시큐리티 사용 준비
* UserDetail - 스프링 시큐리티가 사용할 수 있는 User 객체 만들기
* 현재 로그인 한 사용자 정보 가져오기
* 현재 로그인 한 사용자 정보 가져오기
## SecurityContextHolder를 이용하는 법
## SecurityContextHolder를 이용하는 법

Revision as of 23:58, 31 August 2012

SimpleWiki

Spring Framework

Spring Security

  • 스프링 시큐리티 사용 준비
  • UserDetail - 스프링 시큐리티가 사용할 수 있는 User 객체 만들기
  • 현재 로그인 한 사용자 정보 가져오기
    1. SecurityContextHolder를 이용하는 법
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
		
		String name;
		if (principal instanceof UserDetails) {
		  name = ((UserDetails)principal).getUsername();
		} else {
		  name = principal.toString();
		}
    1. Spring dependency injection을 이용하는 법
public String write(@RequestParam("title") String title, @RequestParam("contents") String contents, Model model, Principal principal) {
...
page.edit(contents, userRepository.get(principal.getName()));
...
}

Hibernate

  • ORM(Object Relation Mapping) 프레임워크. Java persistence, EJB3.0을 같이 알면 좋다.
  • Lisence : LGPL

JSP

Markdown

  • 위키 문법을 별도로 정의하고 파서를 구현하는 대신 Markdown을 사용하기로 결정했다.
    • 위키피디아를 참고하여 Java로 구현된 Markdown implementation 중 Pegdown을 선택했다.
    • MarkdownJ, MarkdownPapers는 문서가 부실하고 남은 두 구현체 중 Pegdown이 위키 제목을 통한 페이지 링크를 더 간편하게 지원해서.
    • 아주 간단한 Pegdown 사용 예
      1. pom.xml에 dependency 추가하기
<dependency>
	<groupId>org.pegdown</groupId>
	<artifactId>pegdown</artifactId>
	<version>1.1.0</version>
</dependency>
      1. markdown text를 html 문자열로 변환
String html = new PegDownProcessor().markdownToHtml(markdown text);

CGLIB

  • CGLIB는 코드 생성 라이브러리로서(Code Generator Library) 런타임에 동적으로 자바 클래스의 프록시를 생성해주는 기능을 제공(펌) 이라고 한다.

후기

8월 30일

  • 김수경
    • 2주? 까지는 아니지만 1.5주만에 스터디를 재개했더니 이전 소스 코드가 잘 기억이 나지 않아 난감했다. 틈틈이 소스 코드를 봤다면 이렇게까지 기억이 안 나지는 않았을텐데 그동안 손을 놓고 있었더니... 다음엔 이러지 말아야지.
    • 처음에 소스 코드 짜면서 일단 돌아가게 만들자!! 는 마음으로 코딩을 했더니 바꿔야 할 부분이 아주 많아졌다. 아무렇게나 짜려는 건 아니고 개발이 너무 지연되다가 흐지부지 되는 게 싫어서 그렇게 한 건데 지속적으로 개발하다가 특정 부분을 고쳐야할 시기에 기민하게 고치지 않으면 답이 없는 코드가 되는 것 같다.
    • 그래서 오늘 느낀 게 이 코드는 데미 무어 코드라고…
    • TODO : write/delete 등 함수 단위로 security 설정 필요함
  • 서지혜
    • 오늘은 위키 문법을 구현하기로 하였다.
    • 위키의 문법을 구현하기로 하였는데 직접 파서를 구현하기보다 Markdown의 파서를 사용하면(Markdown 문법을 사용해야 하지만) 편리할 것 같아(명백해서 증명할 필요가 없다!) Markdown 파서중 pegdown을 쓰기로 경정. Java 언어 기반의 파서중 그나마 문서화(GitHub의 소개페이지)가 잘되어있어서....
    • 아무튼 pegdown은 무지무지 쉬웠는데(new Pegdown().markdownToHTML(/* String 콘텐츠 */) 적용하는데까지 시간이 오래걸렸다. 하나 고치면 다른 에러가 나고 에러랑 스무고개했음ㅋㅋ
    • 스무고개
    • 이전에 돌아가던 것이 안돌아가 코드를 보니 테스트를 위한 Mock 객체를 참조하고 있었다. 실제 객체는 구현이 덜 되어있었음. 테스트를 위한 디자인이 되어있었음. 당시엔 확장과 변화를 위해 정한걸 텐데 지금보니 왜 이럴까?
    • 사소한 결정이라도 결정을 할 때에는 이유를 적어야겠다.
    • 공부할게 많다.
    • 좀 오래한 Spring, Hibernate도 어려움. CGLib, Spring Security, JSP, Session 찾아봐야겠다.
    • 쓰는건 쉽지만 작동을 모른다.
    • 바퀴 다시만들기
    • 오픈소스인 pegdown과 문법 Markdown을 쓰니까 완전 편함
    • 시간도 얼마 안걸렸다. 구현시간이 많이 단축되어서 위키쓰기질 하게됐음.

Spring/탐험스터디