2. 웹개발/스프링
-
[Spring] @Transactional 정리 및 예제 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 스프링 어노테이션 @Transactional ] 입니다. : ) 들어가기 앞서...... SI를 할때, 현재 어느 쇼핑몰 운영을 맡으며 개발 소스를 보면 많은 비즈니스 로직이 Controller에 절차지향적으로 짜여져 있는걸 보게 된다. 이런걸 볼때마다 조금씩 business을 하나의 트랜잭션 단위로, Service쪽으로 옮기는 작업을 할 수 있다. 이로 인해 그나마 객체지향적으로 코딩할 수 있고, 재사용 할 수 있음과 동시에 Transaction 단위로도 개발하기 편해진다. 1. 트랜잭션의 성질 ▶ 원자성(Atomicity) - 한 트랜잭션 내에서 실행한 작업들은 하나로 간주한다. 즉, 모두 성공 또..
[Spring] Transactional 정리 및 예제[Spring] @Transactional 정리 및 예제 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 스프링 어노테이션 @Transactional ] 입니다. : ) 들어가기 앞서...... SI를 할때, 현재 어느 쇼핑몰 운영을 맡으며 개발 소스를 보면 많은 비즈니스 로직이 Controller에 절차지향적으로 짜여져 있는걸 보게 된다. 이런걸 볼때마다 조금씩 business을 하나의 트랜잭션 단위로, Service쪽으로 옮기는 작업을 할 수 있다. 이로 인해 그나마 객체지향적으로 코딩할 수 있고, 재사용 할 수 있음과 동시에 Transaction 단위로도 개발하기 편해진다. 1. 트랜잭션의 성질 ▶ 원자성(Atomicity) - 한 트랜잭션 내에서 실행한 작업들은 하나로 간주한다. 즉, 모두 성공 또..
2019.01.12 -
[Spring] 스프링(Spring) 정의 및 특징 정리 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 스프링(Spring) 정의, 스프링 특징 ] 입니다. : ) 스프링프레임워크(Spring Framework) - 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 스프링(Spring)이라고도 불린다. - 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다. ▶ 참고1) 어플리케이션??? 애플리케이션?? 앱?? 어플??, 등 용어가 헷갈리시는 분들이 많을 텐데 개발자라면 기본상식으로 알고있어도 좋을 것 같다. 애플리케이션(O) 어플리케이션(X) 앱(O) 어플(X) ▶ 참고2) - 로드 존슨(Rod Johnson)이 자신의 JAVA 개발 경험과 노하우를 기반으로 출판한 책(Expert On..
[Spring] 스프링(Spring) 정의 및 특징 정리[Spring] 스프링(Spring) 정의 및 특징 정리 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 스프링(Spring) 정의, 스프링 특징 ] 입니다. : ) 스프링프레임워크(Spring Framework) - 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 스프링(Spring)이라고도 불린다. - 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다. ▶ 참고1) 어플리케이션??? 애플리케이션?? 앱?? 어플??, 등 용어가 헷갈리시는 분들이 많을 텐데 개발자라면 기본상식으로 알고있어도 좋을 것 같다. 애플리케이션(O) 어플리케이션(X) 앱(O) 어플(X) ▶ 참고2) - 로드 존슨(Rod Johnson)이 자신의 JAVA 개발 경험과 노하우를 기반으로 출판한 책(Expert On..
2018.10.06 -
[Spring] Filter, Interceptor, AOP 차이 및 정리 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ [Spring] 필터, 인터셉터, AOP 정리 ] 입니다. : ) 공통 프로세스에 대한 고민자바 웹 개발을 하다보면, 공통적으로 처리해야 할 업무들이 많다. 예를들어 로그인 관련(세션체크)처리, 권한체크, XSS(Cross site script)방어, pc와 모바일웹의 분기처리, 로그, 페이지 인코딩 변환 등이 있다. 공통업무에 관련된 코드를 모든 페이지 마다 작성 해야한다면 중복된 코드가 많아지게 되고 프로젝트 단위가 커질수록 서버에 부하를 줄 수도있으며, 소스 관리도 되지 않는다. 즉, 공통 부분은 빼서 따로 관리하는게 좋다. 이러한 공통업무를 프로그램 흐름의 앞, 중간, 뒤에 추..
[Spring] Filter, Interceptor, AOP 차이 및 정리[Spring] Filter, Interceptor, AOP 차이 및 정리 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ [Spring] 필터, 인터셉터, AOP 정리 ] 입니다. : ) 공통 프로세스에 대한 고민자바 웹 개발을 하다보면, 공통적으로 처리해야 할 업무들이 많다. 예를들어 로그인 관련(세션체크)처리, 권한체크, XSS(Cross site script)방어, pc와 모바일웹의 분기처리, 로그, 페이지 인코딩 변환 등이 있다. 공통업무에 관련된 코드를 모든 페이지 마다 작성 해야한다면 중복된 코드가 많아지게 되고 프로젝트 단위가 커질수록 서버에 부하를 줄 수도있으며, 소스 관리도 되지 않는다. 즉, 공통 부분은 빼서 따로 관리하는게 좋다. 이러한 공통업무를 프로그램 흐름의 앞, 중간, 뒤에 추..
2018.10.04 -
@postConstruct - 객체의 초기화 부분 - 객체가 생성된 후 별도의 초기화 작업을 위해 실행하는 메소드를 선언한다. - @PostConstruct 어노테이션을 설정해놓은 init 메소드는 WAS가 띄워질 때 실행된다. @PreDestroy - 마지막 소멸 단계 - 스프링 컨테이너에서 객체(빈)를 제거하기 전에 해야할 작업이 있다면 메소드위에 사용하는 어노테이션. - close() 하기 직전에 실행 -> ((AbstractApplicationContext) context).close() //초기화 메소드 @PostConstruct public void init(){ System.out.println("초기화 메소드!!"); } //소멸 메소드 @PreDestroy public voi..
[Spring] @PostConstruct , @PreDestroy@postConstruct - 객체의 초기화 부분 - 객체가 생성된 후 별도의 초기화 작업을 위해 실행하는 메소드를 선언한다. - @PostConstruct 어노테이션을 설정해놓은 init 메소드는 WAS가 띄워질 때 실행된다. @PreDestroy - 마지막 소멸 단계 - 스프링 컨테이너에서 객체(빈)를 제거하기 전에 해야할 작업이 있다면 메소드위에 사용하는 어노테이션. - close() 하기 직전에 실행 -> ((AbstractApplicationContext) context).close() //초기화 메소드 @PostConstruct public void init(){ System.out.println("초기화 메소드!!"); } //소멸 메소드 @PreDestroy public voi..
2017.06.05 -
제어의 역전(IOC - Inversion Of Control) 앞서 우리는 UserDao를 분리와 확장이 잘 적용된 깔끔한 코드로 리팩토링하는 작업을 수행했다. 사실 우리가 역할을 넘어간 UserDaoTest가 있다. 테스트용으로 만든건데 DB커넥션 클래스의 결정과 UserDao와의 연결까지 맡고 있으니 문제가 있습니다. 이것도 분리해줘야 합니다. 지금부터 우리가 따로 분리해내어 만들 클래스는 팩토리 라는 이름으로 사용되는 클래스입니다. 팩토리 클래스의 역할은 객체의 생성방법을 결정하고 그렇게 만들어진 오브젝트를 돌려주는 역할을 합니다. UserDaoTest에서 테스트 목적의 기능을 뺀 나머지를 한데 모아 DaoFactory라는 이름의 클래스로 만들겠습니다. DaoFactory.java 그리고 UserD..
제어의 역전(IOC)제어의 역전(IOC - Inversion Of Control) 앞서 우리는 UserDao를 분리와 확장이 잘 적용된 깔끔한 코드로 리팩토링하는 작업을 수행했다. 사실 우리가 역할을 넘어간 UserDaoTest가 있다. 테스트용으로 만든건데 DB커넥션 클래스의 결정과 UserDao와의 연결까지 맡고 있으니 문제가 있습니다. 이것도 분리해줘야 합니다. 지금부터 우리가 따로 분리해내어 만들 클래스는 팩토리 라는 이름으로 사용되는 클래스입니다. 팩토리 클래스의 역할은 객체의 생성방법을 결정하고 그렇게 만들어진 오브젝트를 돌려주는 역할을 합니다. UserDaoTest에서 테스트 목적의 기능을 뺀 나머지를 한데 모아 DaoFactory라는 이름의 클래스로 만들겠습니다. DaoFactory.java 그리고 UserD..
2016.03.03 -
초난감 DAO 코드를 개선해온 결과를 객체지향 기술의 여러 가지 이론을 통해 설명한다. 개방 폐쇄 원칙 (OCP. Open-Closed Principle) - 깔끔한 설계를 위해 적용 가능한 객체지향 설계 원칙 중의 하나다. ‘클래스나 모률은 확장에는 열려 있어야 하고 변경에는 닫혀있어야 한다’라고 할 수 있다. 객체지향 설계 원칙(SOLID) 객체지향 기술은 어느 날 한 번에 만들어진 것이라기보다는 오랜 시간에 걸쳐 점진적으로 발전해온 기술이라고 볼 수 있다. 그렇기 때문에 객체지향 프로그래밍 언어의 종류도 다양하고 객체지향 기술을 받아들이고 적용하는 관점과 기법도 조금씩 차이가 있다. 그럼에도 객체지향이라는 이름으로 묶을 수 있는 분명한 특징이 있다. 객체지향 설계 원칙은 객체지향의 특징을 잘 살릴 ..
DAO 분리와 확장(4/4) - 네번째, 원칙과 패턴초난감 DAO 코드를 개선해온 결과를 객체지향 기술의 여러 가지 이론을 통해 설명한다. 개방 폐쇄 원칙 (OCP. Open-Closed Principle) - 깔끔한 설계를 위해 적용 가능한 객체지향 설계 원칙 중의 하나다. ‘클래스나 모률은 확장에는 열려 있어야 하고 변경에는 닫혀있어야 한다’라고 할 수 있다. 객체지향 설계 원칙(SOLID) 객체지향 기술은 어느 날 한 번에 만들어진 것이라기보다는 오랜 시간에 걸쳐 점진적으로 발전해온 기술이라고 볼 수 있다. 그렇기 때문에 객체지향 프로그래밍 언어의 종류도 다양하고 객체지향 기술을 받아들이고 적용하는 관점과 기법도 조금씩 차이가 있다. 그럼에도 객체지향이라는 이름으로 묶을 수 있는 분명한 특징이 있다. 객체지향 설계 원칙은 객체지향의 특징을 잘 살릴 ..
2016.02.19