brunch

You can make anything
by writing

C.S.Lewis

by 가필드의 인사이트 Jun 25. 2019

전자정부 표준프레임워크(eGovFrame)

표준프레임워크 버전(v3.5~v3.8) 별 핵심 이해와 활용

<제84차 세미나> 표준프레임워크 버전 별 핵심 이해와 활용

시간: 2019.06.25 19:10~21:00

장소: NIA 서울사무소(무교동)

자료:

https://open.egovframe.org/oc/docs.do;jsessionid=A2F87D6643D1633D1280C60E7C276ABE.7b6bbd734c4e06361

[V3.5]

eGovFrame v3.5

http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:dev3.5


l Web Socket

- W3C(World Wide Web Consortium)와IETF 제정

-웹서버와웹브라우저간의통신을위한규정을정의한쌍방향통신(Duplex)용기술규약

- HTTP에비해간략한header로이루어진overhedad가작은가벼운TCP프로토콜API로활용


l SockJS

- SockJS는application 으로하여금 WebSocket API 를사용하는데 있다.

-약WebSocket 사용이불가한경우에도이를fallback option 으로제공하여 어떠한 코드 변화없이  WebSocket API 를사용

-브라우저의지원여부에따라WebSocket, HTTP Streaming, HTTP Long Polling 기술을사용하여 목적지에통신


l STOMP

- STOMP는 text 지향의message protocol 기반으로 Websocket을 이용한 Message Handling을 쉽게할 수있는서비스를 제공

- WebSocket이나 SockJS의 경우 onmessage function에서 받는 메세지를 모두handling해야되는 단점을 가지고있다. 이러한 단점을 구독(subscription)과 사용자 구독(user)를 통해서 처리할 수있다는장점을 가지고있다.


l RestController

-스프링3 버전에서는Controller > 메소드에@RseponseBody어노테이션을적용하여

-스프링4 버전부터 지원하는@RestController라는 어노테이션을 사용하여 컨트롤러의 모든 메소드는 자동적으로 @ResponseBody어노테이션이 적용된 것처럼 동작


l @Lazy 개선

- @Lazy 어노테이션은이제@Bean 정의뿐만아니라주입지점에도사용할수있음


l @Order 개선

- @Order어노테이션을 통해 빈의 Autowired 순서를지정

- org.springframework.core.Ordered interface통해 Order 정보 확인기능 제공


l Generic 개선

-빈주입시Generic Type을지원


l @Description

-빈에대한주석및설명을기입하기위한어노테이션



[V3.6]

eGovFrame v3.6

http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:dev3.6


l JMS Improvement

- @JmsListener어노테이션을통해간편하게Jms를등록가능

- jms:annotation-driven통해jms설정가능

- <jms:listener/>를통해서리스너의우선순위및factory 설정가능


l Caching Improvement

- Spring의기존캐시구성및인프라추상화를사용하여JCache(JSR-107) 기반어노테이션을지원


l Web Improvement

- @RequestParam, @RequestHeader및@MatrixVariable어노테이션에서

JDK 1.8의java.util.Optional기능지원

- HttpMessageConverter 3가지옵션추가(Gson, Google Protocol Buffers, Jackson based XML serialization)


l CSS3, HTML5 적용

- CSS3 기반새로운UI에따른style sheet 적용

- HTML5 기반크로스브라우징, 웹표준, 웹호환성을높여 웹페이지리뉴얼


l Mybatis적용

- Ibatis기반에서Mybatis기반으로SQL ORM OSS 변경


l ORM 로딩방식변경

- Ibatis sqlMap로딩방식(sqlMapConfig:정적)에서mapper(동적) 로딩방식으로변경


l Servlet 3.1 적용

- Servlet 2.5 기반에서Servlet 3.1로WAS 실행환경변경

- WebApplicationInitializer적용을통한동적인web.xml설정

> globals.properties설정파일의Globals.Auth속성을통해(security, session, dummy ) 권한인증처리


l Internationalization(국제화)적용

- 공통컴포넌트20종전체화면에대해영문국제화적용



[V3.7]

eGovFrame v3.7

http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:dev3.7:gettingstarted



l Server Security

- Spring Security 3.2.4 -> 4.0.3 메이저버전OSS 업그레이드

- sniff : 선언된콘텐츠유형으로부터벗어난응답에대한브라우저의MIME 가로채기를방지여부(true, false)

- xframeOptions : sniff옵션이ture일때X-Frame-Options 범위설정(SAMEORIGIN, DENY)

   --> iframe 방지 옵션, SAMEORIGIN은 허용, DENY는 거부

- xssProtection : XSS Protection 기능의사용여부(true, false)

- csrf : spring security의csrf기능사용여부(false, ture)

보안 문제로 변경함!!

l Step Variable(버라이블? 배리어블!)

- Step에서사용자정의변수를사용할수있는기능

- EgovStepVariableListener를통해서 변수선언

- Step의listeners를통해변수처리Listener등록


l Job Variable

- Job에서사용자정의변수를사용할수있는기능

- EgovJobVariableListener를통해서 변수선언

- Job의listeners를통해변수처리Listener등록


l Resource Variable

- step에서사용자리소스정의변수를사용할수있는기능

- EgovResourceVariable를통해서 변수선언

- ItemReader, ItemWriter에서사용가능


l Remote JobLauncher

- 온라인상에서원격으로배치서버의Batch Job을실행하는기능

- Hessian 오픈소스사용


l Shell Processing

- STEP에서 리눅스의쉘,윈도우배치를실행할수있는기능을제공


l Center Cut

- 대용량데이터처리를위해큐(Queue)를사용하여처리하는기능

- ActiveMq오픈소스를허용하여큐(Queue)처리


l @AliasFor 도입

- Annotation 을재사용하여속성값을지정하는기능

- Annotation재활용하여새로운Annotation을만들때


l AspectJ 내에javax.transaction.Transactional지원

- AspectJ에서javax.transaction.Transactional을지원

- 자바빈의annotation 통해transaction설정가능


l @Commit도입

- 테스트시Transaction에대한커밋기능제공

- 특정상황에서데이터에대한저장기능제공


l @Sql도입

- 데이터베이스단위테스트시 선행sql작업실행

- 데이터초기화,특정데이터적재


[V3.8]


http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:dev3.8:gettingstarted



l Interface default methods 지원

- bean property설정시interface default methods의getters/setters(java8 기준)


l @GetMapping지원

l @PostMapping지원

l @PutMapping지원

l @DeleteMapping지원

l @PatchMapping지원


l @SessionAttribute

- 클래스레벨에서@SessionAttribute사용하던Annotation을메소드레벨에서사용

- Session Attribute를가져와바인딩해주는Annotation


l @RequestAttribute

- Request Attribute를가져와바인딩해주는어노테이션


l 서버환경설정파일암복호화

- 서버,웹취약점에의한파일탈취대비하여globals.properties중요정보암· 복호화

- 서버환경설정파일암복호화통한중요정보은닉성제공


l DB 2종추가

- 기존지원하는DB 5종(altibase, cubrid, mysql, oracle, tibero)에서2종(Postgresql, MariaDB)을추가지원

- 공통컴포넌트기본50종+신규(97)종: 147종지원


l Jenkins도입

- Hudson 라이선스정책변경에따른사용제한발생(Eclipse Public License: EPL)

- Hudson은Sun에서관리하던java.net에서출시되어관리되는오픈소스CI툴

Sun -> 오라클로인수되면서허드슨오픈소스커뮤니티간의분쟁으로분기되어

젠킨스란새로운이름을서비스를시작

- Jenkins : MIT License채택



[추가: Spring5 overview]

표준프레임워크의 발전 방향

1. Servlet

   Servlet1.0(1997)/3.0(2009)/3.1(2013), Reactor(2013)

   

Tomcat 대신 Undertow가 성능 우수

https://www.infoq.com/articles/Servlet-and-Reactive-Stacks-Spring-Framework-5/



2. Spring Boot2.0 /Reactor

https://spring.io/

3. Spring Cloud

https://www.infoq.com/articles/spring-cloud-azure/


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari