공부 145

[java] Optional

출처 : http://www.tcpschool.com/java/java_stream_optional 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com Optional 클래스 java.util.Optional 클래스 Optional 클래스는 Integer나 Double 클래스처럼 'T'타입의 객체를 포장해 주는 래퍼 클래스(Wrapper class)입니다. 따라서 Optional 인스턴스는 모든 타입의 참조 변수를 저장할 수 있습니다. 이러한 Optional 객체를 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메소드로 간단히 회피할 수 있습니다. 즉, 복잡한 조건문 없이도 널(null) 값으..

공부/자바 2021.12.08

[spring] spring mvc

MVC 패턴의 개념과 모델2 아키텍처 MVC패턴 : 모델-뷰-컨트롤러는 소프트웨어 공학에서 사용되는 아키텍처 패턴으로 mvc패턴의 주 목적은 비지니스로직과 프레젠테이션로직을 분리하기 위함이다. Model : 데이터 저장소와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다룬다. DAO클래스, Service클래스에 해당 View : 모델이 처리한 데이터나 작업 결과를 가지고 사용자에게 출력할 화면을 만든다. Html과 jsp를 사용 Controller : 클라이언트의 요청을 받았을 때 업무를 수행하는 모델 컴포넌트를 호출한다. 이때 클라이언트가 보낸데이터가 있다면 모델을 호출할 때 전달하기 쉽게 데이터를 적절히 가공하기도 한다. 모델이 업무 수행을 완료하면 그 결과를 뷰에게 전달한다. Ser..

[spring] pojo

POJO란? Plain Old Java Object, 단순한 자바 오브젝트 POJO란, 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말한다. 그러한 POJO에 애플리케이션의 핵심로직과 기능을 담아 설계하고 개발하는 방법을 POJO 프로그래밍이라고 할 수 있다. POJO의 조건 1. 특정 규약에 종속되지 않는다. 자바언어와 꼭 필요한 API외에는 종속되지 말아야한다. EJB2와 같이 특정 규약을 따라 만들게 하는 경우는 대부분 규약에서 제시하는 특정 클래스를 상속하도록 요구한다. 그럴 경우 자바의 단일 상속 제한 때문에 더이상 해당 클래스에 객체지향적인 설계 기법을 적용하기가 어려워지는 문제가 생긴다. Ⅰ. 미리 지정된 클래스를 ex..

[spring] MyBatis

MyBatis 개요와 특징 MyBatis : 자바 오브젝트와 SQL문 사이의 자동 매핑 기능을 지원하는 ORM프레임워크로 SQL을 별도의 파일로 분리해서 관리한다. 복잡한 JDBC코드를 분리하여 깔끔한 소스코드를 유지할 수 있고 수동적인 파라미터 설정과 쿼리 결과에 대한 매핑 구문을 제거할 수 있다. MyBatis3 와 MyBatis-Spring의 주요 컴포넌트 1. 어플리케이션에서 SqlSessionFactoryBuilder 인터페이스를 호출한다 2. SqlSessionFactoryBuilder가 MyBatis Config File을 읽는다 3. SqlSessionFactoryBuilder가 SqlSessionFactory를 생성한다. 4. DB액세스 요청이 들어온다 5. SqlSessionFactor..

[spring] aop

AOP의 개요와 용어 핵심기능과 부가기능 핵심기능 : 업무로직을 포함하는 기능 부가기능 : 핵심기능을 도와주는 부가적인 기능(로깅, 보안) AOP의 개요 AOP는 애플리케이션에서의 관심사의 분리. 즉, 핵심기능에서 부가기능을 분리하는 것이다. 분리한 부가기능을 애스펙트(Aspect)라는 모듈형태로 만들어서 설계하고 개발하는 방법이다. AOP 용어 타겟 : 핵심기능을 담고 있는 모듈. 부가기능을 부여할 대상을 의미한다. 어드바이스 : 타겟에 제공할 부가기능을 담고있는 모듈 조인 포인트 : 어드바이스가 적용될 수 있는 위치. 타겟 객체가 구현한 인터페이스의 모든 메서드는 조인 포인트다. 포인트컷 : 어드바이스를 적용할 타겟의 메서드를 선별하는 정규표현식. 포인트컷 표현식은 execution으로 시작하고 메서..

[spring] Spring JDBC

데이터 액세스 공통개념 DAO패턴 데이터 액세스 계층은 DAO패턴을 적용하여 비즈니스로직과 데이터 액세스 로직을 분리하는 것이 원칙이다. DAO패턴은 서비스계층에 영향을 주지 않고 데이터 액세스 기술을 변경할 수 있는 장점이 있다. 커넥션 풀링을 지원하는 DataSource 커넥션 풀링 : 미리 DB커넥션을 풀에 준비해두고 애플리케이션이 요청할 때마다 할당하여 사용하고 다시 풀로 돌려주는 기법이다. 다중 사용자를 갖는 엔터프라이즈 시스템에서는 반드시 DB커넥션풀링 기능을 지원하는 DataSource를 사용해야한다. Spring에서는 DataSource를 공유 가능한 Spring Bean으로 등록하여 사용한다. DataSource 구현 클래스 종류 SimpleDriverDataSource : Spring이..

[spring] 사용자 관리 프로젝트 아키텍쳐

아키텍쳐 개요 대부분의 중,대규모 웹 애플리케이션은 효율적인 개발 및 유지보수를 위하여 계층화하여 개발하는 것이 일반적이다. 사용자관리 프로젝트 아키텍쳐에서 기본적으로 가지는 계층은 프리젠테이션 계층, 서비스 계층, 데이터액세스 계층 3계층과 모든 계층에서 사용되는 도메일 모델 클래스로 구성되어 있다. 각각의 계층마다 독립적으로 분리하여 구현하는 것이 가능해야 하며, 각 계층에서 담당해야 할 기능들이 있다. 각 계층 사이에서는 인터페이스를 이용하여 통신하는 것이 일반적이다.

[spring] 빈 등록 메타정보 구성 및 의존관계 설정 어노테이션

빈 등록 메타정보 구성 전략 1 : XML단독사용 모든 빈을 명시적으로 xml에 등록하는 방법이다. 생성되는 모든 빈을 xml에서 확인 할 수 있다는 장점이 있으나 빈의 개수가 많아지면 xml파이을 관리하기 힘들다. 여러 개발자가 같은 설정파일을 공유해서 개발하면 충돌이 일어날 수 있다. DI에 필요한 적절한 setter메서드나 constructor가 코드내에 반드시 존재해야 한다. 빈 등록 메타정보 구성 전략 2 : XML과 빈 스캐닝(Bean scanning)의 혼용 빈으로 사용될 클래스에 특별한 어노테이션을 부여하면 클래스를 자동으로 찾아서 빈으로 등록한다. 특정 어노테이션이 붙은 클래스를 자동으로 찾아서 빈으로 등록하는 방식을 빈 스캐닝을 통한 자동인식 빈 등록기능이라고 한다. 어놑이션을 부여하고..

[spring] DI, DL

DI : 클래스간의 의존관계를 빈 설정(Bean Definition)정보(xml, 어노테이션)를 바탕으로 컨테이너가 자동으로 연결해주는 것. => 개발자는 빈 설정파일에 의존관계가 필요하다는 정보를 추가 => 객체 레퍼런스를 컨테이너로부터 주입받아서 실행시에 동적으로 의존관계가 생성 è 장점 : 코드가 단순해진다, 컴포넌트간의 결합도가 제거된다. DI의 유형 1. Setter Injection : setter메서드를 이용한 의존성 삽입 2. Constructor Injection : 생성자를 이용한 의존성 삽입 3. Method Injection : 일반 메서드를 이용한 의존성 삽입 스프링 DI컨테이너의 개념 Spring DI container가 관리하는 객체를 빈(Bean)이라고 하고, 이 빈들을 관리..

[spring] 디자인패턴, 스프링 프레임워크

디자인패턴 : 소프트웨어 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 노하우를 축적하여 재사용하기 좋은 형태로 특정 규약을 묶어서 정리한 것. 요구사항변경에 대한 소스코드 변경을 최소화, 범용적인 코딩스타일을 적용, 직관적인 코드를 사용하기 위함. 프레임워크 : 비기능적 요구사항을 만족하는 구조와 구현된 기능을 안정적으로 실행하도록 제어해주는 라이브러리의 모음 => 1. 애플리케이션들의 최소한의 공통점을 찾아 하부 구조를 제공함으로써 개발자들로 하여금 시스템의 하부 구조를 구현하는데 들어가는 노력을 절감하게 해준다. 2. 기능적인 요구사항에 집중할 수 있게 한다. 3. 디자인 패턴과 같이 반복적으로 발견되는 문제를 해결하기 위한 솔루션을 제공한다. 디자인패턴과 프레임워크 디자인패던은 프..