[Spring] 의존관계 주입 방법
·
Back-End/Spring
의존관계 주입방법 4가지 생성자 주입 Setter 주입(수정자 주입) 필드 주입 메서드 주입 대부분의 경우 생성자 주입을 사용하며, 특별한 경우에 setter 주입을 사용한다. 1. 생성자 주입 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; //final을 선언해서 값이 없거나, 값이 변하면 오류 @Autowired // 생성자가 1개이므로 @Autowired생략해도 자동 주입됨 public OrderServiceImpl(MemberRepository memberRe..
[Spring]컴포넌트 스캔, 컴포넌트 스캔 필터 by 인프런 김영한님
·
Back-End/Spring
지금까지 스프링 빈을 등록할 때 구성파일에 @Bean을 사용했는데, 이는 관리할 빈이 많아지면 관리하가기 힘들어 진다. @Component와 Component Scan을 이용하면 @Bean을 안쓰고 빈 등록이 가능하고, 빈 설정파일을 만들지 않아도 된다. 빈 설정 파일이 없는데 의존관계를 주입하는 방법? → @Autowired를 사용해 자동 의존관계 주입을 한다. 컴포넌트 스캔 @Component 를 가진 모든 대상을 가져와서 빈에 등록하기 위해 찾는 과정 → 빈 설정파일 + @Bean을 통해 빈을 하나하나 지정할 필요가 없음 @Component애노테이션이 붙은 클래스를 스캔해서 자동 스프링 빈으로 등록해준다. @Component public class MemberServiceImpl implements..
[Spring] BeanFactory와 ApplicationContext, 자바코드와 XML설정, 스프링 빈 설정 메타 정보 by 인프런 김영한님
·
Back-End/Spring
BeamFactory와 ApplicationContext, 자바코드와 XML설정, 스프링 빈 설정 메타 정보 by 인프런 김영한님 BeanFactory 스프링 컨테이너의 최상위 인터페이스 스프링 빈을 관리하고 조회하는 역할을 담당 getBean() 을 제공한다. ApplicationContext BeanFactory 기능을 모두 상속받아서 제공한다. 빈을 관리하고 검색하는 기능을 BeanFactory가 제공 ApplicationContext가 제공하는 부가기능 메시지소스를 활용한 국제화 기능 예를 들어서 한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로 출력 환경 변수 로컬, 개발, 운영등을 구분해서 처리 애플리케이션 이벤트 이벤트를 발행하고 구독하는 모델을 편리하게 지원 편리한 리소스 조회 파일,..
스프링 핵심 원리 - 싱글톤 컨테이너, @Configuration by 인프런 김영한님
·
Back-End/Spring
스프링 핵심 원리 - 싱글톤 컨테이너, @Configuration 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막는다. package hello.core.singleton; public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 인스터스가 필요하면 이 static 메서드를 통해서만 조회하도록 //허용한다 public static SingletonService get..
내장 객체 영역
·
Front-End/JSP
내장 객체 영역 1. 내장 객체의 영역이란? 각 객체가 저장되는 메모리의 유효기간 → 웹 애플리케이션은 페이지 단위로 구성이 된다. 그래서 다른 페이지에서 선언한 변수에 접근하기 위해 접근할 수 있는 페이지 범위를 지정하는 것이 영역이다. 2. 내장 객체의 영역 종류 page 영역 : 하나의 jsp 페이지를 처리할 때 사용되는 영역 → 페이지를 벗어나면 소멸됨 request 영역 : 하나의 HTTP 요청을 처리할 때 사용되는 영역 → 호출된 페이지와 포워드(요청전달)된 페이지까지 공유됨 session 영역 : 하나의 웹 브라우저에 관련된 영역 → 클라이언트가 접속한 후, 웹 브라우저가 종료 될 때까지 공유됨 application 영역 : 하나의 웹 어플리케이션과 관련된 영역 → 서버가 꺼질 때 까지 공유..
[JSP] Include 액션태그
·
Front-End/JSP
INCLUDE (jsp:include, jsp:forward) include 액션태그 : include태그가 위치한 부분에 지정한 페이지를 포함한다. include 액션태그를 사용하면 다수의 웹페이지에서 중복되는 코드들을 줄일 수 있다. include 태그 사이에 공통되는 코드들을 작성하고 별도의 코드들만 include에 해당하는 페이지에서 작성하면 되기 때문이다. jsp:include 액션태그 사용법 예시) 총방문자수 : XXX 현재접속자수:XXX 로그인 환영합니다. 한 페이지에 4개의 페이지를 동시에 불러와서 표현하는 모습이다. 블로그나 카페 등에서 이런식으로 구성된 모습을 볼 수가 있다. jsp:forward 액션태그 사용법 jsp:forward 태그를 이용하면 바로 다른 페이지로 이동한다. 이를 ..
AJAX란? JQuery를 이용한 AJAX사용법
·
Front-End/JSP
AJAX (Asynchronous Javascript And XML) 란 무엇인가? 자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신기능 클라이언트와 서버간에 XML 데이터를 주고받는 기술이다 비동기 방식이란? 웹페이지를 리로드 하지 않고 데이터를 불러오는 방식 웹페이지에서 기타 코드들을 요청할 경우, 웹페이지를 리로드 하면서 불필요한 리소스가 낭비가 되는데, 비동기 방식을 이용하면 필요한 데이터만 불러오면서 리소스 낭비를 줄일 수 있다. AJAX는 XMLHttpRequest객체를 통해 서버에 request한다. JSON이나 XML형태로 필요한 데이터만 받아 갱신하기 때문에 그만큼의 자원과 시간을 아낄 수 있다. AJAX의 장점 웹페이지 속도향상 서버의 처리가 완료될 ..
스프링 핵심 원리 기본편(5) - 스프링 컨테이너와 스프링 빈 조회 by 인프런 김영한
·
Back-End/Spring
스프링 컨테이너 생성 //스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext를 스프링 컨테이너라 한다. ApplicationContext는 인터페이스 이다. AnnotationConfigApplicationContext는 ApplicationContext는 인터페이스의 구현체이다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 스프링 컨테이너의 생성 과정 스프링 컨테이너 생성 스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야 한다. new AnnotationConfi..
스프링 핵심 원리 기본편(4) - AppConfig 리팩터링, 새로운 구조와 할인 정책 적용, IoC, DI, 컨테이너, 스프링으로 전환하기 by 인프런 김영한
·
Back-End/Spring
스프링 핵심 원리 기본편(4) - AppConfig 리팩터링, 새로운 구조와 할인 정책 적용, IoC, DI, 컨테이너, 스프링으로 전환하기 1. AppConfig 리팩터링 중복을 제거하고, 역할이 따른 구현이 잘 보이도록 리팩터링 package hello.core; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.member.MemberRepository; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import hello.core.member.MemoryM..
스프링 핵심 원리 기본편(3) - 객체 지향 원리 적용, AppConfig by 인프런 김영한
·
Back-End/Spring
스프링 핵심 원리 기본편(3) - 객체 지향 원리 적용 1. 새로운 할인 정책 개발 주문한 금액의 %를 할인해주는 새로운 정률 할인 정책을 추가하자. 1-1 RateDiscountPolicy 코드 추가 package hello.core.discount; import hello.core.member.Grade; import hello.core.member.Member; public class RateDiscountPolicy implements DiscountPolicy{ private int discountPercent = 10; @Override public int discount(Member mebmer, int price) { if(mebmer.getGrade() == Grade.VIP){ retu..