간만에 Java Programming을 다시 시작했는데 Spring3.0을 보니 로깅이 모두 slf4j로 바뀌어져 있다. 음.. 그렇다. 요즘은 slf4j를 사용한다. 그럼 어떤 장점이 있어서 slf4j가 대세가 되었을까. commons-logging으로 로그를 남길 때 보통 아래 처럼 하게 된다. log.debug("리턴값을 로그로 남겨 봐야지~ 리턴값: [ " + abc(id) + "]" ); 위 코드는 무엇이 문제일까? 로깅레벨 설정을 error로 켜두면 debug 코드는 안찍는다. 하지만 비록 로그에 남지 않는다고 하더라고 실행은 된다. String끼리 더하기 연산도 실행되고 abc() 함수도 호출한다. 즉, 쓸 때없이 자원을 낭비하는게 첫번째 문제이다. 그래서 다음과 같이 할 수 있다. if (log.isDebugEnabled()) { log.debug("리턴값을 로그로 남겨 봐야지~ 리턴값: [ " + abc(id) + "]" ); } if(log.isDebugEnabled())를 집어 넣어서 로그 레벨이 debug가 아니라면 아예 건너뛰게 만들었다. log.isDebugEnabled()를 실행하는것도 리소스를 잡아 먹긴 하지만 부담이 큰 작업은 아니다. 하지만 이런식으로 하게 되면 코드가 지저분해진다. 게다가 로깅레벨이 여러단계일 때 if 문이 중첩될 수 있는 문제가 있다. 또 다른 문제는 로그 레벨이 debug로 설정되어 있을 때 발생한다. 로그 레벨이 debug일 때 if (log.isDebugEnabled())는 무의미한 코드가 되어 버린다. 작지만 리소스 낭비다. slf4j를 사용하면 아래처럼 바꿀 수 있다. log.debug("리턴값을 로그로 남겨 봐야지~ 리턴값: [ {} ]", abc(id)); 로그를 찍든 안찍든 String을 일단 더하고 보는 것과는 처리 방식이 다르다. {} 에는 abc(id)의 리턴값이 들어간다. ...
Spring Security Apache Shiro 버전 4.0.2 1.2.3 장점 Spring-based 어플리케이션에서 잘 동작한다. ㄴ 타 Spring 모듈과 디펜던시가 없다. Spring 이라는 이름빨이 있다. 커스터마이징을 통한 다양한 니즈에 대응 가능. ㄴ 클래스 상속을 통한 확장이 용이하다. ㄴ 그만큼 진입장벽이 높다는 의미 사용하기 쉽다(고 한다. 사용안해 봐서 아직은 모르겠음) ㄴ 대체로 스프링 시큐리티보다는 훨씬 쉽다는 의견 Spring-based 어플리케이션 뿐만 아니라 다양한 환경에서 동작한다. 단점 배우기 어렵다. 용어가 어렵다.(잉글리쉬 네이티브들도 어렵다고 하는데 하물며..) 버전 3.x 으로 오면서 개선이 되었다고는 하지만, 여전히 복잡하고 어려운 XML 설정 OAuth, Digest Authentication 공식적으로는 미지원 ㄴ 비공식 https://github.com/FeedTheCoffers/shiro-oauth ㄴ 당장 필요한 기능은 아님 레퍼런스 많다. 많이 쓰니까.. ㄴ http://spring.io/guides 부족하진 않은거 같은데? ㄴ 개발하면서 트러블이 생겨봐야 알수 있을듯 ㄴ http://shiro.apache.org/documentation.html 사내 레퍼런스 많다. 없다. - 사내 깃헙 검색해보니 조금 나오긴 한다.
댓글
댓글 쓰기