카테고리 없음

스프링 프레임워크 요약, 안드로이드 이론 요약

코너(Corner) 2021. 6. 3.
반응형

안드로이드
   리눅스 기반으로 제작한 모바일 운영체제
   각종 주요 Application을 포함한 소프트웨어 집합.

   ※ 리눅스는 C언어로 만들었다.

안드로이드의 구조
   Application
   Application 프레임워크
   라이브러리(안드로이드 런타임)
   리눅스 커널

   리눅스 커널 위에는 안드로이드를 위한 각종 라이브러리와
   안드로이드를 실행하기 위한 안드로이드 런타임이 존재한다.
   이러한 라이브러리를 기반으로 만들어진 애플리케이션 프레임워크는
   우리가 안드로이드 Application을 개발할 때 필요한 기능들을 제공한다.

안드로이드 개발
   안드로이드 개발 도구인 안드로이드 스튜디오에서 앱을 개발할 때
   사용하는 언어가 자바이므로 자바문법의 기본적인 문법이 바탕이 되어야 한다.

안드로이드 구성 요소
   - 액티비티(Activity)
      사용자 화면 구성.
      사용자가 눈으로 볼 수 있는 화면을 구성하는 요소

   - 프래그먼트(Fragment)
      액티비티 내에서 화면을 유연하게 구성
      한 개의 액티비티에서 여러 개의 프래그먼트를 보여주는 것이 가능함.
   
   - 브로드캐스트 리시버(Broadcast Receiver)
      안드로이드에서 발생하는 다양한 이벤트 수신.
      배터리 상태, 혹은 SMS 수신, 언어 설정 변경 등

   - 서비스(Service)
      주기적으로 데이터를 수신하거나 특정 처리 수행
      사용자에게 보이지 않으므로 백그라운드에서
      데이터를 수신하거나 처리하는 용도로 사용된다.

   - 콘텐트 프로바이더(Content Provider)
      안드로이드 애플리케이션 간의 데이터를 공유하기 위한
      표준화된 인터페이스를 제공하는 요소

   - 인텐트(Intent)
      안드로이드 구성 요소에 다양한 정보를 전달하기 위한 객체

   - 인텐트 필터(Intent Filter)
      다양한 인텐트를 필터링하여 원하는 인텐트만 수신할 수 있도록 하는
      구성 요소

   일반적으로 액티비티, 콘텐트 프로바이더, 브로드캐스트 리시버, 서비스를
   4대 구성요소라고 하지만, 자주 사용하지 않는 콘텐트 프로바이더 대신
   프래그먼트를 넣어서 4대 구성요소로 지칭한다.

프로젝트 구성 요소
   app : Application을 개발하기 위해 필요한 기본적인 파일들이 준비되어 있다.
      (1) manifests(안드로이드 Application의 기본정보를 담고 있다)
         실제 디렉토리가 아닌 가상 디렉토리로서 AndroidMainifest.xml
         파일을 다른 파일들과 구분하기 위한 가상의 디렉토리이다.

      (2) java
         mainActivity가 속해 있는 패키지는 Application 소스 코드를
         작성하는 영역이다.
         androidTest가 적혀 있는 패키지는 안드로이드 앱을 테스트하기
         위한 영역이다. test가 적혀 있는 패키지는 일반 자바코드를
         테스트하기 위한 영역이다.

      (3) res
         resource의 약자로 Application 개발에 필요한 다양한
         리소스들을 저장하는 디렉토리이다.

         - 이미지
         - 위젯 배치 레이아웃
         - Application 아이콘 이미지
         - 색상, 문자열, 치수 등에 대한 다양한 값

   Gradle Scripts : Applcation을 컴파일하고 실행하기 위해 필요한 파일들이 추가되어 있다.
         안드로이드 스튜디오(IDE)와 빌드 시스템이 서로 독립적이므로,
         IDE는 코드 편집만 담당하고, 빌드는 Gradle을 통해 모두 수행된다.

      1) build.gradle(Project:)
         특정 외부 라이브러리인 경우 저장소 주소를 추가해주어야 하며
         바로 이 파일에 작성한다.

      2) build.gradle(Module:app)
         외부 라이브러리 관리 및 설정할 수 있는 파일
         dependencies에 라이브러리 파일을 추가해서 사용한다.

 

 

 


 

스프링 프레임워크

라이브러리와 프레임워크의 차이
- 라이브러리 : 핵심 로직에서 필요한 기능을 미리 만들어 놓은 소스코드
- 프레임워크 : 미리 만들어 놓은 소스코드 안에서 작업할 수 있는 환경

DI(의존성 주입)
   하나의 필드에서 다른 객체를 사용해야 할 때,
   직접 생성자를 호출하면, 의존성이 강해지기 때문에
   유연한 개발을 할 수 없게 된다. 이를 해결하기 위해서는
   누군가가 생성자를 호출해주는 작업을 대신 해주어야 하고,
   이렇게 생성된 생성자를 전달받는 것을 주입이라 한다.
   이 때 그 생성자를 전달해주는 객체가 바로 ApplicationContext이다.

POJO
   객체지향 언어인 자바를 사용할 수 있다는 뜻이다.

DispatcherSevlet
   사용자의 요청을 받아서 알맞는 컨트롤러를 실행하고,
   응답까지 해주는 객체이다.

스프링에서 모델클래스를 설계할 때 작업해주어야 할 어노테이션 3개만
- @Data
- @Component(최후의 보루)
- @Getter
- @Setter
- @ToString
- @AllArgsConstructor
- @RequiredConstructor(final, @NonNull)

Mapper 설계 시 인터페이스를 만드는 이유
   어떤 쿼리문을 사용할 지 모르기 때문에 인터페이스로 설계하고,
   MyBatis를 사용한다면, xml에서 쿼리문을 작성한 후 Mapper 인터페이스와
   연결해준다.

Service 설계 시 인터페이스를 만드는 이유
   1. 재사용
   2. 느슨한 결합

3 Tier

- 영속 계층(데이터 계층) : DB
- 비지니스 계층 : 핵심 로직
- 프레젠테이션 계층 : UI/UX, 프론트, 뷰...

root-context.xml(IoC 컨테이너)
   빈을 스캔하여 만들거나 빈을 직접 만들 때 사용되는 설정 파일이다.
   이렇게 만들어진 빈을 관리하여 적절한 곳에 전달해준다.

컨트롤러 클래스에서 사용할 수 있는 어노테이션 2가지
- @Controller
- @RestController
- @RequestMapping
- @AllargsConstructor
- @Log4j(X)
- @GetMapping
- @PostMapping
- @PutMapping
- @PatchMapping
- @DeleteMapping
- @RequestParam
- @ModelAttribute
- @ResponseBody
- @RequestBody
- @PathValue

AOP : 관점 지향 언어
   핵심 로직 이외의 주변 로직들은 모듈로 분리한 후
   핵심 로직 실행 시 적절한 부분에 삽입되는 기법

스프링 프레임워크의 특징

1. 경량화
2. POJO
3. AOP

REST의 특징
1. 경량화
2. 하나의 리소스를 대표하는 것
3. 서로 다른 언어끼리 혹은 서버끼리 데이터를 전달 가능
4. 페이지 이동 없이 데이터를 전달받을 수 있다.

반응형

댓글