참고)
npm
yarn
maven apache
https://maven.apache.org/
압축해제
ㄴ 깃에 안올라가게 설정
ㄴ -*
: 버전이 바껴도 안올라게 설정
ㄴ 명령어
ㄴ 경로 굳이 일일이 입력 안해도 명령어 쓸 수 있도록 설정하기
ㄴ D:\박세현\apache-maven-3.9.6-bin\apache-maven-3.9.6\bin]
: 이름 파일 경로 넣어주기
ㄴ 잘 설정됬는지 쳌
ㄴ 파일 이동
ㄴ mvn archetype:generate
: maven 프로젝트 생성 할 수 있게 무슨 창 뜨는??
ㄴ 엔터 2번 누르기
ㄴ 입력하고 엔터
ㄴ 프로젝트 식별명칭 : exam01 엔터
ㄴ 그냥 엔터
ㄴ 그냥 엔터 : 그룹아이디랑 동일한 패키지명 쓰기로
ㄴ artifactId
: 프로젝트 구분 할 수 있는 아이디
ㄴ y 엔터
ㄴ trust 프로젝트
mvn archetype:generate
예시)
ㄴ 접근 가능 = main에서 test로 접근가능
ㄴ 접근가능 = test끼리 접근 가능
ㄴ 접근❌ = test에서 main으로는 접근불가
참고)
node : package.json 파일과 동일한 역할
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> : 소스 인코딩
<maven.compiler.source>17</maven.compiler.source> : 소스 컴파일 자바 버전
<maven.compiler.target>17</maven.compiler.target> : 배포 파일(jar) 생성시 자바 버전
</properties>
<dependencies>
</dependencies>
사용자명/.m2
-> 메이븐 레포지토리 (공유)예시)
ㄴ 선언자
ㄴ source : 작업시 버전
ㄴ target : 배포시 버전 (maven을 가지고 build할 때)
ㄴ 의존성
예시) 사용자명/.m2 -> 메이븐 레포지토리 (공유)
ㄴ jar : 자바 아카이브, 클래스 파일들이 포함되어 있다
mvn clean compile
: 기존 컴파일 소스 삭제 후 다시 컴파일
mvn compile
: java 파일 -> class 컴파일 (target 폴더)
mvn clean
: 컴파일 소스 전체 지우기(target 폴더 삭제)
clean 하고 compile하는게 좋음
-> mvn clean compile
mvn test
: 테스트 케이스를 실행(전체)
mvn package
: 배포 파일 생성(jar)
내부적으로 : compile -> test -> package(jar)
-> 테스트 미통과시 배포 X
mvn clean package
java -jar 파일명.jar
CTRL + SHIFT + B
버전 표기법
1 .18. 32
(Major) (Minor) (Patch)
lombok.jar
:get, set, toString...이런거 자동으로 기능 가져오기...?
maven central(공식) : 의존성 저장소
참고) maven central repository
https://central.sonatype.com/
mvnrepository(비공식) : 의존성 저장소, 이걸 더 많이 사용
참고) mvnrepository
https://mvnrepository.com/
예시) 컴파일
1번 방법
2번 방법
↓ 컴파일 하면 컴파일한 모든 클래스 파일이 target으로 감
ㄴ 컴파일한 파일들은 target에 존재하게 됨
예시) 컴파일한거 지우기
ㄴ target 없어짐
예시) 이렇게 컴파일 하는게 일반적
ㄴ 클래스파일을 컴파일 할 대 덮어씌우는 형식으로 컴파일 되서 이렇게 해야한다...
예시) 테스트_mvn test
예시) mvn clean package
ㄴ 이게 실행 될 거 : 실행 될 애플리케이션
ㄴ target으로 옮기기
ㄴ 애플리케이션 실행
예시) 메이븐 설치안하고 하는 법
ㄴ sync
ㄴ 명령어 입력
예시) 인텔리제이 기능을 활용해서 메이븐 프로젝트 생성
ㄴ mvn archetype:generate
: 메이븐 프로젝트 생성
-> 이거 구찮
-> 인텔리제이 기능을 활용해서 메이븐 프로젝트 생성하자
ㄴ 단, 의존성은 직접 다시 작성해줘야 함
ㄴ 의존성 정의
ㄴ 예시) 메이븐 레포지토리(비공식) 참조해서 의존성 코드 붙여넣기
ㄴ sync 누르기
예시) 메이븐 레포지토리(공식) + 롬복 의존성 설치
예시) 메이븐 레포지토리(비공식)
ㄴ 많이 쓰는거 선택해서 다운받기
ㄴ 의존성 붙여 넣자ㅏㅏㅏ
예시)
ㄴ 어플라이 -> 오케이 누르기
예시) 버전
ㄴ 버전 표기법 참조
예시) 롬복 써보기
ㄴ 데이터 클래스
ㄴ 인텔리제이 제너레이트도 구찮다
ㄴ 롬복 활용해서 애노테이션 쓰면 자동으로 추가
ㄴ 진짜 애노테이션 통해 됬는지 테스트 하고 싶어
ㄴ 직접 소스쪽에 하지 말고 test에서 하자
ㄴ test쪽은 배포할 때 포함되지 않기 때문에 소스 테스트하기 좋음
ㄴ 아 근데 의존성 추가 해줘야 함
ㄴ R, M붙은거는 실험적인게 들어있을 수도 있음
ㄴ 복붙
ㄴ 코드 작성
ㄴ 보통 Plugin은 백그라운드 파일
ㄴ 복붙
ㄴ sync 눌러주기(빨간글씨 사라짐)
ㄴ test를 위한 의존성 추가 완
ㄴ 이제 애노테이션으로 롬복 기능한거 테스트 해보자
ㄴ 오 애노테이션 하니가 자동으로 안보이지만 재정의 해줬넹
-> get(), set() 보이넹
ㄴ 출력해볼까나
ㄴ 음 toString이 재정의 안됬넹
ㄴ toString 도 추가
ㄴ 이제 값으로 잘 나오는군 ㅎㅅㅎ
ㄴ 동등성 비교도 추가~
ㄴ 출력
ㄴ @Data만 해도 겟, 셋, 투스트링, 이콜스앤해쉬코드 다 들어있음
ㄴ 다 나오네
예시) 롬복_ 생성자 애노테이션
ㄴ 기본생성자 없어서 에러 뜸
ㄴ 기본생성자 추가
ㄴ 에러 사라짐
예시) 생성자 접근제어자 바구기
ㄴ 에노테이션 설정 추가해주기
ㄴ enum상수 형태로
ㄴ 접근제어자 private으로 바껴서 에러 뜸
예시1)@RequiredArgsConstructor_@nonnull에노테이션
예시2) @RequiredArgsConstructor_final
ㄴ 상수(fianl)는 값이 꼭 있어야함 = 초기화 하지 않으면 안됨
ㄴ 1번 방법
ㄴ 상수에 값 대입해줌 = 값 변경불가
ㄴ 오류해결
ㄴ 2번 방법
ㄴ 애노테이션으로 초기화 해 줌
ㄴ non null은 값을 변경 가능
ㄴ 초기화 완
예시) @ToString.Exclude
예시) @Builder 안썻을 때 버전
package member;
import java.time.LocalDateTime;
public class User {
private String userId;
private String userNm;
private String email;
private LocalDateTime regDt;
private User() {}
public static Builder builder() {
return new Builder();
}
@Override
public String toString() {
return "User{" +
"userId='" + userId + '\'' +
", userNm='" + userNm + '\'' +
", email='" + email + '\'' +
", regDt=" + regDt +
'}';
}
public static class Builder {
private User user = new User();
public Builder userId(String userId) {
user.userId = userId;
return this;
}
public Builder userNm(String userNm) {
user.userNm = userNm;
return this;
}
public Builder email(String email) {
user.email = email;
return this;
}
public Builder regDt(LocalDateTime regDt) {
user.regDt = regDt;
return this;
}
public User build() {
return user;
}
}
}
ㄴ 외부클래스 생성자함수 접근제어자 프라이빗이라 외부에서 객체생성못함
ㄴ 내부클래스를 통해 외부 클래스 객체 생성하고 반환값으로 주소값 내보냄
ㄴ 메서드 체이닝 방식
-> 이거 복잡하지 않닝
-> @Builder 애노테이션 쓰면 자동으로 위 패턴 싹 만들어 줌
예시) @Builder 적용한거
ㄴ User클래스랑 동일한 식 적용됨
ㄴ 위 @Builder 적용안한 식이랑 똑같게 외부에서 객체생성 못함 = User2클래스의 생성자함수 접근제어자가 private
ㄴ 음 근데 애노테이션 통해서 접근제어자 바꾸면 안되낭
-> 안되더라...에러 뜸
ㄴ 편법이 있음
-> 기본 생성자를 꼭 써야 되는 경우 @NoArgsConstructor @AllArgsConstructor
ㄴ @NoArgsConstructor , @AllArgsConstructor
ㄴ 오 편법 쓰니까 외부에서 객체 생성 된당