전체 글 59

@Data,@Getter,@Setter 롬북(LOMBOK)의 기능

롬북을 사용하면 코드를 간편하고 깔끔하게 정리할 수 있다. 사용하기 전과 후를 비교해보자. public class Member { private Long id; private String name; private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public Member(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } public String getN..

Spring 2023.02.19

의존성주입(DI) 4가지 방법 및 생성자주입을 써야하는 이유

의존관계 주입은 크게 4가지 방법이 있다. 1.생성자 주입 ★★★ 2.수정자 주입 (setter주입) 3.필드 주입 4.일반 메서드 주입 1.생성자 주입 ★★★ 이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법이다. 지금까지 우리가 진행했던 방법이 바로 생성자 주입이다. 특징 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용 단, 생성자 주입시 그 빈을 주입받는 생성자가 단 1개뿐이라면 @Autowired를 생략할 수 있다. 동일한 타입의 빈이 여러개 등록되어있으면 이름이 일치하는 빈을 주입한다. @Service public class OrderServiceImpl implements OrderService { private final MemberRepository..

Spring 2023.02.19

2가지 싱글톤 bean등록 방법 @Configuration와 @Component

방법1. 수동 빈 등록방법 @Configuration은 스프링 컨테이너에 bean객체를 싱글톤방식으로 등록해준다. 기본으로 싱글톤 방식을 제공하고 필요에 따라 설정할 수 있다. @Configuration @Bean을 사용하여 빈을 스프링 컨테이너에 등록하였다. @Configuration public class BeanCreate { @Bean public String bean1(){ return new beanImpl().bean1(); } @Bean public String bean2(){ return new beanImpl().bean1(); } @Bean public String bean3(){ return new beanImpl().bean1(); } @Bean public String bean4..

Spring 2023.02.12

@bean

AplicationContext는 즉 스프링 컨테이너라고 생각하면 된다 스프링 컨테이너에 @Configuration @Bean의 어노테이션을 사용하여 bean을 등록하였고 getBean메소드를 사용하여 등록된 bean을 조회하였다. @Configuration public class BeanCreate { @Bean public String bean1(){ return new beanImpl().bean1(); } @Bean public String bean2(){ return new beanImpl().bean2(); } @Bean public String bean3(){ return new beanImpl().bean3(); } @Bean public String bean4(){ return new b..

Spring 2023.02.05

좋은 객체 지향 설계의 5가지 원칙 (SOLID)

1.SRP: 단일 책임 원칙 (single responsivility principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 애매모호하다(문맥과 상황에 따라 다르다, 클 수도 있고 작을 수 있다,) 하나의 책임의 중요한 판단 기준은 변경에 있다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것이다. ex) 메서드 하나를 수정했는데 의존하고 있는 여러 클래스 까지 같이 수정이 필요하면 SRP를 따르지 않은 것이다. 2.OCP: 개방-폐쇄 원칙 (Open/closed principle)★★★ 소프트웨어 요소는 확장에는 열러 있으나 변경에는 닫혀 있어야한다. 다형성을 활용하자. 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현한다 역활과 구현을..

CleanCode 2023.02.05

깨끗한 코드란?

1. 의존성을 최대한 줄여라. -의존성이 너무 많이 의존관계를 가지고 있으면 유지보수 하기에 힘들다. -나는 화시에서 이러한 경험을 한 적이 있다. 기존 서비스에서 기능 한가지를 추가해야 하는 일이 생겼다. -유저 리스트를 불러오는 함수를 조금 수정하여 재사용 하려고 하였지만 의존관계가 너무 많아 조금 수정하게 되면 -다른 코드들도 수정하여야 하는 상황이 발생 하였던 경험이 있어 재사용하지 못하고 다시 만들었던 기억난다. 2. 나쁜코드는 나쁜코드를 유혹한다. -판매 내역 엑셀 다운로드 기능에 셀을 추가해달라는 클라이언트에 요청이 있어 -엑셀 다운로드 코드를 봤는데 직관적이지 않고 너무 불친절했던 코드였다 -내가 코드 몇개를 직관적이고 의도가 분명하게 하여 추가한다고 하더라도 -기존에 있던 코드들 때문에 ..

CleanCode 2022.09.14

[JAVA]영화예매 키오스크

프로젝트명 : 영화예매 키오스크 제작기간: 2021-07-28 ~ 2021-08-11 참여인원: 4명 언어: JAVA 8 (jdk 1.8) DataBase:메모리를 이용하여 구성 Tool: Eclipse GitHub: https://github.com/HSBODo/java_kiosk GitHub - HSBODo/java_kiosk Contribute to HSBODo/java_kiosk development by creating an account on GitHub. github.com 프로젝트 개요 Java라는 언어를 배우기 시작하며 처음 진행했던 팀프로젝트입니다. 프로젝트의 목표는 Java언어와 더욱 친숙해지기 위해 학습의 목적과 처음으로 팀 단위의 프로젝트를 진행함에 협업은 어떻게 해야하는지 커뮤니..

프로젝트 2021.12.20

코딩 폰트

코딩 전용 폰트 코딩 전용 폰트는 중요한 요소중 하나이다 기본 폰트를 사용하여 개발해도 문제는 없으나 나중에 코드의 길이가 길어지고 복잡해지면 문자를 구별하기가 어렵다. 이와 같이 0 O o I l i L(나눔고딕) 여기에 있는 문자는 모두 다른 문자이다 하지만 구별하기가 어렵고 직관적이지 않다. 위와 같이 코딩 전용 폰트(나눔고딕코딩)를 사용하면 0(숫자)O(영어) l(영어 L) I(영어i)를 더욱 직관적이게 표현하기 때문에 구별하기가 쉽다. 폰트는 구매하여 사용하여야 하지만 폰트의 가격은 코딩을 배우는 입문자에게는 부담이 될 수 있다. 그렇기 때문에 네이버에서 재공하는 무료 코딩폰트를 다운받아 사용하자 1.나눔고딕코딩 https://github.com/naver/nanumfont naver/nanum..

Java/세팅 2021.07.11