TIL/Java | Spring Boot32 [Java] 스터디 2주차_객체지향프로그래밍2 (1) - 상속, 오버라이딩, 제어자, 다형성 1. 상속 1.1 상속의 정의와 장점 상속 : 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 상속의 장점 : 적은 양의 코드로 새로운 클래스 작성이 용이 코드를 공통적으로 관리 -> 추가 및 변경이 매우 용이 상속하는 방법 class Child extends Parent { ... } Parent 클래스 (상속해주는 클래스) = 조상 클래스 (혹은 부모 클래스, 상위 클래스, 기반 클래스) Child 클래스 (상속 받는 클래스) = 자손 클래스 (혹은 자식 클래스, 하위 클래스, 파생된 클래스) 위의 예시를 상속 계층도로 그리면 다음과 같다. 클래스는 타원으로, 클라스 간의 상속 관계는 화살표로 나타낸다. 자손클래스는 조상 클래스의 모든 멤버를 상속받기 때문에 Child 클래스는 Parent 클.. 2022. 5. 1. [Spring boot] Jenkins를 이용한 spring boot 자동 배포 CI 프로젝트를 진행하면 보통 백엔드 쪽에서 완성되지 않더라도 서버를 우선 배포해야 클라이언트 측에서 쉽게 테스트 해보면서 개발할 수 있다. 지금까지 spring boot 프로젝트는 로컬에서 빌드한 jar 파일을 직접 업로드하고 실행하는 방식으로 배포해왔다. 깃에 올린 코드를 클라우드 서버(ec2나 gcp vm)에서 풀 받아서 서버 내에서 빌드를 하는 방법도 있었지만, 무료로 제공하는 인스턴스의 성능은.. 프로젝트가 조금만 무거워져도 빌드하기를 무거워했다. GCP에서 직접 빌드하는 게 로컬에서 빌드하고 업로드하는 것보다 시간이 오래 걸리게 되자 귀찮더라도 이런 방식을 취하게 되었다. 졸업 프로젝트에서도 그렇게 진행하자니 정말 많이 귀찮기도 했고, 언젠가 공부하려고 했던 CI라면 지금 하자 라는 마음에 jenk.. 2022. 4. 29. [Java] 스터디 1주차_객체지향프로그래밍1 1. 객체 지향 언어객체 지향 언어의 특징은 다음과 같다. - 기존의 프로그래밍 언어와 크게 다르지 않으면서 몇 가지 규칙을 추가한 것 뿐이다. - 코드의 재사용성이 높다. 새로운 코드를 작성할 때 중복되는 것은 기존의 코드를 이용해서 쉽게 작성할 수 있다. - 코드의 관리가 쉬워진다. 코드 간의 관계를 맺어줌으로써 보다 적은 노력으로 코드 변경이 가능하다 - 신뢰성이 높은 프로그램의 개발을 가능하게 한다. 제어자(public, protected, default, private, static 등)와 메서드를 이용해서 데이터를 보호하고 코드의 중복을 제거하여 코드의 불일치로 인한 오류를 방지할 수 있다. 2. 클래스와 객체 2.1 클래스와 객체의 정의와 용도 클래스의 정의 : 클래스는 객체를 정의해 둔 것.. 2022. 4. 10. [Spring Boot] 영속성 컨텍스트 스프링부트를 처음 접했을 때, 영속성 컨텍스트라는 말을 들으면서 진짜 알 듯 말 듯 하다 싶은 생각을 했다. 이런 개념들은 보통 설명을 들을 때보다 프로젝트를 하면서 '아 이게 이런 뜻이구나!' 하는 깨달음을 얻는 경우가 많은데, 이번에도 프로젝트를 통해 영속성 컨텍스트가 이런 느낌이구나 배울 수 있었다. 영속성 컨텍스트는 엔티티를 조회하고 난 후에 그 값을 엔티티 매니저가 들고 있는 것이다. 그러니까 DB에 쿼리를 보내서 조회한 다음에 까먹지 않고 기억해 두는 것이라고 생각하면 된다. 따라서 엔티티 매니저가 이 데이터를 기억하고 있으니까 같은 것을 조회할 때, 쿼리를 다시 보내지 않고 그 값을 확인해 볼 수 있다. em.persist(user); 즉, 이런 코드가 repository에 존재한다고 치면,.. 2022. 2. 27. [Spring Boot] IoC, DI, 그리고 컨테이너 0. 제어의 역전 IoC (Inversion of Control) 컨테이너나 AppConfig처럼 Application의 설정 정보를 담은 클래스가 없으면 클라이언트 구현 객체(여기서는 서비스)가 스스로 필요한 서버 구현 객체를 생성하고 연결하고 실행해야 했다. '''OrderServiceImpl.java''' public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository = new MemoryMemberRepository(); //private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final .. 2022. 1. 21. [Spring Boot] AOP 0. AOP가 필요한 상황 만약 모든 메소드의 호출 시간을 알고 싶으면 어떻게 해야 할까? MemberService에 정의된 각각의 메소드의 호출 시간을 정확히 알고 싶어졌다. 즉, 정확히 회원 가입과 회원 조회에 걸리는 시간을 찍어보고 싶은 것이다. AOP를 모르는 상황에서 이를 해결하기 위해서는 각 메소드마다 정의된 것을 조금씩 바꿔줘야 한다. 아래는 회원가입 메소드에 호출 시간을 계산하는 기능을 추가한 것이다. public class MemberService { /** * 회원가입 */ public Long join(Member member) { long start = System.currentTimeMillis(); try { validateDuplicateMember(member); //중복 회.. 2022. 1. 20. 이전 1 2 3 4 5 6 다음