- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MariaDB
- react
- CRUD
- 코어 자바스크립트
- 프로그래머스
- Refactoring
- java
- 배포
- LEVEL1
- Err-Handling
- 코딩테스트
- CSS
- 면접을 위한 cs 전공지식 노트
- javascript
- LEVEL 2
- 오늘도 개발자가 안된다고 말했다
- TMIL
- 아고라스테이츠
- Git
- 에러핸들링
- Docker
- typescript
- 리팩터링 2판
- TIL
- sql
- LEVEL 1
- mongodb
- 알고리즘
- First Project
- TWIL
목록Java (21)
성장에 목마른 코린이
application.yml profile 설정 local, development, production 같은 여러 환경을 하나의 application.yml 파일에 설정하고 사용하는 방법에 대해서 알아 보겠습니다. YAML 설정 하나의 application.yml 파일에 여러 환경의 설정 정보를 저장하려면 spring.profiles를 통해 설정하면 됩니다. Profile 구분자(---)로 구분 합니다. # local, dev, prod 공통 설정 server: port: 8080 tomcat: uri-encoding: UTF-8 --- spring: profiles: local datasource: url: "jdbc:mysql://test-server/test" username: "dbuser" pa..
Servlet은 자신만의 생명주기(life cycle)를 가지고 있고, 웹 애플리케이션 컨테이너에서 컨텍스트가 초기화되면 생명주기가 시작됩니다. Servlet의 생명주기는 초기화(initialize), 서비스(service), 소멸(destroy) 3단계로 구성되어 있습니다. 초기화 - load한 Servlet의 인스턴스를 생성하고 리소스를 load하는 클래스 생성자의 초기화 작업과 동일한 역할을 수행합니다. 서비스 - 클라이언트의 요청에 따라서 호출합니다. 소멸 - Servlet이 unload됩니다. unload는 런타임 오류나 서블릿 컨테이너가 종료되었을 때 발생하는데 이때 서블릿이 unload되어 서블릿의 메서드 호출 결과가 정상적으로 표출되지 않습니다. 서블릿 초기화와 init 메서드 init 메..
윤석진 - 스프링 부트로 배우는 자바 웹 개발 (page 13- 40) Servlet은 JVM 기반에서 웹 개발을 하기 위한 명세이자 API입니다. Java를 실행하려면 JRE(Java Runtime Environment)가 필요한 것처럼 Servlet을 실행하려면 웹 애플리케이션 컨테이너가 필요합니다. Servlet은 Java EE(Enterprise Edition)에 포함된 스펙 중의 하나로 Java에서 HTTP요청과 응답을 처리하기 위한 내용들을 담고 있습니다. Gradle을 이용해서 서블릿을 개발 환경을 설정할 수 있습니다. Gradle은 빌드 도구인데 간단히 말해 Java에서 라이브러리를 편리하게 추가할 수 있는 도구라고 할 수 있습니다. Java 개발을 할 때 확장자를 java로 해서 만드는 ..
Apache(아파치)는 아파치 소프트웨어 재단의 오픈소스 프로젝트입니다. (80포트) 웹서버로 불리며, 클라이언트 요청이 왔을 때만 응답하는 정적(static) 웹페이지(HTML, CSS)에 사용됩니다. Tomcat(톰캣)은 동적(dynamic) 웹페이지를 만들기 위한 웹 컨테이너, 서블릿 컨테이너라고 불립니다. (8080 포트) Web Server에서 정적으로 처리해야할 데이터를 제외한 JSP, ASP, PHP 등은 웹 컨테이너(톰캣)에게 전달합니다. Tomcat이 Apache 기능 일부를 가져와서 제공해주는 형태로 WAS(Web Application Server)입니다. 톰캣만 사용하면 동적인 웹페이지 처리가 가능하지만 아파치에서 필요한 기능을 못가져옵니다. 또, 여러 사용자가 요청할시에 톰캣에 과부..
Spring Boot를 사용하면 개발자들은 Tomcat, Jetty, Undertow 3개의 Embedded 컨테이너를 사용해 애플리케이션 또는 서비스를 쉽게 만들 수 있습니다. 이 3가지 Embedded 컨테이너들을 비교해볼까 합니다. Tomcat vs Jetty vs Undertow 트랜드 비교 위의 그래프에서 볼 수 있듯이, 미국 같은 경우엔 Tomcat 뿐만아니라, Jetty와 Undertow를 많이 사용하지만, 대한민국에서는 Tomcat을 주로 많이 사용합니다. 개발쪽 문화는 미국에서 시작해서 미국을 많이 따라가기에, 앞으로 한국에서도 Jetty와 Undertow 사용량이 늘 것으로 보입니다. Tomcat vs Jetty vs Undertow 성능 비교 여기에서 비교된 jvm. 같은 경우는 Ac..
흔히 웹 서버, 애플리케이션 서버, 웹 컨테이너 라는 3가지 용어를 혼용해서 사용되는데 제각기 다릅니다. Web Server (웹 서버) - 클라이언트의 request를 받아 정적인 컨텐츠(html, css, js)를 response하는 서버 - 예) Apache, Nginx, IIS, WebtoB 등 WAS (Web Application Server / 애플리케이션 서버) - 클라이언트의 request를 받아 DB 조회나, 어떤 로직을 처리해야하는 동적인 컨텐츠를 response하는 서버 - 대부분의 WAS는 정적인 컨텐츠를 제공해주고 있기 때문에, 웹 서버 없이 WAS만 존재할 수 있습니다. - WAS는 웹 서버를 포함하는 개념이라 할 수 있습니다. - 예) Tomcat, WebLogic, WebSp..
Jetty는 Java HTTP Web Server이자 Java Servlet Container입니다. 웹 서버가 보통 문서를 사람들에게 제공하는 것과 관련된 반면, Jetty는 대규모 소프트웨어 프레임워크에서 기계와 기계의 커뮤니케이션에 사용됩니다. 서블릿(servlet)이란 SUN 사에서 제안한 웹서비스를 위한 인터페이스로, javax.servlet.Servlet 인터페이스의 구현체입니다. 일반적인 자바 독립 실행 프로그램과 달리 main 메소드가 없으며, 서블릿 컨테이너에 등록된 후 서블릿 컨테이너에 의해 생성, 호출, 소멸이 이루어집니다. 즉, 클라이언트가 request를 보내면 그에 대한 결과를 다시 전송해주어야 하는데, 이러한 역할을 하는 자바 프로그램이 서블릿입니다. 일반적으로 웹 서버는 정적..
Netty Framework는 전세계 개발자들이 사용하는 자바 네트워크 애플리케이션 프레임워크입니다. Netty의 공식 홈페이지에서는 'Netty는 비동기 이벤트 기반 네트워크 응용 프로그램 프레임워크' 라고 소개하고 있습니다. Netty는 단순히 네트워크 통신과 관련된 기능을 제공할 뿐만 아니라 일반적으로 네트워크 애플리케이션에서 사용하는 다양한 기능들을 포함하고 있습니다. 덕분에 자바 프로그래머들은 네트워크 프로그래밍이나 멀티스레드 관련된 처리보다는 자신들의 비즈니스 로직에 좀 더 집중할 수 있게 되었습니다. Netty를 이용한 애플리케이션은 최소 10만개 이상의 클라이언트 커넥션을 처리할 수 있을 정도로 안정되어 있습니다. Netty Framework의 특징 1. Asynchronous IO (비동..
enum: 열거형 (기본 정수 숫자 형식의 명명된 상수 집합에 의해 정의되는 값 형식) - 클래스처럼 보이게 하는 상수 - 서로 관련 있는 상수들을 모아 심볼릭한 명칭의 집합으로 정의한 것 - Enum 클래스형을 기반으로 한 클래스형 선언 - 새로운 열거형을 선언하면, 내부적으로 Enum 클래스형 기반의 새로운 클래스형이 만들어짐 열거된 순서에 따라 0부터 순서값을 가집니다. 차례대로 증가합니다. enum 열거형으로 지정된 상수는 대문자를 사용합니다. 마지막 끝에 세미콜론(;)을 붙이지 않습니다.
@Entity 해당 어노테이션을 붙이게 되면 해당 클래스가 데이터베이스의 테이블과 1대1 매칭이 됨 속성 - Name : JPA에서 사용할 엔티티 이름을 지정 (보통 기본값인 클래스 이름을 사용) 주의사항 - 기본 생성자는 필수 (JPA가 엔티티 객체 생성 시 기본 생성자를 사용) - final 클래스, enum, interface, inner class에는 사용할 수 없음 - 저장할 필드에 final 사용 불가 @Table(name="??") ??에 해당하는 테이블과 매핑됨 생략시 매핑한 엔티티 이름을 테이블 이름으로 사용 속성 - Name : 매핑할 테이블 이름 (default. 엔티티 이름 사용) - Catalog : catalog 기능이 있는 DB에서 catalog를 매핑 (default. DB ..
JPA Java Persistence Api를 뜻하며 ORM을 제공하는 Java 표준 Api 입니다. ORM (Object-Relational Mapping) Java 객체를 데이터베이스 테이블에 매핑하거나 그 반대로 매핑하는 것을 의미합니다. JPA의 기능: Java 객체에서 데이터베이스의 관계형 테이블로 데이터를 유지, 읽기 및 관리하기 위한 인터페이스를 제공합니다. JPA를 써야하는 이유: 객체 모델(Java)과 관계형 모델(Database) 불일치로 인해 코드가 방대해지고 복잡해지는 불편함을 줄이기 위해 관계형 객체는 표 형식으로 표시되는 반면 객체 모델은 객체 형식의 상호 연결된 그래프로 표시됩니다. RDBMS에서 객체 모델을 저장하고 검색하는 동안 다음과 같은 이유 일부 불일치가 발생합니다. ..
@Data Data Annotation은 @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode 를 한꺼번에 설정해주는 매우 유용한 Annotation입니다. 클래스 레벨에서 @Data를 붙여주면, 모든 필드를 대상으로 접근자와 설정자가 자동으로 생성되고, final 또는 @NonNull 필드 값을 파라미터로 받는 생성자가 만들어지며, toString, equals, hashCode 메소드가 자동으로 만들어집니다. @Getter @Setter (접근자/설정자 자동 생성) Lombok에서 가장 많이 사용되는 Annotation 입니다. 예를 들어, x라는 필드에 선언하면 자동으로 getX()와 setX() 메소드를 생성해줍니다. ..