Spring
Aunotation 키워드
짤진이
2024. 4. 30. 10:40
반응형
빌드 vs 컴파일
빌드
- 소스 코드 파일을 실행 가능한 소프트웨어 산출물로 변환하는 것
- 소스 파일을 컴파일 하여 목적 파일을 생성하고 링크 과정을 거쳐 실행 가능한 파일을 만들어 내는 과정
- 단순히 컴파일 과정만을 의미하는 것이 아니라, 여러 작업을 수행하여 최종 실행 파일을 만드는 과정을 말한다.
컴파일
- 소스코드를 기계어로 변환
- 컴파일러에 의해 컴파일하여 실행 가능한 파일로 만드는 것
무수히 많은 작업을 통틀어 얘기하는 - 빌드를 알아서 해주는 도구 = > 빌드 자동화 도구
- Ant : 명령이 어렵고 느리다.
- Maven : 명령이 쉽고 조금 빠르다.
- Gradle : 명령이 진짜 쉽고 엄청 빠르다.
Lombok 롬복의 기능
- Lombok의 기능은 model 클래스나 Entity 같은 도메인 클래스 등에 반복되는 getter, setter, toString 등의 메소드를 자동으로 만들어주는 기능을 합니다.
Lombok 롬복의 장점
- Lombok은 복잡하고 반복되는 코드를 어노테이션 기반의 코드 자동생성으로 생산성이 향상되고 코드가 축소되어 가독성 및 유지보수성을 높일 수 있습니다.
Lombok 롬복의 단점
- 코드가 직접 눈에 보이는게 아니므로 직관성이 떨어질수 있습니다.
다양한 종류의 의존성 관리 키워드 사용
- implementation: 해당 의존성을 컴파일 및 런타임 클래스패스에 포함시킵니다. 이는 프로젝트 코드에서 직접 사용하는 의존성에 해당합니다. 다른 프로젝트에서는 해당 의존성을 직접 사용
- compileOnly: 컴파일 시에만 해당 의존성을 클래스패스에 포함시킵니다. 런타임 시에는 사용되지 않습니다. 주로 컴파일 타임에만 필요한 의존성, 예를 들어 API 인터페이스나 플러그인 구현 등을 선언할 때 사용
- runtimeOnly: 런타임 시에만 해당 의존성을 클래스패스에 포함시킵니다. 컴파일 타임에는 사용되지 않습니다. 주로 컴파일 시에는 필요하지 않지만 실행 시에만 필요한 의존성, 예를 들어 특정 라이브러리의 실행 파일 등을 선언할 때 사용
- testImplementation: 테스트 코드에서만 사용되는 의존성을 컴파일 및 런타임 클래스패스에 포함시킵니다. 테스트 코드에서만 사용되는 라이브러리를 선언할 때 사용
- testCompileOnly: 테스트 코드의 컴파일 타임에만 해당 의존성을 클래스패스에 포함시킵니다. 런타임 시에는 사용되지 않음
- testRuntimeOnly: 테스트 코드의 런타임 시에만 해당 의존성을 클래스패스에 포함시킵니다. 컴파일 타임에는 사용되지 않음
사용이 적은 키워드
- compile: 이전에는 의존성을 컴파일하는 데 사용되었지만, 현재는 implementation과 compileOnly가 대체되어 더 정확한 의존성 관리를 제공
- testCompile: 테스트 코드의 의존성을 컴파일하는 데 사용되었지만, 현재는 testImplementation과 testCompileOnly가 대체되어 더 명확한 테스트 의존성 관리를 제공
- runtime: 런타임 의존성을 관리하는 데 사용되었으나, 현재는 runtimeOnly가 대체되어 런타임 시에만 필요한 의존성을 더 명확하게 선언
- provided: 컴파일 타임에만 필요하고 런타임에는 제외되는 의존성을 관리하는 데 사용되었지만, Gradle에서는 이를 좀 더 명확하게 나타내는 방식으로 대체
Marven vs Gradle
[차이점]
1. 가시 : 빌드 스크립트
2. 느낄 : 속도 차이!
스프링은 기본적으로 스프링 빈을 등록할 때 싱글턴 패턴을 따른다.
@Controller : 스프링아 나 이클래스 컨트롤러로 쓸게!
사용자 요청 -> 서비스 일 -> 사용자 + @RequestMapping = 이 클래스의 모든 메소드를 핸들러로 쓸 수 있다.
내가 생각하는 핸들러.. 사용자의 요청에 의해 호출되는 메소드
반응형