Java/Spring
-
@ControllerAdvice와 @ExceptionHandlerJava/Spring 2020. 7. 27. 18:04
■@ControllerAdvice란? Controller를 보조하는 어노테이션. Controller에서 쓰이는 공통 기능들을 모듈화하여 전역으로 쓰기 위해 사용. 아래 3개의 어노테이션을 지원한다. @ExceptionHandler @ExceptionHandler 뒤에 붙은 Exception이 해당 @Controller에서 발생했을 때, 그 Exception에 대한 전역적인 예외 처리를 할 수 있게 한다. @InitBinder 모델 검증과 바인딩을 하기 위한 어노테이션. JSR-303 빈 검증기능을 사용하는 스프링 validator를 사용할 수 있다. @ModelAttribute 도메인 오브젝트나 DTO프로퍼티에 요청 파라미터를 한 번에 받을 수 있는 @ModelAttribute를 전역으로 사용 가능하다...
-
Spring 어노테이션Java/Spring 2019. 5. 20. 10:00
■Annotation- 사전적 의미는 '주석'이다. - 일반 자바 어플리케이션에서는 프로그램 실행에 직접적인 영향이 없는 주석의 역할을 충실히 수행하지만 스프링에서는 단순 주석을 넘어 막강한 영향을 끼치는 코드 장치(?) 라고 볼 수 있다. ■bean이란?- 자주 사용될 클래스들은 아예 처음부터 하나만 미리 만들어 놓고 그 객체를 여러 클래스에서 참조해 사용하면 훨씬 경제적이고 효율적이기 때문에 등장하게 된 개념!이런 클래스를 bean 클래스라고 부른다. - 클래스를 bean으로 등록시키는 어노테이션과 그렇지 않은 어노테이션으로 구분해서 아래에 정리해 봤다. ■bean으로 등록되는 Annotation- @Component- 클래스들이 스프링의 component-scan기능에 의해 스캔되어 bean으로 등..
-
xssJava/Spring 2019. 5. 7. 15:42
■xss(Cross-site Scripting)란??- 특정 웹 페이지의 허점을 찾아 자바스크립트를 사용하여 타인의 정보를 빼가는 공격! ■xss 공격의 예- 태그 등을 form 입력 페이지 등을 통해 서버 DB에 저장시킨다. - 공격 코드는 js로 구성되기도 하고, xss체크에 걸리지 않기 위해 아스키코드로 변환한 js 코드로 구성되기도 한다. - 그리고 피해자가 특정 페이지에 접속하면 공격자가 저장한 악성 데이터가 로드되고 실행된다. 피해자의 브라우저는 공격자의 스크립트에 의해 세션을 탈취당하여 개인 정보를 털리기도 하고, 순식간에 악성 사이트로 이동되기도 한다. - 더 많은 예 : https://handongchoi.com/2017/11/18/xss-script/ ■xss를 방어하기 어려운 이유??..
-
IOC (DI)Java/Spring 2019. 4. 6. 15:17
■IoC/DI의 실생활 비유- 전자제품을 살 때, 우리는 플러그에 대해서 신경쓰지 않고 구매한다.(IOC)- 왜냐하면 우리나라에서는 220v 형태의 플러그로 만들도록 암묵적인(?) 규칙이 정해져 있기 때문이다.(인터페이스)- 그래서 전자제품 회사들도 제품을 만들 때, 220v 형태로 만드는 규칙(인터페이스)만 잘 따르면제품을 어떻게 만들든 사람들이 사용하도록 만들 수 있다!(DI) ■스프링에서 IOC/DI를 사용하게 된 이유- ejb 때문에 희미해져버린 객체지향을 다시 살려보자! 하면서IOC/DI같은 객체지향 기법을 도입함~(+IOC/DI가 스프링 고유의 기법은 아니라는걸 알수있다 ㅎㅎ)- 사실 스프링은 IOC, DI, AOP 같은 기존의 객체지향 기법들을 더욱 잘 쓰게 해주는 중재자(?)라고 할 수 있..
-
스프링이란Java/Spring 2019. 4. 6. 15:16
■스프링의 역사 - 자바 엔터프라이즈(기업) 개발에 사용되는 애플리케이션 프레임워크 (프레임워크vs라이브러리)- 기원은 로드 존슨의 J2EE에 관한 서적에 딸린 예제코드- 책의 내용에 매료된 몇몇 개발자들이 로드 존슨을 꼬셔서(?) 정식 프레임워크로 만들기로 함.그것이 바로 스.프.링!- 스프링은 ejb의 한계로 인해 등장했으므로 ejb와의 비교를 통해 스프링에 대해 깊은 이해를 할 수 있음! ■스프링은 경량급이다!- 코드에 불필요하게 등장하던 프레임워크와 서버환경에 의존적인 부분을 제거해줌- 이전 자바 웹프레임워크인 ejb는 기술에 대한 과도한 욕심으로 매우 무겁고 복잡했었음 (ex 고급 was를 사용해야 하는 것 등)- 예를들어- 톰캣,제티같은 경량급(?) was에서도 개발 가능! - ejb에서의..
-
프레임워크vs라이브러리Java/Spring 2019. 4. 6. 15:13
■Framework(프레임워크)- 뼈대나 기반구조를 뜻하고, 제어의 역전 개념이 적용된 대표적인 기술- 소프트웨어에서의 프레임워크는 '소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합' - 완성된 어플리케이션이 아닌 프로그래머가 완성시키는 작업을 필요로 한다! ■Library(라이브러리)- 라이브러리는 단순 활용가능한 도구들의 집합- 개발자가 만든 클래스에서 호출하여 사용- 그 자체로 완성된 상품(?) ■Framework vs Library- 제어 흐름에 대한 주도성이 누구에게/어디에 있는가에 있음- 프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 짜 넣는다- 반면에 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 씀-..