반응형

자바 56

스프링(Spring) 빈 수동등록, 자동등록 하는법

빈을 등록하는데는 크게, 수동등록 (@Bean)과 자동등록(@Component, @Autowired)가 있다. 먼저 수동등록 하는법을 알아보겠다. 수동등록은, @Configuration주석이 있는 class 안에다 @Bean주석이 들어간 메소드를 넣으면 된다. 사용자가 직접 Bean을 넣어주는거니 스프링컨테이너의 Bean수동등록이라고 한다. 하지만, 수동등록을 하나씩 넣다보면, 몇개 실수로 누락하기도 하고, 일일이 찾아서 받아쓰기도 번거롭다. 이런 불편한점을 없애기위해 탄생한 @Component와 @Autowired을 이용한 자동 빈 등록이다. @Configuration과 @ComponentScan으로만 사용하면, 자동등록이 끝난다. 자동등록을하려면, 넣을 빈을 담아야하는데, 자동등록에서 빈을 넣기위해서..

스프링(Spring): 싱글톤(Singleton) 패턴

이번 포스팅은 디자인패턴 중 하나인 싱글톤 패턴에대해 다뤄보겠습니다. 싱글톤 패턴(Singleton Pattern)은 무엇일까? 위키피디아: 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다. 즉! 여러사용자가 매번 객체를 호출할때 매번 객체를 생성하지말고, 이미 생성된 객체 하나를 재사용 하는 것입니다. 글로 설명하는것보단 코드로 한번 봐볼까요? 우선 아주 간단한 클래스 Menu를 설정하겠습니다. 입력값으로 메뉴 이름만 받도록 설정했습니다. 우선 싱글톤 없이 객체를 생성해보겠습니다. 자장면이라는 이름이..

자주쓰이는 스프링 테스트코드 정리글

스프링으로 테스트코드를 쓸때 JUnit과 AssertJ의 Assertions 기능을 많이쓰고, Assertions에서 많이 쓰이는 기능들 위주로 글을 써보려고한다. Assertions.assertThat(??).isEqualTo(??); 이 Assertions는 org.assertj.core.api.Assertions 클래스다 실수하지말자. assertThat메소드가 여기에들어있다. ?? 안에는 타입형 객체가 들어간다. 테스트코드중 단골로 쓰는 테스트방식이다. assertThat()으로, 비교할 대상을 설정하고 isEqualTo()로 사용자가 생각하는 값을 비교한뒤 그게 맞는지 검사하는 테스트다. 예를들어, 내가 10만원 상품의 가격을 Discount메소드로 10% 할인을 적용한값 Value값을 테스트하..

스프링 컨테이너

이제 스프링의 핵심기능인 스프링 컨테이너를 생성해보자 1 ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); cs ApplicationContext인 ac는 인터페이스며 스프링 컨테이너이다. AnnotatiocConfigApplicationContext는 스프링 컨테이너의 구현체이다. 스프링컨테이너에 @Configuration이 들어있는 Appconfig 클래스를 인식시킨다. 그리고 Appconfig에 들어있는 @Bean 메소드를 인식해서 스프링 컨테이너 안에 넣어두고 필요할때 쓴다. 스프링컨테이너에 넣었다면 잘 넣어졌는지 테스트코드를 짜보고 돌려보자! 테스트코드다. 스프링에서 지원하는 기본 Bean까지 모두 보..

스프링(Spring):관심사의 분리

이전 포스팅에 다형성만으로는, OCP(개방 폐쇄의 원리), DIP(의존 주입 원리)를 지키지 못한다. 이를 지키기위해서 관심사의 분리라는 테크닉이 등장한다! 우선 왜 OCP, DIP를 지키지 못하는걸까? 코드를 봐보자, MemberRepository는 Interface고, MemoryMemberRepository는 구현 클래스다. 지금 MemberServiceImpl 클래스는 MemberRepository 인터페이스와 MemoryMemberRepository클래스 둘다 의존하고있다. 이건 DIP에 위반된다. DIP는 구현체에 의존하지말고 인터페이스에 의존해야되는 원리이다. 또한, 나중에 Memory저장소가 아닌, 다른 저장소로 변경될시에 수정할때 MemberRepository클래스를 수정해야한다. 이러면..

Spring(스프링) 이란?

스프링이 왜 만들어졌으며 스프링의 핵심은 무엇일까? 스프링이 만들어진 진짜이유는 자바의 객체 지향 프로그래밍(OOP)을 더 좋은 객체 지향 프로그래밍 으로 만들기위해서 스프링이 탄생한것이다. 웹 어플리케이션을 만들고 DB접근하는 편리한 기술 제공, 전자정부 프레임워크, 서버도 자동으로 띄어주고, 클라우드, 마이크로 서비스 등등 이런것은 스프링을 사용하며 따라오는 결과물인것이다. 객체지향 프로그래밍의 특징을 잘 살려내기위해 개발한 프레임워크가 스프링 프레임워크다. 객체 지향 프로그래밍(OOP)이 뭐길래? 객체 지향 프로그래밍의 대표적인 특징 4가지 추상화, 상속, 캡슐화,다형성이 매우 중요하다. 자바를 배운다면 꼭알아야할 특징이다. 객체지향 프로그래밍의 정의가 뭘까? . 위키피디아에서 가져온 정의를 보면,..

반응형