본문 바로가기
업무 기록/ETC

신입 메모1

by code2772 2023. 5. 23.

[ 목차 ]

    728x90
    반응형

    @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