[ 목차 ]
@PostConstruct
의존성 주입이 이루어진 후 초기화를 수행하며 bean이 여러번 초기화되는 것을막는다.
@Slf4j -> slf4j-api
로깅 프레임 워크에 대한 추상화 역할을 하는 라이브러리
@RequiredArgsConstructor
lombok으로 스프링에서 의존성 주입 방법 중 생성자 주입이 임의의 코드없이 자동으로 설정
초기화 되지 않은 final, @NonNull이 붙은 필드에 생성자를 생성하고 새로운 필드 추가할 때 다시 생성자를 만들어 관리해야 하는 번거로움이 없다.
유저 IP를 가져왔을 때 IPv6문제 ,IP4로 전환
springboot나 Tomcat의 run as -> run configuration -> 해당하는 곳으로 들어가 -> arguments -> VM arguments -> - Djava.net.preferIPv4Stack=true 입력히고 -> apply -> run => 문제해결
@Configuration
스프링 IOC Container에 해당 클래스를 Bean 구성임을 알려주는 어노테이션
@Bean, @Component
둘다 Container에 Bean을 등록하도록 메타데이터를 기입하는 어노테이션
@Bean
개발자가 직접 제어가 불가한 외부 라이브러리 등에 만들때 ArrayList 같은 라이브러리등을 등록하는 경우
@Component
개발자가 직접 작성한 Class @Autowired 이용 가능하며 다형성을 띄는 경우 @Qualifier 어노테이션 사용
@Qualifier 어떤 빈을 주입해야 하는지 문제를 없앨 수 있다. 내가 사용하려는 빈을("")에 작성한다.
그 밖의 어노테이션
@RestController = @Controller + @ResponseBody -> Json 형태로 객체 데이터 반환
@Valid 유효성 검사를 위한 어노테이션이다.
@Value : properties 파일에 세팅된 내용을 주입하는 역할을 한다. ${} 를 사용하여 생성자에 피라미터 값을 주입한다.
대문자로 변수를 선언하는 경우는 상수로 바뀌지 않는 값을 누구나 알기 쉽게 작성한것이다.
예를들어 NOT_PATH_VARIABLE_CODE ="S407" 과 같이 오류코드나 상태코드 즉 변하지 않는 상수값을 의미한다.
Gson - 자바에서 json 파싱, 생성위해 사용, 자바 객체를 json 문자열로 변환 가능하고 그 반대도 가능
object -> json : gson.tojson
json -> object : gson.fromjson
StringUtils.hasText(값) : 값이 있을 경우에는 true를 반환하고 공백이나 Null이 들어올 경우에는 false를 반환하게 된다.
Serializable(interface) : 자바 내부 객체나 데이터를 외부에서 사용가능하게 byte 형으로 변환하는 것을 직렬화 그 반대를 역직렬화를 아울러 말한다.
opsForValue() : value 관련된 operation들을 제공하는 객체들을 받아온다.
valueOf() : 해당 객체를 String 객체로 변환시키는 역할
Entity
db 테이블 매핑하는 핵심 클래스, 요청이나 응답값을 전달하는 클래스로 사용하면 안된다.
DTO
데이터를 담아 계층 간으로 전달하는 객체
getter, setter 만 필요하다. 계층간 전달하는 용도로만 사용하기 때문이다.
보내는 쪽에서는 setter, 받는 쪽에서는 getter를 이용한다. 만일 변조를 막는 경우에는 생성자로 불변 객체를 만들자.
vo 는 값 그 자체를 나타내는 객체
로직을 포함할 수 있으며 특정 값 자체를 표현하기 때문에 불변성을 보장을 위해 생성자를 사영한다.
주소가 달라도 값이 같으면 동일한 것으로 여긴다. 변조의 기능이 있는 setter는 있으면 안되고 두 객체의 필드값이 같다면 모두 같은 객체로 만드는것이 핵심이다. object 클래스인 hashcode()와 equals 를 오버라이딩하여 해결한다.
log
%m : 로그 내용을 출력
%p : trace > debug > info > warn > error 등의 priority 출력
%r : 어플리케이션이 시작되어 로깅이벤트가 발생하는 시점까지의 경과시간을 밀리세컨드로 출력
%c : 예) 카테고리가 a.b.c 처럼 되어있다면 %c{2}는 b.c 가 출력
%n : 플랫폼 종속적인 개행문자가 출력된다. \r\n 또는 \n 일것이다.
%d : 로깅이벤트가 일어난 날짜 출력 (프로그램의 실행속도를 느리게 한다.)
예) %d{HH:mm:ss} 또는 %d{dd MMM yyyy HH:mm:ss}
%C : 호출자의 클래스명 출력
예) 클래스구조가 org.apache.xyz.SomeClass 처럼 되어있다면 %C{2}는 xtz.SomeClass 가 출력된다.
%M : 로깅이 발생한 method 이름을 나타낸다.
%F : 로깅이 발생한 프로그램 파일명을 나타낸다.
%l : 로깅이 발생한 caller의 정보를 나타낸다.
%L : 로깅이 발생한 caller의 라인수를 나타낸다.
%x : 로깅이 발생한 thread와 관련된 NDC(nested diagnostic contexct)를 출력한다.
%X : 로깅이 발생한 thread와 관련된 MDC(mapped diagnostic contexct)를 출력한다.
%% : % 표시를 출혁하기 위해 사용
%t : 로그이벤트가 발생된 쓰레드의 이름을 출력한다.
@SpringBootApplication // 3가지 어노테이션을 합친거라고 생가가하자.
// 자동 설정 개요
// SpringBootConfiguration
// ComponentScan
// EnableAutoConfiguration
// 1단계 : ComponentScan
// @Component 가 있는 부분을 빈으로 읽어(등록)들인다
// Configuration, Repository, Service, Controller, RestController
// 하위에있는 위 어노테이션드이 있으면 빈으로 등록을 해준다.
// 2단계 : EnableAutoConfiguration : 1단계 이 후 등록
// spring.factories를 등록한다.
// @Configuration - 자바 설정파일을 만들기 위한 애노테이션 or Bean을 등록하기 위한 애노테이션이다.
// default 패키지를 따로 만들고 메인을 따로 사용하자
// 스프링부트 어플리케이션을 만든다고 하면 여기까지는 무조건 만들어야한다.
public class Application {
public static void main(String[] args){
SpringApplication application = new SpringApplication(Application.class);
application.setWebApplicationType(WebApplicationType.NONE);
application.run(args);
}
// @Bean // @Bean이 무시가 된다. 덮어써지기
// // 이게 나오게 하기 위해서는 @ConditionalOnMissingBean 등록해야 가능헤진다.
// public Holoman holoman(){
// Holoman holoman = new Holoman();
// holoman.setName("whiteship");
// holoman.setHowLong(60);
// return holoman;
// }
}
'업무 기록 > ETC' 카테고리의 다른 글
리눅스(Linux) nginx 설정 (0) | 2023.07.11 |
---|---|
리눅스 .sh(start.sh, stop.sh (0) | 2023.06.25 |
Eclips 환경설정(마켓플레이스, 사설망 Maven Update, mirror) (0) | 2023.06.24 |
리눅스 파일 (0) | 2023.06.24 |
신입 환경설정 오류 (0) | 2023.05.21 |