본문 바로가기

Archived(Programming)

(74)
DI(Dependency Injection) # DI 개념 각 클래스 간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것을 말함 개발자들은 단지 빈 설정파일에서 의존관계가 필요하다는 정보를 추가하면 됨 객체 레퍼런스를 컨테이너로부터 주입 받아서, 실행 시에 동적으로 의존관계가 생성됨 컨테이너가 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입해주는 것 이를 통해 코드가 단순해지며, 컴포넌트 간의 결합도(Coupling)가 제거된다. # DI 유형 # Spring DI 컨테이너 개념 Spring DI 컨테이너가 관리하는 객체를 Bean(빈) 이라고 하고, 이 빈들을 관리한다는 의미로 컨테이너를 빈 팩토리(Bean Factory)라고 부른다. # 실습 1. Service 클래스를 만들어 DAO..
IoC(Inversion of Control) # IoC의 개념 IoC(제어권의 역전)이란, 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다. 컴포넌트 의존관계 결정(Component dependency resoultion), 설정(Configuration) 및 생명주기(lifecycle)를 해결하기 위한 디자인 패턴(design pattern)이다. # IoC 컨테이너 스프링 프레임워크도 객체에 대한 생성 및 생명주기를 관리할 수 있는 기능을 제공하고 있음. 즉, IoC 컨테이너 기능을 제공한다. 기능 IoC 컨테이너는 객체의 생성을 책임지고 의존성을 관리 POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡긴다 cf. POJO에 대해서는 많..
Spring과 Maven # Maven이란 Spring을 사용하기 위해 Maven Build가 필요함. 그렇다면 Maven이란 무엇인가? > Apache에서 자바용 프로젝트 관리 도구로 출시된 오픈소스 SW이다. 쉽게 말해 여러가지 라이브러리를 pom.xml 파일 하나만으로 네트워크를 거쳐서 자동으로 빌드해주는 관리 도구이다. 규모가 큰 프로젝트일 수록 메이븐의 효율성은 더욱 빛이 발휘된다. 자바 개발의 사실상 표준 빌드 툴(이전에는 ANT라는 수작업이 많이 필요한 툴을 사용함) XML 설정파일을 사용(최근에는 Groovy라는 언어로 설정을 하는 Gradle이 등장) # Convention Over Configuration(CoC) 과거에는 Application은 초기 설정이 매우 중요했었음. 모든 설정(Configuration..
Spring 간략 소개 Spring Framework 란? 경량급 애플리케이션 프레임워크 애플리케이션 프레임워크 > 특정 게층이나 기술, 업무 분야에 국한되지 않고 애플리케이션 전 영역을 포괄하는 범용적인 프레임워크를 말함 경량급 프레임워크 > 단순한 웹 컨테이너에서도 엔터프라이즈 개발의 고급 기술을 대부분 사용할 수 있음 Spring Framework 특징 1) 컨테이너 역할 Java 객체의 Life Cycle을 관리하며, Spring 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다 2) DI(Dependency Injection) 지원 Spring은 설정 파일이나 어노테이션을 통해서 객체 간의 의존관계를 설정할 수 있도록 하고 있다. 3) AOP(Aspect Oriented Programming) 지원 Spring은 트..
Spring_Interceptor # 글 작성 시 LoginSession에 대한 선행(PRE) Interceptor servlet-context.xml ... package com.sinc.intern.user.util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; public class SessionChkInterceptor extends HandlerInterceptorAdapter { @Override public..
Spring_data 처리6(ajax 통신 통한 search) # Mapper 설정 cf) Mybatis if 사용 방법 및 String 이어주기 BoardMapper.xml ... SELECT SEQ, TITLE, WRITER, TO_CHAR(REGDATE, 'RRRR-MM-DD') REGDATE, VIEWCNT FROM INTERN_BOARD_TBL TITLE LIKE '%'||#{keyword}||'%' WRITER LIKE '%'||#{keyword}||'%' ORDER BY 1 DESC # Dao 구현 package com.sinc.intern.board.model.sql; import java.util.List; public interface BoardDao { public List listRow(); public int registerRow(Object..
Spring_data 처리5(글 수정) # Mapper 설정 boardMapper.xml ... UPDATE INTERN_BOARD_TBL SETTITLE=#{title}, CONTENT=#{content} WHERESEQ = #{seq} UPDATE INTERN_BOARD_TBL SETVIEWCNT = VIEWCNT + 1 WHERESEQ = #{seq} # DAO 구현 package com.sinc.intern.board.model.sql; import java.util.List; public interface BoardDao { public List listRow(); public int registerRow(Object obj); public ObjectreadRow(Object obj); public intdeleteRow(Objec..
Spring_data 처리4(글 삭제) # Mapper 설정 BoardMapper.xml SELECT SEQ, TITLE, CONTENT, WRITER, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE, VIEWCNT FROMINTERN_BOARD_TBL INSERT INTO INTERN_BOARD_TBL VALUES( BOARD_SEQ.NEXTVAL, #{title}, #{content}, #{writer}, DEFAULT, DEFAULT) SELECT SEQ, TITLE, CONTENT, WRITER, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE, VIEWCNT FROMINTERN_BOARD_TBL WHERESEQ = #{seq} DELETE FROMINTERN_BOARD_TBL W..