Java 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크애플리케이션 프레임워크: 특정 계층이나 기술, 업무 분야게 국한되지 않고 애플리케이션의 전영역을 포괄하느 범용적인 프레임워크경량급 프레임워크: 단순한 웹 컨테이너에서도 엔터프라이즈 개발의
Spring을 사용하기 위해 Maven Build가 필요함자바 개발의 사실상 표준 빌드 툴(이전에는 ANT를 많이 사용)XML 설정파일을 사용groovy라는 언어로 설정을 하는 gradle이 새로 등장여러 가지 외부 라이브러리들을 관리해주는 기능도 함Maven의 특징C
New -> Spring Legacy Project -> Simple Spring web MavenSpring Legacy Project : 순수 스프링 프로젝트Spring Starter Project : 스프링 부트 포함된 프로젝트Updating Maven Depen
Dynamic web Project 생성Dynamic web module version 3.1로 설정Apache Tomcat 8.0 설정src\\main\\java : 자바 소스들 관리src\\main\\resources : 개발에 필요한 설정파일 & 런타임에 필요한
IoC 개발자가
스프링 컨테이너에 의해서 관리되는 객체Managed Bean이라고도 함스프링 설정파일에 등록되어 사용, 자동등록 기능 사용 가능Spring Bean Configuration file을 resources 폴더 안에 생성해서 작성하면 된다.id : 클래스명과 동일한 객체명
각 클래스 간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것컨테이너가 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입해줌.DI를 이용하면 개발자들은 단지 빈 설정파일에서 의존관계가 필요하다는 정보를 추가하기
효율적인 개발과 유지보수를 위해 계층화하여 개발대부분의 중/대규모 어플리케이션에서 적용각 레이어는 독립된 역할과 책임(R&R)을 가지며, 근접한 레이어들 끼리만 통신할 수 있다.3가지 레이어프레젠테이션 영역사용자와 상호작용 담당사용자의 요청을 분석/응답비지니스 영역기능
@Component와 하위 어노테이션을 사용하위 어노테이션(계층화 아키텍쳐 기반)@Controller : 프레젠테이션 영역@Service : 비지니스 영역@Repository : 데이터 영역Bean이 될 수 있는 모든 Component들을 자동으로 찾아 Bean Con
사용자 요청(URL 기반)에 해당하는 Controller의 특정 메서드가 호출됨Controller는 요청의 파라미터가 있음녀 처리하고비지니스 처리를 위해서 Service 컴포넌트를 주입받아서 실행실행 결과를 전달받아(화면 정보와 함께) DispatcherServlet에
Maven Repository에서 Spring Web MVC 검색 후 pom.xml에 추가할 코드 복사webapp/WEB-INF/web.xml에 들어가 web-app 태그 내의 기존 코드를 지움그 안에 DispatcherServlet 설정 코드 작성/WEB-INF/sp
: @RequestParam 사용파라미터 이름과 동일한 프로퍼티를 가진 클래스 생성HTTP Form 데이터가 자동으로 Member 객체에 저장됨Command 객체는 자동으로 View의 Model로 바로 등록=> view.addObject("member", member)
개방형 API프로그래밍에서 사용할 수 있는 개방되어 있는 상태의 인터페이스다음, 네이버, 통계청, 기상청 등에서도 데이터를 외부 응용 프로그램에서 사용할 수 있도록 Open API를 제공하고 있다.대부분은 API는 REST 방식으로 지원되고 있다.HTTP와 URI 기반
서버의 처리가 필요없는 static web resources는 요청 시 서버를 거치지 않고 곧바로 응답이 필요특정 URL로 요청이 오면 static resource로 인식하고 바로 응답 수행대표적 static web resources : Javascript, css,
멀티파트 지원 기능을 사용해야하고, 이를 위해서 MultipartResolver를 스프링 설정으로 등록해 사용한다.servlet-context.xmlpom.xmlMaven Repository에서 common fileupload를 검색해 dependency 입력FileU
JUnit은 보이지 않고 숨겨진 단위 테스트를 끌어내 정형화시켜 단위테스트를 쉽게 해주는 Java에서 지원해주는 프레임워크단위테스트 : 모든 함수와 메소드에 대한 테스트케이스를 작성하는 절차. 소스코드의 특정 모듈이 의도된 대로 정확히 작동하는 지 검증Assert 메서
Business 서비스와 로우 레벨의 데이터 엑세스 작업을 분리Database와의 작업(CRUD)은 DAO라는 별도의 클래스를 만들어서 사용데이터베이스와 비지니스 레이어 가운데 위치CRUD 작업 수행JDBCJava에서의 관계형 데이터베이스 접속 기술JDK 레벨에서 지원
Spring에서 애플리케이션을 개발할 때 Container에서 빈을 DI와 DL을 통해 프로그래밍을 진행하게 된다. 이 때 Container를 두 가지로 분리해 사용하는 경우가 일반적이다.DispatcherServlet - 웹의 요청을 최초로 접수DispatcherSe
MyBatis MyBatis는 자바 오브젝트와 SQL문 사이의 자동 Mapping 기능을 지원하는 Object Mapper이다 ORM 기술은 아니다! SQL을 별도의 파이로 분리해서 관리하게 해준다. Hibernate나 JPA처럼 새로운 DB 프로그래밍 패러다임을 익혀
MyBatis의 가장 큰 장점은 매핑 파일SQL 문을 저장하는 존재를 매핑파일이라고 함JDBC 코드에 비하면 코드 수가 95% 이상 감소하기도 함SQL 작성에 집중할 수 있도록 만들어짐DAO 클래스에서 XML Mapper를 사용하게 됨DAO의 SQL문이 Database
검색조건에 따라 검색해야 하는 SQL문이 달라지기 때문에 이를 처리하기 위해서 사용MyBatis의 표현식iftrim(where, set)choose(when, otherwise)foreachDynamic SQL 작성 시 유의사항MyBatis 구문을 이용하여 SQL문이
애플리케이션에서의 관심사의 분리(기능의 분리) 즉, 핵심적인 기능에서 부가적인 기능을 분리한 부가기능을 Aspect라는 독특한 모듈형태로 만들어서 설계하고 개발하는 방법핵심기능과 부가기능을 분리시켜 핵심기능만 작성하고 부가기능을 별도로 작성해서 런타임 시에 이를 결합시
AspectJ 포인트컷 표현식은 포인트컷 지시자를 이용해 작성가장 대표적 지시자 : execution()execution() 문법: execution(접근제한자 패턴 타입패턴 타입패턴 이름패턴 (타입패턴|"..",...)execution() 예시execution(\*
스프링은 선언적 트랜잭션 방식을 사용한다어노테이션을 이용한 방식AOP를 이용한 방식프로그램에 의한 방식트랜잭션은 주로 Service 메서드를 대상으로 한다.@root-context.xml에 Transaction Manager를 설정트랜잭션이 필요한 클래스나 메서드에 @
끝단(DAO와 Service)에서 발생된 예외는 앞단(Controller)로 모여짐.스프링은 Controller에서 예외처리 하는 것을 권장하고 있다. Controller에서 @ExceptionHandler와 @ControllerAdvice를 사용해 예외를 처리Syst
모든 요청에서 반드시 거쳐야하는 서블릿 필터와 유사Servlet Filter와는 다름인터셉터는 컨트롤러 요청에만 적용됨Bean Container 로딩 후 적용되므로 Bean 사용 가능로그인 요청이 들어옴LogIntercepter에서 preHandle을 통과MainCon