4. AOP

AOP란

  • Aspect-Oriented Programming / 애스펙트 지향 프로그래밍
  • 애플리케이션 전체에 걸쳐 사용되는 기능을 재사용할 수 있는 컴포넌트에 담을 수 있게 해줌
  • 기존 비즈니스 로직에 영향을 주지 않고 필요한 추가처리를 곳곳에 넣을 수 있는 개발 기법
    • 인증이나 로깅 등
  • 소프트웨어 시스템 내부의 관심사들을 서로 분리하는 기술
    • 시스템은 보통 특정한 기능을 책임지는 여러개의 컴포넌트로 구성된다
    • 각 컴포넌트는 특정 기능 외에 로깅이나 트랜잭션 관리, 보안등의 시스템 서비스도 수행해야 하는 경우가 있다
    • 이러한 시스템 서비스는 여러 컴포넌트에 관련되는 경향이 있다 (횡단관심사)
    • 이러한 관심사가 여러 컴포넌트에 퍼지게 되면, 중복되는 코드가 나타난다
  • 애플리케이션 코드에 산재해서 나타나는 부가적인 기능을 독립적으로 모듈화
    • 시스템 서비스를 모듈화해 컴포넌트에 선언적으로 적용 가능
    • 게시판 기능을 만들 때
    • 게시글 쓰기나 목록읽기와 같은 핵심 로직을 구현할 때
    • 트랜잭션 적용이나 보안검사같은 공통 기능 코드를 핵심로직에 삽입할 필요가 없다
    • AOP라이브러리가 공통기능을 알맞게 삽입해주기 때문

Continue reading

3. DI / 종속 객체 주입

DI란

  • Dependency Injection
  • 실제 어플리케이션에서는 두 개 이상의 클래스가 서로 협력하여 비즈니스 로직 수행
  • 이 때 각 객체는 협력하는 객체에 대한 레퍼런스(종속객체)를 얻어야 한다
  • 그 결과 결합도가 높아지고, 테스트하기 힘든 코드가 만들어지기 쉽다

    private dao;
    dao = new ProductDAO();
    ProductDAO가 강하게 결합된다

  • DI 이용
    • 각 객체를 조율하는 제 3자에 의해 생성시점에 종속객체가 부여된다
    • 객체는 종속객체를 생성하거나 얻지 않는다
    • 종속객체는 종속객체가 필요한 객체에 주입된다

      private dao;
      이후 dao는 조립기가 di 주입

    • 객체가 스스로 종속객체를 획득하는 것과는 반대로, 객체에 종속객체가 부여된다

Continue reading

2. POJO

  • Plain Old Java Object
  • 오래된 방식의 간단한 자바 오브젝트
  • Java EE 등의 중량 프레임워크를 사용하면서, 해당 프레임워크에 종속된 무거운 객체를 만들게 된 것에 반발해서 사용하게 된 용어
  • 특정 자바 모델이나 기능, 프레임워크 등을 따르지 않는 자바 오브젝트를 지칭하는 말
  • 언어 사양 외에 어떠한 제한에도 묶이지 않은 자바 오브젝트
    • 다음과 같은 행동을 해서는 안된다
      • 미리 정의된 클래스의 확장

        public class Exam extends java.servlet.http.HttpServlet{}

      • 미리 정의된 인터페이스의 구현

        public class Exam implements javax.ejb.EntityBean{}

      • 미리 정의된 어노테이션 포함

        @javax.persistence.Entity public class Exam{}

Continue reading

1. spring이란

  • JavaEE가 제공하는 기능들을 대신 제공
  • 가벼운 DI 및 AOP 기반 컨테이너이자 프레임워크
  • 특징
    • 자바 객체를 담고있는 컨테이너
      • 컨테이너는 자바 객체의 생성, 소멸과 같은 라이프 사이클을 관리
      • 컨테이너로부터 필요한 객체를 가져와 사용
    • DI 지원
      • Dependency Injection
      • 설정파일이나 어노테이션을 통해 객체 간의 의존관계 설정
      • 객체는 의존하고있는 객체를 직접 생성하거나 검색할 필요가 없다
    • AOP 지원
      • Aspect Oriented Programing
      • 스프링 자체적으로 AOP를 지원하고 있다
      • 트랜잭션이나 로깅, 보안등의 기능을 분리하여 각 모듈에 적용 가능
    • POJO 지원
      • Plain Old Java Object
      • 스프링 컨테이너에 저장되는 자바 객체는 특정 인터페이스를 구현하거나 클래스를 상속받지 않아도 된다
      • 기존에 작성한 코드를 수정할 필요없이 스프링에 사용 가능
    • 트랜잭션 처리를 위환 일관된 방법 제공
      • JDBC를 사용하든 JPA를 사용하든 설정파일을 통해 트랜잭션 관련 정보 입력
      • 트랙잭션 구현에 상관없이 동이란 코드를 여러 환경에서 사용 가능
    • 영속성과 관련된 다양한 API 지원
      • JDBC, myBatis, 하이버네이트 등 널리 사용되는 라이브러리 연동 지원
    • 다양한 API 연동 지원
      • JMS, 메일, 스케쥴등 다양한 API를 설정파일과 어노테이션을 통해 지원
    • 자체적으로 MVC 프레임워크 제공
    • 스트럿츠2, JSF와 같은 프레임워크 연동

Continue reading

10. jquery ui 플러그인

  • 폼 유효성 검사, 슬라이더 등의 추가 기능을 별도의 js파일로 제공하는 jquery 라이브러리
  • 코어 플러그인
    • 코어 프로젝트의 일부로 간주되는 jquery의 확장 부분
    • ex) jquery UI
  • 커뮤니티 플러그인
  • jquery ui플러그인
    • jquery에서 공식적으로 지정한 플러그인
    • 많이 사용된 유명한 jquery플러그인을 모아 정리
  • jquery UI 플러그인의 메서드 형태
    • $(selector).플러그인이름(“메서드이름”)
    • $(selector).darepicker(“getDate”)
  • 플러그인 소스는 항상 jquery 라이브러리 소드보다 뒤에서 삽입해야 한다

Continue reading

8. 정규표현식

  • 객체초기화 방법
  • var regExp = /정규표현식/[Flag];
  • flag의 종류
    • 자주 사용하는 flag
    • g-Global-문자열 내의 모든 패턴을 찾는다
    • i-ignore case - 문자열의 대소문자를 구별하지 않는다
    • m-multi line - 문자열이 행이 바뀌어도 찾는다

Continue reading

7. 이벤트 관련 메서드

  • 이벤트 처리기 매핑 (event handler mapping)
    • 이벤트가 발생하는 경우 특정 로직을 수행하기 위해 이벤트와 메서드를 연결
    • window.onload = pageLoad;
    • 이벤트 :load
    • 이벤트 처리기 : pageLoad
    • 이 둘을 연결하기 위한 코드 : 매핑코드
  • 이벤트 객체
    • 자바스크립트
      • 브라우저마다 이벤트 객체 사용방법이 다르다
      • 브라우저마다 이벤트 객체 속성이 다르다
    • JQuery
      • 모든 브라우저가 같은 방법으로 사용, 같은 속성을 가진다
      • 속성
        • event.pageX : 브라우저 화면 기준 마우스 x좌표
        • event.pageY : 브라우저 화면 기준 마우스 y좌표
        • event.preventDefalut() : 기본이벤트 제거
        • event.stopPropagation() : 이벤트 전달 제거

Continue reading

1. 제이쿼리란

  • 가장 많이 사용되며 잘 만들어진 오픈 소스 자바스크립트 라이브러리
  • Rich웹 UI를 개발하는데 도움이 되는 다양한 기능들 지원
  • CSS에서 사용되는 선택자 개념으로 DOM 멤버에 접근 가능
  • 플러그인 개념 도입, 기능 확장이 쉬움
  • 특징
    • 편리한 CSS 선택자
    • 크로스 브라우저 지원
      • 코드가 사용될 브라우저를 신경 쓸 필요가 없다
    • 메서드 체이닝
      • 메서드를 연속으로 사용
      • jquery가 제공하는 모든 메서드는 반환값이 효과가 반영된 jquery개체
      • 때문에 메서드를 이어서 사용 가능
      • $(선택자).메서드().메서드().메서드();
      • $(‘tr:odd’).css(“font-weight”,”bold).css(“color”,”blue”);
    • Ajax 지원
    • 풍부한 플러그인 지원
    • jQuery 사이트

Continue reading

21. optional 클래스

  • Integer나 Double 클래스처럼 객체를 포장해주는 Wrapper 클래스
  • 모든 타입의 참조변수를 저장할 수 있다
  • Optional 객체 사용시 NullPointerException 메서드로 간단한 회피 가능
    • 복잡한 조건문 없이 null값으로 발생하는 예외 처리 가능

Continue reading

20. 스트림

1. 스트림API

  • 배열이나 컬렉션에 접근하기 위해서는
    • 매번 새로운 코드 작성, 반복문 사용
    • 코드가 길어지고 가독성 하락
  • 위 문제점 해결을 위해 스트림 API 도입

Continue reading

19. 람다식

1. 람다식이란

  • 메서드를 하나의 식으로 표현한 것
  • 메서드
    • int min(int x, int y){
    • return x<y?x:y;
    • }
  • 람다식
    • (x,y)->x<y?x:y
    • (매개변수 목록) -> {함수몸체}
  • 클래스 작성 및 객체생성 없이 메서드 이용 가능
  • 람다식은 일종의 익명클래스와 같다고 할 수 있다
  • 람다식은 매개변수로 전달될 수 있으며, 결과로 반환될 수도 있다
  • 유의사항
    • 매개변수의 타입을 추론할 수 있는 경우 타입 생략 가능
    • 매개변수가 하나인경우 괄호 생략 가능
      • 괄호 생략 시 타입도 생략
    • 함수의 몸체가 하나의 명령문일 경우 중괄호와 세미콜론 생략 가능
    • 함수의 몸체가 하나의 return문으로만 이루어진 경우 중괄호 생략 불가능
    • return문 대신 표현문 사용 가능
      • 반환값은 표현식의 결과값, 세미콜론 생략

Continue reading

18. 내부클래스

1. 내부클래스란

  • 클래스 내에 선언된 클래스
  • 주로 AWT나 Swing과 같은 GUI어플리케이션 이벤트처리에 사용
  • 클래스 내에 내부클래스를 선언하면 두 클래스의 멤버 간 접근이 용이
  • 외부에는 불필요한 클래스를 감춘다
  • 내부클래스 선언 위치에 따른 종류
    • 인스턴스 클래스
      • 외부클래스의 멤버변수 선언위치에 선언
      • 외부클래스의 인스턴스멤버처럼 다루어진다
    • 스태틱 클래스
      • 외부클래스의 멤버변수 선언위치에 선언
      • 외부캘르새의 static 멤버처럼 다루어진다
    • 지역 클래스
      • 외부클래스의 메서드나 초기화블럭 안에 선언
      • 선언된 영역 내부에서만 사용가능
    • 익명 클래스
      • 클래스의 선언과 객체의 생성을 동시에하는 일회용 클래스
  • 내부클래스도 클래스이기에 abstract나 final 등의 제어자 사용 가능
  • 추가적으로 private, protected 제어자 사용 가능

Continue reading

17. 오브젝트 클래스

  • 모든 클래스의 최고 상위 클래스
  • object클래스의 멤버들은 모든 클래스에서 바로 사용 가능
  • 8개의 메서드 보유
    • 객체를 처리하기 위한 메서드
      • clone() : 객체의 복사본을 만들어 리턴
      • equals() : 객체의 주소값 비요
      • finalize() : 객체가 쓸모없어졌을 때 가비지컬렉터에 의해 호출
      • getClass() : 현재 객체의 클래스의 객체를 리턴
      • hashCode() : 객체에 대한 해시코드 메모리주소 리턴
      • toString() : 객체를 문자열로 표현하는 값 리턴
    • 쓰레드를 위한 메서드
      • notify() : 객체의 모니터에 대기하고있는 단일 쓰레드를 깨운다
      • notifyAll() : 객체의 모니터에 대기하고있는 모든 클래스를 깨운다
      • wait() : 다른 쓰레드가 현재 객테에 대한 메서드를 호출할 때까지 현재 쓰레드가 대기하고있도록 한다

Continue reading

Pagination