본문 바로가기
반응형

3. 웹개발/3_1_2 스프링10

[Spring] Transactional 정리 및 예제 [Spring] @Transactional 정리 및 예제 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 스프링 어노테이션 @Transactional ] 입니다. : ) 들어가기 앞서...... SI를 할때, 현재 어느 쇼핑몰 운영을 맡으며 개발 소스를 보면 많은 비즈니스 로직이 Controller에 절차지향적으로 짜여져 있는걸 보게 된다. 이런걸 볼때마다 조금씩 business을 하나의 트랜잭션 단위로, Service쪽으로 옮기는 작업을 할 수 있다. 이로 인해 그나마 객체지향적으로 코딩할 수 있고, 재사용 할 수 있음과 동시에 Transaction 단위로도 개발하기 편해진다. 1. 트랜잭션의 성질 ▶ 원자성(Atomicity) - 한 트랜잭션 내에서 실행한 작업들은 하나로 간주한다. 즉, 모두 성공 또.. 2019. 1. 12.
[Spring] 스프링(Spring) 정의 및 특징 정리 [Spring] 스프링(Spring) 정의 및 특징 정리 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 스프링(Spring) 정의, 스프링 특징 ] 입니다. : ) 스프링프레임워크(Spring Framework) - 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 스프링(Spring)이라고도 불린다. - 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다. ▶ 참고1) 어플리케이션??? 애플리케이션?? 앱?? 어플??, 등 용어가 헷갈리시는 분들이 많을 텐데 개발자라면 기본상식으로 알고있어도 좋을 것 같다. 애플리케이션(O) 어플리케이션(X) 앱(O) 어플(X) ▶ 참고2) - 로드 존슨(Rod Johnson)이 자신의 JAVA 개발 경험과 노하우를 기반으로 출판한 책(Expert On.. 2018. 10. 6.
[Spring] Filter, Interceptor, AOP 차이 및 정리 [Spring] Filter, Interceptor, AOP 차이 및 정리 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ [Spring] 필터, 인터셉터, AOP 정리 ] 입니다. : ) 공통 프로세스에 대한 고민자바 웹 개발을 하다보면, 공통적으로 처리해야 할 업무들이 많다. 예를들어 로그인 관련(세션체크)처리, 권한체크, XSS(Cross site script)방어, pc와 모바일웹의 분기처리, 로그, 페이지 인코딩 변환 등이 있다. 공통업무에 관련된 코드를 모든 페이지 마다 작성 해야한다면 중복된 코드가 많아지게 되고 프로젝트 단위가 커질수록 서버에 부하를 줄 수도있으며, 소스 관리도 되지 않는다. 즉, 공통 부분은 빼서 따로 관리하는게 좋다. 이러한 공통업무를 프로그램 흐름의 앞, 중간, 뒤에 추.. 2018. 10. 4.
[Spring] @PostConstruct , @PreDestroy @postConstruct - 객체의 초기화 부분 - 객체가 생성된 후 별도의 초기화 작업을 위해 실행하는 메소드를 선언한다. - @PostConstruct 어노테이션을 설정해놓은 init 메소드는 WAS가 띄워질 때 실행된다. @PreDestroy - 마지막 소멸 단계 - 스프링 컨테이너에서 객체(빈)를 제거하기 전에 해야할 작업이 있다면 메소드위에 사용하는 어노테이션. - close() 하기 직전에 실행 -> ((AbstractApplicationContext) context).close() //초기화 메소드 @PostConstruct public void init(){ System.out.println("초기화 메소드!!"); } //소멸 메소드 @PreDestroy public voi.. 2017. 6. 5.
제어의 역전(IOC) 제어의 역전(IOC - Inversion Of Control) 앞서 우리는 UserDao를 분리와 확장이 잘 적용된 깔끔한 코드로 리팩토링하는 작업을 수행했다. 사실 우리가 역할을 넘어간 UserDaoTest가 있다. 테스트용으로 만든건데 DB커넥션 클래스의 결정과 UserDao와의 연결까지 맡고 있으니 문제가 있습니다. 이것도 분리해줘야 합니다. 지금부터 우리가 따로 분리해내어 만들 클래스는 팩토리 라는 이름으로 사용되는 클래스입니다. 팩토리 클래스의 역할은 객체의 생성방법을 결정하고 그렇게 만들어진 오브젝트를 돌려주는 역할을 합니다. UserDaoTest에서 테스트 목적의 기능을 뺀 나머지를 한데 모아 DaoFactory라는 이름의 클래스로 만들겠습니다. DaoFactory.java 그리고 UserD.. 2016. 3. 3.
DAO 분리와 확장(4/4) - 네번째, 원칙과 패턴 초난감 DAO 코드를 개선해온 결과를 객체지향 기술의 여러 가지 이론을 통해 설명한다. 개방 폐쇄 원칙 (OCP. Open-Closed Principle) - 깔끔한 설계를 위해 적용 가능한 객체지향 설계 원칙 중의 하나다. ‘클래스나 모률은 확장에는 열려 있어야 하고 변경에는 닫혀있어야 한다’라고 할 수 있다. 객체지향 설계 원칙(SOLID) 객체지향 기술은 어느 날 한 번에 만들어진 것이라기보다는 오랜 시간에 걸쳐 점진적으로 발전해온 기술이라고 볼 수 있다. 그렇기 때문에 객체지향 프로그래밍 언어의 종류도 다양하고 객체지향 기술을 받아들이고 적용하는 관점과 기법도 조금씩 차이가 있다. 그럼에도 객체지향이라는 이름으로 묶을 수 있는 분명한 특징이 있다. 객체지향 설계 원칙은 객체지향의 특징을 잘 살릴 .. 2016. 2. 19.
DAO 분리와 확장(3/4) - 세번째, DAO의 확장 1. 클래스의 분리 관심사의 분리보다 더 화끈하게 분리를 해보자. DB커넥션과 관련된 부분을 서브클래스가 아니라 아예 별도의 클래스에 담는다. 이 클래스를 UserDao가 이용하게 한다. 예를 들어 별도의 SimpleConnectionMaker 클래스에 DB커넥션 코드를 작성하고 상속이 아닌 생성자를 통해 각 메소드에서 DB 커넥션을 가져오게 한다. public class SimpleConnectionMaker { public Connection makeNewConnection() throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); Connection c = DriverManager.getConnecti.. 2016. 2. 19.
DAO 분리와 확장(2/4) - 두번째, DAO의 분리 DAO의 분리 1. 관심사의 분리 - 관심이 같은 것끼리 하나의 객체 안으로 또는 모이게 하고, 관심이 다른 것은 가능한 따로 떨어져서 서로 영향을 주지 않도록 분리한다. 2. 커넥션 만들기의 추출 - 전편의 DAO 예제를 살펴 보면 메소드 안에 커넥션 정보가 담겨 있기 때문에 수백, 수천 개의 DAO 메소드를 만들게 된다면 코드가 여기저기 중복 될 뿐만 아니라 향후 다른 커넥션 정보를 사용 할 경우 이 모든 DAO 메소드를 수정해야 한다. 즉, 커넥션 가져오는 중복 코드를 분리해야 한다. 중복된 DB 연결 코드를 getConnection() 이라는 메소드로 분리 한다면 커넥션 정보가 변경된다 하더라도 한 메소드의 코드만 수정하면 된다. 리펙토링 리펙토링은 기존의 코드를 외부의 동작방식에는 변화 없이 내.. 2016. 2. 12.
DAO 분리와 확장(1/4) - 첫번째. 마구잡이 DAO 생성 DAO 분리와 확장 (1/3) - 첫번째. 마구잡이 DAO 생성 DAO(Data Access Object)는 DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말한다. 1. User 클래스 생성 - 사용자 정보 저장 시 자바빈 규약을 따르는 오브젝트를 이용하면 편리하다. 사용자 정보를 저장할 User 클래스를 만든다. public class User { String id; String name; String password; public String getld() ( return id; } public void setld(String id) ( this.id = id; } public String getName() { return name; } public void setNam.. 2016. 2. 1.
[Spring] 스프링 이란? 스프링이란? - 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크 스프링 컨테이너 스프링 컨테이너는 설정정보를 참고로 하여 애플리케이션을 구성하는 오브젝트를 생성 & 관리한다. 독립적으로 동작 가능하지만 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록하여 사용한다. 스프링이 제공하는 세가지 핵심 프로그래밍 모델 1. IoC / DI 오브젝트의 생명주기와 의존관꼐에 대한 프로그래밍 모델. 객체지향 설계 원칙과 디자인 패턴의 핵심 원리를 담고 있으며 프레임 워크의 근간으로 삼고 있다. 스프링이 직적 제공하는 모든 기술과 API, 심지어 컨테이너도 IoC/DI 방식으로 작성되어 있다. 2. 서비스 추상화 이식성이 뛰어나다.(서버, 특정 기술에 종속 되지 않는다.) 3. AOP 애플리케이.. 2016. 1. 27.
반응형