static static은 컴파일러에 의해 .java에서 .class 파일로 로드될 시 우선적으로 method 영역(static, class영역이라고도 부름) 메모리에 할당된다. 이런 이유로, 객체가 heap영역 메모리에 올라가기 전에 호출해서 사용할 수 있는 것이다. static 적용 지점 블록 변수 메소드 중첩 클래스 static block 해당 객체가 new를 통해 인스턴스화 될 때 최초 한번만 호출한다. public class MyStaticClass { static int a = 10; static int b; //static block static { System.out.println("static block"); b = a * 4; } public MyStaticClass() { System..
final final의 효과 클래스나 메소드 혹은 변수에 final 제어자가 붙을 수가 있는데 각각 다음과 같은 제한이 생긴다. final 클래스 다른 클래스에서 상속을 하지 못 한다. 클래스가 final일 시 해당 클래스의 내부 메소드도 final로 선언되나, 변수의 경우는 final 개념을 갖지 않는다. final 메소드 상속 받은 클래스에서 오버라이딩을 못한다. final 변수(인스턴스 변수 == 전역 변수) 선언과 동시에 초기화하거나 생성자 내에서 값을 지정할 수 있다. 이 또한 그 이후에는 수정이 불가하다. final 변수(지역 변수) 선언과 동시에 초기화하거나 메소드를 실행 시 값을 지정할 수 있다. 단, 그 이후에는 수정이 불가하다. static final 변수(클래스 변수) 선언과 동시에 ..
public static void 선언 이유 Java의 Main Java는 Main에서 시작해서 Main에서 끝난다 Main은 여러 클래스와 연결될 수 있는 중심부의 역할이다. 매인의 public Main을 실행하는데 있어, Main에서는 다른 클래스의 메소드 등을 호출해야하는데, 막상 Main 자체가 다른 곳에서 접근을 허용하지 않는다면 문제가 생길 수 밖에 없어 Main의 접근제한자를 public으로 선언한 것이다. 메인의 static static은 프로그램이 시작하면 따로 인스턴스화 하지 않아도 method 영역 메모리에 호출되어 진다. 이렇게 호출되어진 것들은 프로그램이 종료되기 까지 유지된다. 즉, 프로그램의 시작과 끝을 함께하는 Main 메소드는 프로그램이 종료되는 시점까지 유지해야하기 때문에..
Immutable Immutable Class는 변경이 불가능한 클래스이며, 레퍼런스 타입의 객체이기 때문에 heap영역에 생성된다. Immutable Class는 변경이 불가능한 것이지 재할당은 가능하다. (소스로 살펴보자) //String, Boolean, Integer, Float, Long 등등이 해당 String str = "test"; str = "test2"; //재할당 소스를 통해 확인해보자 String str = "test"; System.out.println(str.hashCode()); str = "test2"; System.out.println(str.hashCode()); Immutable 특징 장점 멀티 스레드 환경에서 thread-safe가 가능하다. 안전한 공유와 재사용이..
Bean 등록에 필요한 어노테이션 @Component : 태그와 동일한 역할 @Repository : 퍼시스턴스 레이어, 데이터베이스 관련 클래스 @Service : 비즈니스 로직을 가진 클래스 @Controller : 웹 요청과 응답을 처리하는 클래스 Bean 의존관계 주입 어노테이션 @Autowired Spring DI 컨테이너에서 주입하고자 하는 Bean을 불러온다. Setter 메소드, 필드, 생성자에 적용할 수 있다. Bean 검색 할 때 우선순위는 1. byType, 2. byName 이다. 주입 받아올 Bean을 명시할 수 있다. @Autowired @Qualifier("CustService") //Type 다음 Name(변수명) @Resource Spring이 아닌 Java에서 객체에 주입..
IoC의 개념 Inversion of Control의 약자로서, 객체의 생성과 생명주기에 대한 권한이 역전되는 것을 말한다. IoC 컨테이너 객체의 생성과 생명주기를 관리하고, POJO의 생성과 초기화, 서비스, 소멸에 대한 권하을 가진다. DI의 개념 Dependency Injection의 약자로서, Bean 설정 정보를 바탕으로 객체간의 의존 관계를 연결해주는 것을 말한다. 빈 설정 방법 xml로 설정 //1. 객체마다 Bean 설정 //2. 패키지로 Bean 설저 CustService와 CustRepository를 Bean으로 등록한다. CustService와 CustRepoistory는 서로 의존 관계를 갖는다. mesung.springKeyTech 하위에 있는 모든 객체를 Bean으로 등록한다...
스프링 MVC 동작 원리 MVC 모델 : 도메인 객체 또는 DTO로 화면에 전달하거나 화면에서 전달받은 데이터를 담고 있는 객체를 말한다. //lombok을 활용하여 컴파일 시점에 자동으로 각 메소드들을 생성한다. @Getter @Setter @Builder @NoArgsConstructor @AllArgsConstructor public class Event { private String name; private LocalDateTime startDateTime; private LocalDateTime endDateTime; private int limitOfEnrollment; } 평범한 POJO 객체이다. 뷰 : 데이터를 보여주는 역할로서, 다양한 형태로 보여줄 수 있다. 이벤트 목록 이름 참가 인..
서블릿 애플리케이션 스프링 연동하기 지금까지 만든 Servlet을 활용하여 스프링이 제공하는 IoC 컨테이너와 연동해보자. 서블릿에서 스프링이 제공하는 IoC 컨테이너 활용하는 방법 애플리케이션 컨텍스트를 서블릿 컨텍스트에 등록 후 IoC 컨테이너를 활용해보자. pom.xml에 dependency 추가 스프링이 제공하는 IoC 컨테이너를 활용하기 위해선 의존성이 필요하다(spring-webmvc) org.springframework spring-webmvc 5.1.3.RELEASE 리스너 추가 우리가 만든 서블릿 애플리케이션의 생명주기에 맞추어 애플리케이션 컨텍스트(IoC 컨테이너)를 등록해주기 위해서는 스프링이 제공해주는 리스너가 필요하다. org.springframework.web.context.Co..
- Total
- Today
- Yesterday
- 점층적 생성 패턴
- 스프링부트
- 생성자
- 이펙티브자바
- effectivejava
- junit
- 정적팩터리메서드
- Effective Java
- try with resources
- ifPresent
- 빈 순환 참조
- java8
- 인프런
- JPA
- java
- springboot
- 복사 팩토리
- package-private
- 이펙티브 자바
- 빌더 패턴
- 김영한
- mustache
- @Lazy
- 자바8
- try catch finally
- 팩토리 메소드 패턴
- 연관관계
- flatMap
- Spring
- jdk버전
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |