Spring11 Spring - @Component와 @Service, @Controller의 차이 @Component Spring에서 관리되는 객체임을 표시하기 위해 사용하는 가장 기본적인 어노테이션이다. 주로 DI를 위해 사용된다. @Controller WebMVC 코드에 사용되는 어노테이션이다. @RequestMapping 어노테이션을 해당 어노테이션 밑에서만 사용할 수 있다. @Service 비즈니스 로직이나 repository layer를 호출하는 함수에 사용된다. 하지만 @Component에 추가된 기능은 없다. @Repository Annotation based Configuration, @Repository의 작업은 플랫폼 별 예외를 잡아서 Spring의 통합 검사되지 않은 예외 중 하나로 다시 던지는 것입니다. @Service와 @Component의 기능상 차이는 없지만 관점에 더 연관.. 2022. 5. 12. Spring - @Autowired를 권장하지 않는 이유 스프링에서 의존성을 주입하는 방법은 생성자 주입, @Autowired 를 사용하는 필드 주입, 수정자 주입이 있다. 생성자 주입(Constructor Injection) 스프링 프레임워크 4.3 버전부터는 의존성 주입으로부터 클래스를 완벽하게 분리할 수 있다. 단일 생성자인 경우엔 어노테이션조차 필요 없지만 생성자가 2개 이상인 경우에는 생성자에 어노테이션을 붙여줘야 한다. 필드 주입(Field Injection) 필드에 @Autowired 어노테이션을 붙여주면 자동으로 의존성이 주입된다. 수정자 주입(Setter Injecion) 수정자를 이용한 주입 방법도 있다. 보통은 setter 메서드를 사용해서 주입한다. 생성자 주입 방법만의 장점 순환 참조를 방지할 수 있다. 테스트에 용이하다. 코드 속 나쁜.. 2022. 5. 12. Spring - RestTemplate RestTeamplate은 스프링 3부터 지원하는 HTTP 요청을 수행하기 위한 동기식 클라이언트다. 필드(Field) - logger 생성자(Constructor) - RestTemplate() 기본 세팅으로 RestTemplate 인스턴스를 만든다. - RestTemplate(ClientHttpRequestFactory requestFactroy) ClientHttpRequestFactory에 기반해서 인스턴스를 만든다. - RestTemplate(List uriVariables) - T getForObject(String url, Class responseType, Object... uriVariables) - T getForObject(String url, Class responseType) 주어.. 2022. 3. 11. @RequestParam와 @PathVariable은 무엇이 다른가? 스프링으로 프로젝트를 진행하다보면 url을 매핑할 때 PathVariable과 RequestParameter를 사용할 때가 있다. 이 두개는 무엇이 다른걸까? 주로 PathVariable은 특정 인덱스에 대한 조회, RequestParam은 특정 값으로 필터링할때 사용한다. RequestParameter는 경로 뒤에 입력 데이터를 함께 제공하는 식으로 사용한다. 사용 방법 www.url/post?post_id=3 실제 사용 (http://localhost:8080/reservation/api/displayinfos 까지가 url 이고, 뒤에 'categoryId=3'이 RequestParam이다.) http://localhost:8080/reservation/api/displayinfos?category.. 2021. 11. 5. Spring - AOP AOP란 무엇인가? AOP는 Aspect Oriented Programming(관점 지향 프로그래밍)의 약자이다. OOP를 보완해주는 역할을 합니다. Controller, Service, Repository 같은 핵심 관심 사항에 시간측정 같은 공통 관심 사항을 적용해줄 수 있다. 공통 관심 사항을 핵심 관심 사항과 별도로 작성해서 관리해주면 유지보수에 용이하다. 인프라 로직 애플리케이션의 전 영역에서 나타날 수 있음 중복코드를 만들어낼 가능성 때문에 유지보수가 힘들어짐 비지니스 로직과 함께 있으면 비즈니스 로직을 이해하기 어려워짐 Target 어떤 대상에 부가 기능을 부여할 것인가 Advice 어떤 부가 기능을 부여할 것인가? Join point 어디에 적용할 것인가? 메서드, 필드, 객체, 생성자 등.. 2021. 9. 28. Spring - 빈 등록 스프링 빈을 등록하는 방법은 두 개가 있다. 1. 컴포넌트 스캔과 자동 의존관계 설정 생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어준다. 이렇게 객체 의존관계를 외부에서 넣어주는 것을 DI (Dependency Injection), 의존성 주입이라고 한다. 아래 코드가 그 예시이다. MemberService는 MemberRepository에 의존하고 이 관계를 외부에서 주입해준다. @Service public class MemberService { private final MemberRepository memberRepository; @Autowired public MemberService(MemberRepository memberRepository) { t.. 2021. 9. 27. 이전 1 2 다음