Skip to content

Commit

Permalink
Use Lombok and add choosing from many beans
Browse files Browse the repository at this point in the history
  • Loading branch information
KIMB0B committed Mar 12, 2024
1 parent a131363 commit 8010e55
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 51 deletions.
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

Expand Down
29 changes: 5 additions & 24 deletions src/main/java/com/naver/shopping/member/Member.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package com.naver.shopping.member;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Member {
private Long id;
private String name;
Expand All @@ -10,28 +15,4 @@ public Member(Long id, String name, Grade grade) {
this.name = name;
this.grade = grade;
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Grade getGrade() {
return grade;
}

public void setGrade(Grade grade) {
this.grade = grade;
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
package com.naver.shopping.member;

import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
public class MemberServiceImpl implements MemberService {
private final MemberRepository memberRepository;

@Autowired
public MemberServiceImpl(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}

@Override
public void join(Member member) {
memberRepository.save(member);
Expand Down
20 changes: 4 additions & 16 deletions src/main/java/com/naver/shopping/order/Order.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
package com.naver.shopping.order;

import lombok.Getter;

@Getter
public class Order {
private Long memberId;
private String itemName;
Expand Down Expand Up @@ -26,20 +30,4 @@ public String toString() {
", discountPrice=" + discountPrice +
'}';
}

public Long getMemberId() {
return memberId;
}

public String getItemName() {
return itemName;
}

public int getItemPrice() {
return itemPrice;
}

public int getDiscountPrice() {
return discountPrice;
}
}
8 changes: 2 additions & 6 deletions src/main/java/com/naver/shopping/order/OrderServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,16 @@
import com.naver.shopping.member.Member;
import com.naver.shopping.member.MemberRepository;
import com.naver.shopping.discount.DiscountPolicy;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;

@Autowired
public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}

@Override
public Order createOrder(Long memberId, String itemName, int itemPrice) {
Member member = memberRepository.findById(memberId);
Expand Down
37 changes: 37 additions & 0 deletions src/test/java/com/naver/shopping/autoScan/autoScanTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.stereotype.Component;

import java.util.Map;

public class autoScanTest {

AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class);
Expand Down Expand Up @@ -47,6 +49,22 @@ void getPrimaryDiscountPolicy() {

}

@Test
@DisplayName("여러 할인 정책 서비스중 선택")
void getAllDiscountPolicy() {
Member testMember = new Member(1L, "tester", Grade.VIP);
ac.getBean(MemberService.class).join(testMember);

Order fixServiceOrder = ac.getBean(OrderService3.class).createOrder(1L, "아이템1", 20000, "fixDiscountPolicy");
Order rateServiceOrder = ac.getBean(OrderService3.class).createOrder(1L, "아이템1", 20000, "rateDiscountPolicy");

System.out.println("fixServiceOrder = " + fixServiceOrder);
System.out.println("rateServiceOrder = " + rateServiceOrder);

Assertions.assertThat(fixServiceOrder.getDiscountPrice()).isEqualTo(1000);
Assertions.assertThat(rateServiceOrder.getDiscountPrice()).isEqualTo(2000);
}

@Component
static class OrderService1 implements OrderService{
private MemberRepository memberRepository;
Expand Down Expand Up @@ -84,4 +102,23 @@ public Order createOrder(Long memberId, String itemName, int itemPrice) {
return new Order(memberId, itemName, itemPrice, discountPrice);
}
}

@Component
static class OrderService3{
private MemberRepository memberRepository;
private Map<String, DiscountPolicy> discountPolicyMap;

@Autowired
public OrderService3(MemberRepository memberRepository, Map<String, DiscountPolicy> discountPolicyMap) {
this.memberRepository = memberRepository;
this.discountPolicyMap = discountPolicyMap;
}

public Order createOrder(Long memberId, String itemName, int itemPrice, String policyName) {
Member member = memberRepository.findById(memberId);
DiscountPolicy discountPolicy = discountPolicyMap.get(policyName);
int discountPrice = discountPolicy.discount(member, itemPrice);
return new Order(memberId, itemName, itemPrice, discountPrice);
}
}
}

0 comments on commit 8010e55

Please sign in to comment.