티스토리 뷰
Build Automation Tool
Java와 Build Automation Tool
Build Automation Tool
- Java로 이뤄진 프로젝트는 *.java 파일에 정의된 Java Source 코드로 구성됨
- javac: java source code를 java bytecode로 바꾸기(compile) 위한 도구/명령어. JDK에 포함되어 있음. java compiler의 약자
- compile: 소스코드를 기계어로 바꾸는 과정
- build: 기계어가 실행되어 프로그램이 실행되는데 필요한 모든 과정
- java source code를 java bytecode로 변환
- test디렉토리의 java bytecode 실행
- 실행 결과에 문제가 없다면 프로젝트를 구성하는 모든 파일들을 합쳐서 하나의 파일로 제작 (패키징)
- Build Automation Tool : Maven, Gradle, ...
Maven 알아보기
- Java를 위한 build automation tool
- C#, Ruby 등의 다른 언어에서도 사용 가능
- Project Object Model (POM)
- xml의 형태로 프로젝트를 정의
- pom.xml을 분석해 프로젝트 빌드
Gradle
- Java를 위한 build automation tool
- C, C++, JS에서도 사용 가능
- build.gradle
- groovy라는 언어로 프로젝트 정의
- sub-project 등을 포함시키는 용도의 settings.gradle도 있다
- kotlin을 사용하여 정의할수도 있다 (build.gradle.kts)
Spring Boot 실행하기
일반적인 웹 서비스의 배포 구조
클라이언트가 요청을 보낸 후 신호가 서버로 들어온 이후의 과정
- 예시) 189.206.151.236:80
- 189.206.151.236 : IP주소. 인터넷상에서 하나의 컴퓨터(물리적 컴퓨터. 서버)를 가리킴
- 80 : 포트번호. 컴퓨터 내부에 있는 프로세스에 배분.
- 포트번호를 보고 웹서버에 요청이 들어옴
- 요청을 컴퓨터(서버)내의 filesystem(HDD, SDD 등)의 폴더에 있는 파일로 돌려주거나
- 요청을 web application server라는 프로그램으로 전달
- 주의 : web server와 web application server는 다름!
- web server: http요청을 받아서 그 요청을 전달하거나 파일을 다시 전송하는 목적의 서버 (apache, NGINX ...)
- web application server: 서버 소프트웨어의 종류에 따라 애플리케이션(서비스)를 제공하기 위한 기능을 갖춘 서버 (tomcat ...)
- web application server
- tomcat: java로 만들어진 web archive 파일을 열기 위한 application server
- spring framework의 결과물은 *.war파일, spring boot framework의 결과물은 *.jar 파일
- war 파일을 받아서 web application server가 기능을 제공하거나, spring boot 그대로 기능을 제공하거나
서버의 구성 방법
- Hardware > Web Server > Filesystem 또는 Web Application Server
- Hardware > (Docker) > Spring Boot
Java와 Jar
Jar
- Spring Boot 프로젝트를 빌드하면 jar 파일이 나온다
- jar(java archive)
- java로 작성 후 컴파일된 java bytecode와 실행을 위해 필요한 다양한 자원을 배포를 위하여 모아놓은 파일의 형태
- 쉽게 말하자면 한 형태의 압축파일
- 터미널에서 java -jar 명령으로 실행 가능
- main 함수: 프로그램의 entry point(시작점)
web application의 구조
multi-tier application architecture
- presentation layer : 사용자와 직접적으로 맞닿는 부분.
- logic layer : business logic layer, business logic tier. 사용자의 입력을 확인하고 그에 따른 액션을 취해주는 부분.
- data layer : 데이터를 저장하고 불러오는 부분. 사용자의 데이터 그 자체를 의미하지는 않음. 데이터의 표현만 주고 받음.
Spring Boot의 구조
- dispatcher servlet: framework 내부에 구현되어 있는 부분. http서버의 요청을 받아내는 부분
- controller: dispatcher servlet의 요청을 직접적으로 받아서 service로 보내는 부분
- service: controller가 검증한 요청을 받아 사용자의 입력에 따른 데이터의 조작을 결정하는 부분 (logic layer)
- repository: 데이터의 표현을 받아서 저장하고, 데이터의 표현을 불러와 돌려주는 역할을 하는 부분 (data layer). database와 소통
- view resolver
- database : spring boot 외부에 있음!
Spring IoC
Java의 Interface
Interface와 Abstract Class의 활용에 관해서는 design pattern을 공부
- interface를 잘 활용하면 서로 다른 구현체가 같은 목적을 위해 동작하도록 만들 수 있다
- 사용하고자 하는 객체의 실제 자료형과 무관하게 동작하게 만들 수 있다
- 함수의 인자와 반환 값은 interface를 활용하자
- ex) ArrayList, Vector, HashSet 모두 Collection 인터페이스의 구현체이기 때문에, Collection 인터페이스의 Iterable로 자료형(멤버변수의 자료형)을 지정해 줄 경우 위 자료형 모두가 멤버변수로 들어올 수 있음
- ex) InputStream의 구현체는 많지만 다 InputStream의 기능을 가지고 있다 = InputStream을 필요로 하는 기능에는 구분 없이 사용할 수 있다
Spring IoC Container와 DI
IoC (Inversion of Control, 제어 역전)
- 개발자와 framework가 있다고 가정
- Spring 이전의 전통적인 개발: 정의되어있는 라이브러리의 코드들을 개발자가 가져다 사용
- 제어 역전(Spring framework 이후): framework의 역할이 명확하다면, 개발자의 코드를 framework가 가져다 사용하도록 제어가 역전 (application framework)
Dependency Injection
- Spring IoC Container : Spring에서 IoC를 담당하는 부분. 개발자가 작성한 코드와 설정 정보를 합쳐서 만들어져야 하는 객체를 만들어줌.
- Spring framework를 잘 사용한 코드는 new 키워드의 사용이 최소화
- new를 통해서 기능을 하는 객체를 선언하기보다, 객체의 역할을 정의하면 생성자가 객체를 직접적으로 만들어서 배치하도록
- spring framework: 개발자가 작성한 코드와 설정 정보를 합쳐서 완전한 web service를 만드는 framework
- bean: 개발자가 작성한 코드에 설정을 넣어줌으로써 완성된 객체(의 단위).
- spring ioc container가 관리하는 객체
- Spring IoC Container안에 bean 객체가 여러개 들어있다고 생각하면 됨
- business logic을 작성할 때 IoC Container에서 만들어져 있는 bean객체를 전달받아 사용하면 new해서 객체를 만들 필요가 없음
- Dependency Injection : 이미 존재하는 bean을 필요한 시점에 다시 주입시켜 사용할 수 있게 만들어 주는 것
- Spring에서 구현을 요구하는 부분들을 interface로 정의
- 이후 사용자가 정의한 구현체 bean을 실제 서비스에서 사용
- @Component 어노테이션이 class위에 붙으면 해당 class는 Spring IoC에서 관리하는 객체(bean)이 됨
- @Configuration, @Bean 어노테이션도 확인해 볼 것
- @Bean 어노테이션을 활용해 함수를 bean으로 만들 수 있음
Spring과 Spring Boot의 차이
Spring framework
- xml의 형태로 설정을 만들었음 (bean 설정도 xml파일로 작성해야 함)
- 자바 명령어를 통해 자기 자신을 실행할 수 없음
- 실행을 위해 web application server(tomcat과 같은 제2의 프로그램)을 활용해서 war파일을 배포하는 과정이 추가로 필요
- war형태로 결과물이 나옴
Spring Boot
- spring boot starter라는 패키지에 설정이 정의되어 있음.
tomcat의 서버 기능이 포함되어 있어 jar형태로 결과물이 나오며, 자바 명령어로 jar파일을 바로 실행 가능
'Java > project lion JSB the origin' 카테고리의 다른 글
Ch.6 Spring Boot 기능활용(1) (0) | 2022.03.04 |
---|---|
Ch.5 CRUD & Data (2) (0) | 2022.03.01 |
Ch.4 CRUD & Data (1) (0) | 2022.02.19 |
Ch.3 Spring Boot Basics (2) (0) | 2022.02.13 |
Ch.1 Basics (0) | 2022.01.29 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- SSH
- 코딩
- ssh-agent
- TCP
- SWIFT
- HTTP message
- URLQueryItem
- Cow
- JSON
- multipart/form-data
- 네트워크
- copy on write
- URLComponents
- 커리어스타터캠프
- ssh-configure
- 어플
- Github
- 값 타입
- Endpoint
- URL
- OSI
- 야곰아카데미
- 부트캠프
- HTTP Methods
- 스택
- 메모리 구조
- IOS
- ssh-add
- 참조 타입
- 앱개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함