블로그 이미지
플로거
Android/J2EE/Web/Spring/Database

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

Statistics Graph
2017.09.05 18:40

핵전쟁 위기 Internet 을 만들다 

- 한국은 무엇을 만들어 내며, 어떻게 극복할 것인가?


스푸트니크 쇼크

동서 냉전이 한창이던 1957년 미국은 사거리 6000km 수준의 아틀라스 A 로켓을 발사 성공하였다.


그때 소련이 사정거리 8000km 에 이르는 세계 최초의 ICBM 인 R-7 로켓을 실전에 배치하였다는 선전이 들렸다.  



미국과 서방은 이를 믿지 앉고 무시했지만,

1957년 10월 4일 소련이 세계 최초의 인공위성 '스푸트니크'를 성공적으로 발사한 사건이 발생했다.  


이로써, 미국을 비롯한 서방 국가들은 엄청난 충격과 공포, 위기감을 받게 되었다.

대륙 간 탄도 미사일 ICBM 기술을 소련이 가장 먼저 보유하게 되면서,

핵탄두를 장착한 미사일의 선제공격을 가할 수 있다는 사실이, 공포와 위기감을 주었다.


2017년 9월 북한은 화성 -14형 ICBM 로켓을 확보했으며,

수소폭탄이라고 선전하는 나가사키 핵폭탄 최대 10배 의 핵실험을 단행했다. 

한국, 일본은 물론 서방은 다시 충격과 공포에 휩싸이고 있다.


그러나, 미국은 분명히 그때의 위기를 극복해 내었다.

한국은 어떻게 이 위기를 극복해 낼 수 있을 것인가?

우리가 사용하고 있는 인터넷의 유래도 핵전쟁의 위기감에 대한 극복의 과정 속에서 탄생하였다.


인터넷의 역사

1960~ 1970 년대 미국 국방부 산하의 고등 연구국(Advanced Research Project Agency, ARPA) 의 연구용 network이 시초이며, 군사용 network 이며  MILNET로 발전되었다.

ARPA는 핵전쟁 등 최악의 상황에서도 살아남을 수 있는 network 를 연구하였다.

연구 결과 패킷 교환 방식이 매우 견고하고 생존성이 높았다. 최초의 2 노드간의 상호연결은 1969년 10월 29일 UCLA 와 SRI 연구소 간에 연결되었다. 이 통신망을 ARPANET 이라고 하였으며, 현재의 인터넷망의 시초이다.


쿠바 미사일 위기

1962년 10월 14일, 미국의  첩보기 록히드 U-2에 의해, 쿠바에서 건설 중이던 소련의 SS-4 준중거리 탄도 미사일(MRBM) 기지의 사진과, 건설 현장으로 부품을 운반하던 선박의 사진이 촬영되었다. 


소련의 흐루쇼프는 미국에 대해 군사적 우의를 확보하고, 쿠바의 신생 공산 정권인 카스트로 정권을 보호하며, 서방 세계와의 협상 카드로 쓰기 위해 쿠바에 장거리 미사일 기지를 비밀리에 추진하였다.

쿠바는 미국의 플로리다 반도의 끝에서 불과 230km 밖에 떨어져 있지 않았고, 미국은 이 지역에 레이더 조기경계 시스템도 개발되어 있지 않았으며, 42기의 소련의 핵미사일은 미국의 본토를 사정거리에 충분히 둘 수 있는 상황이었다.  

미국은 소련의 쿠바 미사일 기지 건설을 무력시위라고 주장하며, 미사일 기지의 완공을 강행한다면 이를 선전포고로 받아들일 것이며, 제3차 세계대전도 불사하겠다는 공식성명을 발표하였다. 쿠바의 핵미사일이 서방국가를 공격할 경우 이를 소련의 미국 공격으로 간주하여 소련에 핵보복 조치를 가하겠다는 핵전 불사 입장을 밝혔다. 전 세계가 돌연 핵전쟁의 공포에 휩싸이는 일촉즉발의 상황까지 가기에 이르렀다. 


쿠바 해상 봉쇄

1962년 10월 16일 케네디는 국가안보위원회(NSC) 를 소집하였고, 선제타격하자는 주장도 있었지만 쿠바를 해상봉쇄하는 안을 도출하였다. 10월 22일 케네디는 '미국과 서방세계의 안전을 위해 쿠바에 해상봉쇄를 단행한다'는 것을 발표하였다.  


1962년 10월 24일 미 함정 183척과 전투기 1190대가 2400km 의 카리브 해 봉쇄선에 배치되어 초계기가 발견한 선단의 도착을 기다렸다. 미 당국은 소련 선박이 정지명령 · 검문에 불응할 경우 격침까지 시킬 용의가 있음을 밝혔다. 소련정부는 성명을 발표하며 미국의 봉쇄 · 검문은 국제법을 침해하는 해적행위라고 비난했으며, 핵어뢰를 탑재한 B-59 잠수함과 핵미사일을 싫은 화물선을 쿠바로 출발 시켰다. 세계의 모든 눈이 카리브 해에 쏠렸다. 


1962년 10월 26일 , 소련의 미사일 적재함이 미국의 봉쇄선을 지나다가 저지당했다. 흐루쇼프가 마침내 케네디의 초강경책에 한발 후퇴했다. 26일 소련은 미국에게 쿠바를 절대 침공하지 않겠다고 약속하라는 조건을 제시했다. 28일 미국이 쿠바 불가침을 약속하자 소련은 미사일 기지를 파괴하고 미사일을 철수시켰다.


핵전쟁의 공포 1주일은 미국의 초강경 위력 시위와 쿠바 불가침 약속으로 종결됐다. 쿠바 위기 후 미소 양국은 급속히 접근했고, 군축 교섭도 진전되어 평화 공존이 자리를 잡기 시작하였다.


2017년 대한민국과 세계는 생존할 것 인가?, 공멸할 것인가? 다시 선택의 기로에 서 있다.

강력하고 현명한 선택과 행동, 위기 극복을 위한 최선의 노력만이 다시 평화와 공존을 불러올 수 있을 것이다.


참조 - 위키백과 



저작자 표시 비영리 변경 금지
신고
이 장소를 Daum지도에서 확인해보세요.
경기도 성남시 중원구 도촌동 |
도움말 Daum 지도
posted by 훈즈 플로거
2017.08.16 11:24 Programming/Html 5

CSS3 text-overflow Property


Use of the text-overflow property:

div {
    text-overflow: ellipsis;
}

Definition and Usage

The text-overflow property specifies how overflowed content that is not displayed should be signaled to the user.

Default value:

clip

Inherited:

no

Animatable:

no. Read about animatable

Version:

CSS3le.textOverflow="ellipsis"

JavaScript syntax:

object.style.textOverflow="ellipsis"

CSS Syntax

text-overflow: clip|ellipsis|string|initial|inherit;

Property Values

Value

 Description

 clip

 Default value. Clips the text

 ellipsis

 Render an ellipsis ("...") to represent clipped text

 string

 Render the given string to represent clipped text

 initial

 Sets this property to its default value. 

 inherit

 Inherits this property from its parent element.


Example

<style> 

#div1 {

    white-space: nowrap; 

    width: 12em; 

    overflow: hidden;

    text-overflow: clip; 

    border: 1px solid #000000;

}


#div2 {

    white-space: nowrap; 

    width: 300px; 

    overflow: hidden;

    text-overflow: ellipsis;     

}

</style>


This document refers to W3Schools.com

저작자 표시 비영리 변경 금지
신고

'Programming > Html 5' 카테고리의 다른 글

ellipsis - CSS3 text-overflow Property  (0) 2017.08.16
실전 HTML 5 가이드 - Web Standards Korea  (0) 2010.12.26
posted by 훈즈 플로거
2017.08.02 11:22 Programming/Git

git checkout -b feature_x - “feature_x” 라는 branch 를 만들고 해당 branch 로 checkout

git checkout master - master branch 로 돌아오기

git branch -d feature_x - branch 삭제

git push origin <branch 명> - push 가 되지 않으면 다른 사람들이 접근이 안됨

git pull - 로컬 저장소를 원격 저장소에 맞춰 갱신

git merge <branch 명>

git tag 1.0.0


Discard / Revert / Reset

Discard(Undo) - git checkout -- <file name> -

Revert - Reverse Commit - 삭제 하지 않음, 순차적으로 진행.

Reset - 삭제, 여러 단계를 뛰어 넣어서 가능

저작자 표시 비영리 변경 금지
신고

'Programming > Git' 카테고리의 다른 글

Branch / Merge / Tag  (0) 2017.08.02
Git guide- https://rogerdudler.github.io/git-guide/index.ko.html  (0) 2017.08.02
Git 설치 - git-scm.com  (0) 2017.08.02
Git 기초  (0) 2017.07.25
GIT - the stupid content tracker  (0) 2017.07.25
posted by 훈즈 플로거
2017.08.02 11:17 Programming/Git

Git guide- https://rogerdudler.github.io/git-guide/index.ko.html


Git 저장소 만들기 - git init

  • 폴더를 하나 만들고, 그 안에서 git init 을 실행.  

Git 저장소 받아오기 - git clone /로컬/저장소/경로

  • git clone 사용자명@호스트:/원격/저장소/경로

Working direcotry, Working copy -> add

Unstaged / Staged(Index),

Uncommitted changes/ HEAD(commit)       

Git Commit - only local / Push - remote

Commit

  • git add <파일 이름>, git add  * ,  git commit -m “comment”(HEAD 에 반영)

  • 원격 저장소에 아직 반영(push) 안됨

  • CVS, SVN 과 차이가 있음.  

  • SourceTree 에서는 Commit 후 Push 를 진행해야만 함.

  • Push 시에 원격 저장소에 변경사항이 있을 경우 git pull  을 먼저 진행해야함.

  • Eclipse 에서는 Commit and push 로 한번에 진행할 수 있음.

git push origin master - 원격서버의 master 에 push

git remote add origin <원격 서버 주소> - 최초, 다른 저장소의 경우



저작자 표시 비영리 변경 금지
신고

'Programming > Git' 카테고리의 다른 글

Branch / Merge / Tag  (0) 2017.08.02
Git guide- https://rogerdudler.github.io/git-guide/index.ko.html  (0) 2017.08.02
Git 설치 - git-scm.com  (0) 2017.08.02
Git 기초  (0) 2017.07.25
GIT - the stupid content tracker  (0) 2017.07.25
posted by 훈즈 플로거
2017.08.02 10:52 Programming/Git

Source Code - https://github.com/git/git

Linux - $yum install git-core

Ubuntu - $apt-get install git

Mac 에 설치하기 - https://git-scm.com/download/mac

Window - https://git-scm.com/download/win

SourceTree - www.sourcetreeapp.com

저작자 표시 비영리 변경 금지
신고

'Programming > Git' 카테고리의 다른 글

Branch / Merge / Tag  (0) 2017.08.02
Git guide- https://rogerdudler.github.io/git-guide/index.ko.html  (0) 2017.08.02
Git 설치 - git-scm.com  (0) 2017.08.02
Git 기초  (0) 2017.07.25
GIT - the stupid content tracker  (0) 2017.07.25
posted by 훈즈 플로거
2017.07.25 17:52 Programming/Git

Git 핵심

  • Git 을 배우려면 Subversion 이나 Perforce 같은 다른 VCS 를 사용하던 경험을 지워야..
  • Git 은 미묘하게 달라서 다른 VCS 에서 쓰던 개념으로는 헷갈림.
  • 델타(각 파일에 대한 변화)가 아니라 스냅샷 
  • Git 은 커밋하거나 상태를 저장할 때마다 파일이 존재하는 그 순간이 중요.
  • 크기가 아주 작아 성능이 탁월하다.
  • Git은 성능을 위해 파일을 저장하지 않고, 이전 상태의 파일에 대한 링크를 저장한다.


Git의 세가지 상태 - Committed, Modified, Staged

  • Committed - 데이터가 로컬 데이터베이스에 안전하게 저장.
  • Modified -  수정한 파일을 Commit 하지 않은 것. 
  • Staged - 현재 수정한 파일을 곧 Commit 할 것이라고 표시.


저작자 표시 비영리 변경 금지
신고

'Programming > Git' 카테고리의 다른 글

Branch / Merge / Tag  (0) 2017.08.02
Git guide- https://rogerdudler.github.io/git-guide/index.ko.html  (0) 2017.08.02
Git 설치 - git-scm.com  (0) 2017.08.02
Git 기초  (0) 2017.07.25
GIT - the stupid content tracker  (0) 2017.07.25
posted by 훈즈 플로거
2017.07.25 11:50 Programming/Git

Git ( ɡ ɪ t / ) -  컴퓨터 파일의 변경 내용을 추적 하고 여러 사람이 사용하는 파일에 대한 작업을 조율 하는 버전 관리 시스템 (VCS)입니다 .  주로 소프트웨어 개발에서 소스 코드 관리에 사용되지만 , 파일의 변경 내용을 추적하는 데 사용할 수 있습니다. 분산 개정 관리 시스템 으로서 속도, 데이터 무결성, 및 분산 된 비선형 워크 플로우에 대한 지원을 목표로합니다. 

Git은 리눅스 커널 개발을 위해 2005 년 리누스 토발즈 (Linus Torvalds) 에 의해 만들어졌으며 다른 커널 개발자들은 초기 개발에 기여했습니다.  2005 년 이래로 현재 유지 관리자는 Junio ​​Hamano 입니다.

대부분의 다른 분산 버전 제어 시스템과 마찬가지로 대부분의 클라이언트 - 서버 시스템 과 달리 모든 컴퓨터의 모든 Git 디렉토리 는 네트워크 액세스 나 중앙 서버와 관계없이 완전한 기록 및 전체 버전 추적 기능을 갖춘 본격적인 저장소 입니다. 

리눅스 커널과 마찬가지로 Git은 GNU General Public License 버전 2 의 조건에 따라 배포되는 자유 소프트웨어 입니다.  

출처 - 위기백과  https://en.wikipedia.org/wiki/Git



Creator - Linux 개발 커뮤니티(특히 Linux 창시자 Linus Torvalds)


장점


  • 빠른 속도

  • 단순한 구조

  • 비선형적인 개발(수천 개의 동시 다발적인 브랜치)

  • 완벽한 분산

  • Linux 커널 같은 대형 프로젝트에도 유요할 것(속도나 데이터 크기 면에서)

<< 버전 관리 시스템의 진화 >>

LVCS  ->  CVCS  ->  DVCS  로 발전되어 가고 있음


 LVCS(로컬 버전 관리 시스템  - RCS

CVCS(중앙 버전 관리 시스템) - CVS, Subversion, Perforce

DVCS(분산 버전 관리 시스템) - Git, Mecurial, Bazaar, Darcs


저작자 표시 비영리 변경 금지
신고

'Programming > Git' 카테고리의 다른 글

Branch / Merge / Tag  (0) 2017.08.02
Git guide- https://rogerdudler.github.io/git-guide/index.ko.html  (0) 2017.08.02
Git 설치 - git-scm.com  (0) 2017.08.02
Git 기초  (0) 2017.07.25
GIT - the stupid content tracker  (0) 2017.07.25
posted by 훈즈 플로거
2017.07.16 01:03 Programming/Spring

성능을 개선하고 순환하는 의존성을 해결하기 위해 필요한 로컬 세션 캐싱을 제외하고 기본적으로 캐시가 작동하지 않는다. Mabatis 캐싱을 활성화하기 위해서 SQL 매핑 파일에 한줄을 추가하면 된다.

<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>

이 설정은 60 초마다 캐시를 지우는 FIFO 캐시를 생성한다. 이 캐시는 결과 객체 또는 결과 리스트를 512개까지 저장하고 각 객체는 읽기 전용이다. 캐시 데이터를 변경하는 것은 개별 쓰레드에서 호출자간의 충돌을 야기할 수 있다.

  • 매핑 구문 파일내 select 구문의 모든 결과가 캐시 될 것이다.

  • 매핑 구문 파일내 insert, update 그리고 delete 구문은 캐시를 지울(flush) 것이다.

  • 캐시는 Least Recently Used (LRU) 알고리즘을 사용할 것이다.

  • 캐시는 스케줄링 기반으로 시간순서대로 지워지지는 않는다. (예를들면. no Flush Interval)

  • 캐시는 리스트나 객체에 대해 1024 개의 참조를 저장할 것이다. (쿼리 메소드가 실행될때마다)

  • 캐시는 읽기/쓰기 캐시처럼 처리될 것이다. 이것은 가져올 객체는 공유되지 않고 호출자에 의해 안전하게 변경된다는 것을 의미한다.

사용가능한 캐시 전략은 4가지


  • LRU – Least Recently Used: 가장 오랜시간 사용하지 않는 객체를 제거

  • FIFO – First In First Out: 캐시에 들어온 순서대로 객체를 제거

  • SOFT – Soft Reference: 가비지 컬렉터의 상태와 강하지 않은 참조(Soft References )의 규칙에 기초하여 객체를 제거

  • WEAK – Weak Reference: 가비지 컬렉터의 상태와 약한 참조(Weak References)의 규칙에 기초하여 점진적으로 객체 제거

  • 디폴트 값은 LRU 이다.

flushInterval 은 양수로 셋팅할 수 있고 밀리세컨드로 명시되어야 한다. 디폴트는 셋팅되지 않으나 플러시(flush) 주기를 사용하지 않으면 캐시는 오직 구문이 호출될때마다 캐시를 지운다.

size는 양수로 셋팅할 수 있고 캐시에 객체의 크기를 유지하지만 메모리 자원이 충분해야 한다. 디폴트 값은 1024 이다.

readOnly 속성은 true 또는 false 로 설정 할 수 있다. 읽기 전용 캐시는 모든 호출자에게 캐시된 객체의 같은 인스턴스를 리턴 할 것이다. 게다가 그 객체는 변경할 수 없다. 이건 종종 성능에 잇점을 준다. 읽고 쓰는 캐시는 캐시된 객체의 복사본을 리턴 할 것이다. 이건 조금 더 늦긴 하지만 안전하다. 디폴트는 false 이다.


cache 적용시 디폴트 와 non-cache

  • select

flushCache 이 값을 true 로 셋팅하면 구문이 호출될때마다 로컬, 2nd 레벨 캐시가 지워질것이다(flush). 디폴트는 false이다.

 useCache 이 값을 true 로 셋팅하면 구문의 결과가 2nd 레벨 캐시에 캐시 될 것이다. 디폴트는 true이다.

  • insert, update and delete

flushCache 이 값을 true 로 셋팅하면 구문이 호출될때마다 캐시가 지원질것이다(flush). 디폴트는 false 이다.

  • non-cache (cache 가 적용된 mapper 내의 특정 쿼리에 대한 )

select 구문에서는 useCache=false, insert, update and delete 에서는  flushCache = true 를 명시적으로 준다.


결론적으로 MyBatis cache 를 적용하기 위해서는

MyBatis 설정

  • cacheEnabled ( 설정에서 각 매퍼에 설정된 캐시를 전역적으로 사용할지 말지에 대한 여부 )  디폴트 true

각각의 Mapper

  • 각 매퍼별 <cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/> 설정 구문 추가

  • cache 대상 select 구문에는 별도의 기술이 필요없음

  • non-cache 대상 구문에만  select 구문에서는 useCache = false,

  • insert, update and delete 에서는  flushCache = true 를 명시적으로 준다.


저작자 표시 비영리 변경 금지
신고

'Programming > Spring' 카테고리의 다른 글

MyBatis Cache  (0) 2017.07.16
Spring Application Config  (0) 2017.05.10
Project Lombok  (0) 2016.04.01
posted by 훈즈 플로거
TAG cache, mybatis, Web
2017.05.10 16:30 Programming/Spring


Spring Application Config

<!-- Uncomment and add your base-package here: -->

<context:component-scan base-package="com.example" />

<!-- default-servlet-handler -->

<mvc:default-servlet-handler />

 

<!-- message-converter : utf-8 for post method -->

<mvc:annotation-driven>
  <mvc:message-converters>
   <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    <property name="supportedMediaTypes">
     <list>
      <value>application/json;charset=utf-8</value>
     </list>
    </property>
   </bean>
   <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
  </mvc:message-converters>
  
  <mvc:path-matching registered-suffixes-only="true"/>
 </mvc:annotation-driven>

 

<!-- annotation-config -->

<context:annotation-config />


 <!-- DataSource -->

<util:properties id="prop" location="classpath:properties/database.xml" />

<bean id="dataSourceSpied" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">

<property name="driverClassName" value="#{prop['jdbc.driverClassName']}" />

<property name="url" value="#{prop['jdbc.url']}" />

<property name="username" value="#{prop['jdbc.username']}" />

<property name="password" value="#{prop['jdbc.password']}" />

<property name="defaultAutoCommit" value="#{prop['jdbc.defaultautocommit']}" />

<property name="maxActive" value="#{prop['jdbc.maxActive']}" />

<property name="minIdle" value="#{prop['jdbc.minIdle']}" />

<property name="maxIdle" value="#{prop['jdbc.maxIdle']}" />

<property name="maxWait" value="#{prop['jdbc.maxWait']}" />

<property name="testOnBorrow" value="#{prop['jdbc.testOnBorrow']}" />

<property name="testWhileIdle" value="#{prop['jdbc.testWhileIdle']}" />

<property name="timeBetweenEvictionRunsMillis" value="#{prop['jdbc.timeBetweenEvictionRunsMillis']}" />

<property name="validationQuery" value="#{prop['jdbc.validationQuery']}" />

<property name="poolPreparedStatements" value="#{prop['jdbc.poolPreparedStatements']}" />

</bean>


<bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">

<constructor-arg ref="dataSourceSpied" />

<property name="logFormatter">

<bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter">

<property name="loggingType" value="SINGLE_LINE" />

<property name="sqlPrefix" value="SQL         :  " />

</bean>

</property>

</bean>


<!-- Mybatis -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="dataSource" ref="dataSource" />

<property name="transactionFactory">

<bean class="org.apache.ibatis.transaction.managed.ManagedTransactionFactory" />

</property>

<property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml" />

</bean>

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">

<constructor-arg index="0" ref="sqlSessionFactory" />

</bean>


<!-- Transaction -->

<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<property name="dataSource" ref="dataSource" />

</bean>


<!-- Auto Scan -->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<property name="basePackage" value="com.example" />

</bean>


저작자 표시 비영리 변경 금지
신고

'Programming > Spring' 카테고리의 다른 글

MyBatis Cache  (0) 2017.07.16
Spring Application Config  (0) 2017.05.10
Project Lombok  (0) 2016.04.01
posted by 훈즈 플로거
2016.04.01 11:16 Programming/Spring


https://projectlombok.org/


http://jnb.ociweb.com/jnb/jnbJan2010.html



Installation


java -jar lombok.jar

Screenshot of the Lombok Installer




Maven

Adding lombok to your pom file

<dependencies>
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<version>1.16.18</version>
		<scope>provided</scope>
	</dependency>
</dependencies>
<!-- 아래 정보도 필요할 수 있음 -->
<repositories>
    <repository>
        <id>projectlombok.org</id>
        <url>http://projectlombok.org/mavenrepo</url>
    </repository>
</repositories>


Maven > Update Project..



Lombok features.

val

Finally! Hassle-free final local variables.

@NonNull

or: How I learned to stop worrying and love the NullPointerException.

@Cleanup

Automatic resource management: Call your close() methods safely with no hassle.

@Getter/@Setter

Never write public int getFoo() {return foo;} again.

@ToString

No need to start a debugger to see your fields: Just let lombok generate a toString for you!

@EqualsAndHashCode

Equality made easy: Generates hashCode and equals implementations from the fields of your object..

@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor

Constructors made to order: Generates constructors that take no arguments, one argument per final / non-nullfield, or one argument for every field.

@Data

All together now: A shortcut for @ToString@EqualsAndHashCode@Getter on all fields, and @Setter on all non-final fields, and @RequiredArgsConstructor!

@Value

Immutable classes made very easy.

@Builder

... and Bob's your uncle: No-hassle fancy-pants APIs for object creation!

@SneakyThrows

To boldly throw checked exceptions where no one has thrown them before!

@Synchronized

synchronized done right: Don't expose your locks.

@Getter(lazy=true)

Laziness is a virtue!

@Log

Captain's Log, stardate 24435.7: "What was that line again?"



저작자 표시 비영리 변경 금지
신고

'Programming > Spring' 카테고리의 다른 글

MyBatis Cache  (0) 2017.07.16
Spring Application Config  (0) 2017.05.10
Project Lombok  (0) 2016.04.01
posted by 훈즈 플로거