본문 바로가기

Spring

(9)
[Spring] @Bean, 싱글톤, ThreadLocal Spring은 Bean객체를 싱글톤으로 관리한다. (ApplicationContext) 더보기 싱글톤이란? : 객체의 인스턴스가 오직 1개만 생성되는 패턴 > 서버가 클라이언트의 요청을 받을 때마다 클래스의 인스턴스를 생성하게 되면 JVM메모리의 부하를 감당못할 수 있다. 문제) 동시성 중복 문제? : 같은 인스턴스의 필드를 여러 쓰레드가 동시에 같은 인스턴스의 필드 값을 변경하면서 발생하는 문제. > 스프링이 빈을 싱글톤으로 관리하기 때문에 발생할 수 있는 일. 조건 1. 멀티 쓰레드 환경이다. 2. 다순 '조회'가 아닌 '수정'을 하는 작업을 한다. 더보기 Thread란? : 프로세스 내에서 실제로 작업을 수행하는 주체 더보기 Multi Thread란? : 일반적으로 하나의 프로세스는 하나의 스레드를..
[Spring DB] JDBC JDBC 등장배경 > 데이터베이스를 다른 종류의 데이터베이스로 변경하면 기존에 개발하던 데이터베이스 사용 코드도 변경된 데이터베이스 코드로 변경해야한다. > 개발자가 각각의 데이터베이스마다 커넥션 연결, SQL 전달, 그리고 그 결과를 응답 받는 방법을 새로 학습해야한다. JDBC란? Java Database Connectivity 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API [기능] 1. Connection 2. Statement 3. ResultSet JDBC드라이버 > 각각의 DB벤더에서 자신의 DB에 맞도록 구현해서 라이브러리를 제공 ex) MySQL DB에 접근할 수 있는 것은 MySQL JDBC드라이버, Oracle DB에 접근할 수 있는 것은 Oracle JDBC드라이버라 한다..
[Spring] 프록시 패턴, 데코레이션 패턴 프록시패턴 > 접근제어의 목적 데코레이션패턴 > 새로운 기능 추가가 목적 프록시 패턴 ex) real에 들어오기 전에 프록시 클래스에서 null이 아니면 바로 반환하는 걸로 real로의 접근을 제어할 수 있음 데코레이션패턴 ex) real로 들어오기 전, 1개 혹은 여러 개의 프록시 클래스를 거치면서 로그를 추가하거나 real로 들어오기 전까지 기능을 추가 할 수 있음 둘의 차이점 Intent >> 의도 접근제어의 목적인지, 추가 기능의 목적인지 구분.
[SpringBoot] 컴포넌트스캔 @SpringBootApplication(scanBasePackages = "hello.proxy.app") @SpringBootApplication 어노테이션은 컴포넌트 스캔을 하는 기능이 있다. 위치는 해당 어노테이션이 있는 파일의 위치와 그 하위 파일들이다. 그리고 @RequestMapping은 컴포넌트 스캔의 대상이 되지 않는다.
[Spring] Spring MVC 프로젝트 XML로 초기 세팅하기 프로젝트 생성 및 초기 세팅 Dyamic Web Project를 생성해줍니다. 프로젝트 마우스 우클릭 -> Configure -> Convert to Maven Project 하여 Maven Project로 변경합니다. 이클립스에 톰캣을 추가합니다. (생략) 프로젝트 마우스 우클릭 -> Properties -> Project Facets에서 Dynamic Web Module을 3.0으로 변경하고, Rumtimes에서 이전에 추가한 톰캣을 선택하여 적용합니다. 그리고 톰캣을 실행 할 JDK버전에 맞추어 프로젝트 Java 버전도 변경해 줍니다. pom.xml에 라이브러리를 추가해주어야 합니다. 기본적으로 Maven Repository 사이트를 통해 JSP, JSTL, Spring MVC, Servlet을 추..
[Spring] Missing artifact javax.servlet.jsp.jstl:jstl:jar:1.2 오류 나의 경우에 Maven Repository에서 jstl을 검색 후 pom.xml에 복사 붙여넣기를 했는데 오류가 발생하였다. 해결방법 artifactId를 jstl에서 jstl-api로 변경해 줍니다.
@PostConstruct, @PreDestroy @PostConstruct 초기화할 메소드에 사용된다. 어노테이션을 설정해놓은 메소드는 WAS가 띄어질 때 실행된다. @PreDestroy 컨테이너에서 객체를 제거하기 전에 실행된다.
Lombok 어노테이션 - Lombok 이란? Getter, Setter등 불필요하게 반복적으로 만드는 코드를 어노테이션을 통해 줄여 주는 역할. @Data - @ToString - @EqualAndHashCode - @Getter - @Setter - @RequiredArgsConstructor -- 생성자를 생성해주는 어노테이션 @NoArgsConstructor : 파라미터 값이 없는 빈 생성자 @AllArgsConstructor : 모든 파라미터를 받는 생성자 @RequiredArgsConstructor : final이나 @NonNull이 붙은 변수들을 가진 생성자를 생성