분류 전체보기 (730) 썸네일형 리스트형 [Java] Lombok 주의사항 롬복은 어노테이션으로 편하게 getter,setter,생성자 등등을 사용할 수 있는 것이다. 근데, 사용시에 주의해야하는 사항이 있다. AllArgsConstructor, RequiredArgsConstructor 사용금지 생성자 필드에 대한 자동 생성 어노테이션이다. 해당 필드에 대한 값의 순서만 바꾸면 ,생성자에대한 값도 바뀌게 되는데, 이는 오류 발생이 높다. 아무 생각없이 순서만 바꿔도 로직에서 동작을 안하거나,잘못된 값들이 저장 되는 위험이 있다. AllArgs -> 모든 필드를 생성자의 인수로 만들어주는 어노테이션 Required -> 초기화 되지않은 final, @nonnull이 붙은 필드에 대해 생성자를 생성해준다. @EqualsAndHashCode 사용자제 EqualsAndhashCode.. [Java] Static Factory method 팩터리 메서드 : 객체의 클래스 생성을 담당하는 메서드 생성자를 통해서 객체를 생성하지 않고, 생성 메서드를 통해서 객체를 생성하는 것을 정적 팩터리 메서드라고 한다. 그러면 생성자를 대신해서 정적 팩터리 메서드를 사용하면 뭐가좋을까 1. 이름을 가질 수 있다. 2.객체 생성을 캡슐화 가능하다 3. 하위클래스 타입으로 반환이 가능하다. 4.호출할때마다 신규 객체를 생성할 필요가 없다(싱글톤 유지시에) [java] war파일 jar파일 비교 jar : Java archive Java 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일 Class, 라이브러리 파일을 포함함 JRE Java Runtime Environment만 있어도 실행 가능함 War servlet/ Jsp 컨테이너에 배치할 수있는 웹 애플리케이션 압축파일 포맷 웹 관련 자원을 포함한다. 사전 정의된 구조를 사용한다. 별도의 웹서버 필요 Jar파일의 일종으로 웹 애플리케이션 전체를 패키징하기 위한 Jar파일이다. 정리 해보자 war는 웹 애플리케이션 배포에 특화가 되어있고,정해진 구성을 지켜야한다. 또한 tomcat과 같은 서버 위에서 동작하기 위해 war배포가 있고, 어떻게 설정할지는 web.xml을 참고한다. war는 jar의 모든 파일+ 서블릿 컨테이너 같은 웹.. @SessionAttribute에 대해서 이전에 공부한 ModelAttribute는, 전달 받은 값도탐색을 하지만, 세션에 있는 값도 탐색을 한다. 해당 과 같이 작성을 하면 Model 객체에 저장시 세션에 저장될 key을 저장한다. 즉 model에 test라는 값을 넣으면 자동으로 세션에 넣어준다. 해당 과 같이 사용하면, modelAttribute로 세션에 있는 값도 탐색을 한다. 처음 호출할때 오류가 발생할 수있지만 별도 ModelAttribute메서드를 선언하게 되면, 해당 메서드 별 인터셉트 같이 베이스로 돌기때문에 값을 넣어줄수있다. 만약에 모든 세션이 종료되면, SessionStatus 객체의 setComplete를 활용하여 지울 수 있다. @SessionAttributes는 해당 컨트롤러 내에서만 동작한다. 해당 컨트롤러 안에서 .. [Spring] static 과 스프링 빈의 차이 정확히는 Spring 의 싱글톤 과 자바 static을 이용한 싱글톤 패턴의 차이라고 볼 수 있다. 여러 객체들이 하나의 인스턴스를 공유 한다는 개념은 같다. 하지만 해당 인스턴스의 생명주기에서는 큰 차이를 보인다. 1. 공유 기준 java static 의 공유 범위는 클래스 로더 기준 스프링 싱글톤의 공유 범위는 어플리케이션 컨텍스트 기준 클래스 로더기준이라고 하면, 톰캣 기준, webapp부분을 계층 적으로 관리한다. 만약에 webapp1, webapp2가 있다면, war파일 기준으로 다른 파일에 있는 클래스들끼리는 참조할 수 없다. 만약, 싱글 톤 기반으로 어플리케이션 컨텍스트 기준으로 공유하게 된다면 하나의 war파일 안에는 web.xml에 등록된 여러개의 servlet이 있을수있다. Spring.. [Java] Static이란? 인스턴스를 생성하면, 각 인스턴스들은 서로 독립적이기때문에 서로 다른값을 유지한다. 경우에 따라서는 각 인스턴스들이 공통적으로 같은 값이 유지되어야 하는 경우, static을 붙인다. static 이 붙은 멤버변수는 클래스가 메모리에 올라갈때, 이미 자동적으로 생성이 된다. (인스턴스 생성 시점이 아님) static 이 붙은 메서드에서는 인스턴스 변수를 사용할 수 없다. static이 메서드는 인스턴스 생성없이 호출이 가능한 반면, 인스턴스 변수는 인스턴스를 생성해야만 존재하기 때문에 static이 붙은 메서드를 호출할때 인스턴스가 생성되어있을수도, 그렇지 않을수도 있어서 static이 붙은 메서드에서 인스턴스 변수의 사용을 허용하지 않는다. 반대로, 인스턴스 변수나 인스턴스 메서드에서는 static 붙.. [Java] finalize 메서드 사용 및 메모리 점유 모든 자바 클래스의 최상위 부모 클래스는 Object클래스이고, finalize메소드가 존재한다. Java API에는 이 메소드는 가비지 컬렉터가 레퍼런스를 잃은 클래스의 인스턴스를 가비지 컬렉션할 때 호출한다. 이 메소드는 객체 인스턴스가 가비지 콜렉션에 의해 소멸되는 시점에 특정한 동작을 수행해야할때도 요긴하게 사용할 수 있는 메소드이다. GC발생시에 즉각적으로 Collection되지 않는다. Finalize가 선언되어있으면, Finalization Queue에 들어간 후, Finalizer에 의해 정리가 된다. finalize 메소드를 수행하는데 오래걸리면, 그만큼 객체가 오랫동안 메모리를 점유하게 되고, 이는 OOM이 발생확률이 높아진다. 대부분 종료자의 주요목적은 메모리에서 제거되기 전에 개체에.. [Spring] ModelAttribute 커맨드 객체에 대한 기능에 대해서 알아야 한다. 서블릿의 생명주기 서블릿 컨테이너가 서블릿 인스턴스의 init()메서드를 호출하여, 초기화한다. 서블릿이 초기화된 다음부터 클라이언트가 요청을 처리할 수 있다. 각 요청은 별도 스레드로 처리하고, 이때 서블릿의 service메서드를 호출한다. 이안에서 HTTP 요청을 받고, 클라이언트로 보낼 HTTP응답을 만든다. get,post에 따라서 doGet이나 doPost등으로 위임하여 처리한다. 서블릿 컨테이너 판단에 따라 서블릿을 메모리에서 내려야할 시점에 destroy를 호출한다. 서블릿은 개발자가 Http요청 메시지를 편리하게 사용할 수 있도록 HTTP 요청 메시지를 파싱한다. 결과를 HttpServletRequest객체에 담아서 제공한다. HttpServ.. 이전 1 ··· 43 44 45 46 47 48 49 ··· 92 다음