전체 글 48

[Spring] 스프링 입문 - 컴포넌트 스캔과 자동 의존관계 설정

회원 컨트롤러가 회원 서비스, 리포지토리를 사용할 수 있게 의존관계를 준비한다. @Controller 사용!!private final MemberService memberService = new MemberService();DI (Dependency Injection), 의존성 주입: 객체 의존관계를 외부에서 넣어주는 것만약 여러 컨트롤러를 사용할 때, 매번 new MemberService로 불러올 필요가 없다 !!@Controllerpublic class MemberController { private final MemberService memberService; @Autowired public MemberController(MemberService memberService) { ..

개발/Spring 2024.11.07

[Spring] 스프링 입문 - 회원 서비스 테스트

기존에 만들어놨던 MemberService 클래스에서 단축키 command + shift + T 입력 후 create new test 선택위와 같이 선택 한 후 완료를 하면 test 아래에 MemberServiceTest파일이 생성 된다. 테스는 메서드를 한글로 입력해도 상관 없다 !! for 직관성 회원가입 회원 가입을 하려면 member 먼저 만들어야한다.give when then 패턴: 주석으로 give, when, then을 입력한 후, 코드를 짜면 훨씬 수월하게 짤 수 있다.@Testvoid 회원가입() { //given Member member = new Member(); member.setName("hello"); //when Long saveId = memberS..

개발/Spring 2024.11.07

[Spring] 스프링 입문 - 회원 서비스 개발

Service: 서비스는 비즈니스 처리를 하는 롤 (네이밍도 이에 맞게 해야 함) MemberService 클래스 생성1. 회원 가입public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); /** * 회원 가입 */ public Long join(Member member){ Optional result = memberRepository.findByName(member.getName()); result.ifPresent(m -> { throw new IllegalStateExcept..

개발/Spring 2024.11.07

[Spring] 스프링 입문 - (회원 관리 예제) 회원 리포지토리 테스트 케이스

테스트 케이스란 ?개발한 기능을 실행해서 테스트 할 때 자바와 main 메서드를 통해서 실행 or 웹 애플리케이션의 컨트롤러를 통해서 해당 기능을 실행준비하고 실행하는데 오래 걸리고, 실행하기 어렵고 여러 테스트를 한번에 실행하기 어렵다는 단점을 자바의 JUnit이라는 프레임워크로 테스트를 실행하여 해결 가능아래와 같이 해당 위치에 repository 패키지를 만들어준다.이때 class 이름은 test하려는 repository 이름 뒤에 "Test"를 붙여준다. 테스트 케이스 만들기@Test 어노테이션을 사용하여 검증 가능!class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository()..

개발/Spring 2024.11.07

[Spring] 스프링 입문 - (회원 관리 예제) 회원 도메인과 리포지토리

비즈니스 요구사항 정리데이터 : 회원 ID, 이름기능 : 회원 등록, 조회아직 데이터 저장소가 선정되지 않음 (가상의 시나리오)컨트롤러 : 웹 MVC의 컨트롤러 역할서비스 : 핵심 비즈니스 로직 구현리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리도메인 : 비즈니스 도메인 객체, ex)회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계가벼운 메모리 기반의 데이터 저장소 사용회원 도메인과 리포지토리 만들기1. 회원 객체hello.hellospring에서 domain패키지 생성 후 Member객체 만들기package hello.hellospring.domain;public class M..

개발/Spring 2024.11.05

[Spring] 스프링 입문 - MVC, API

정적 컨텐츠의 반대 = API MVC(Model, View, Controller)관심사 분리 ! View → about 화면Controller → about  비즈니스 로직, 내부 로직 처리Model → 관련된 로직을 화면에 넘겨주는 방식 @GetMapping("hello") public String hello(Model model) { model.addAttribute("data", "hello!!"); return "hello"; }model에 담아서 보내면 View에서 렌더링 할 때 사용실제 서버에서 돌면 hello! empty값이 th:text 값으로 바뀐다API- 문자를 내놓을 때http에서 body부분에 데이터에 return값을 직접 넣어주겠다는 뜻@Cont..

개발/Spring 2024.11.05

[이코테] 개미 전사

📄 문제 설명개미전사는 부족한 식량을 충당하고자 메뚜기 마을의 식량창고를 몰래 공격하려고 한다.메뚜기 마을에는 여러 개의 식량창고가 있는데 식량창고는 일직선으로 이어져 있다. 각 식량창고에는 정해진 수의 식량을 저장하고 있으며 개미 전사는 식량창고를 선택적으로 약탈하여 식량을 빼앗을 예정이다.이때 메뚜기 정찰병들은 일직선상에 존재하는 식량창고 중에서 서로 인접한 식량창고가 공격받으면 바로 알아챌 수 있다.따라서 개미 전사가 정찰병에게 들키지 않고 식량창고를 약탈하기 위해서는 최소한 한 칸 이상 떨어진 식량창고를 약탈해야 한다. 예를 들어 식량창고 4개가 다음과 같이 존재한다고 가정하자.{1, 3, 1, 5}이때 개미 전사는 두 번째 식량창고와 네 번째 식량창고를 선택했을 때 최댓값인 총 8개의 식량을 ..

Algorithm 2024.10.22

[이코테] 문자열 재정렬

1. 문제알파벳 대문자와 숫자(0~9)로만 구성된 문자열이 입력으로 주어집니다. 이때 모든 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력합니다.예를 들어 K1KA5CB7이라는 값이 들어오면 ABCKK13을 출력합니다.2. 문제 해결 아이디어문자열 입력됐을 때 문자 하나씩 확인숫자인 경우, 따로 합계를 계산알파벳의 경우, 별도의 리스트에 저장리스트에 저장된 알파벳을 정렬해 출력하고, 합계를 뒤에 붙여 출력하기✍ 입력K1KA5CB7💻 출력문자열 정렬 : ABCKK모든 숫자 더하기 : 1 + 5 + 7 = 13ABCKK133. 나의 코드우선 코드를 작성하기 전에 문자열의 구성이 알파벳인지 한글인지 확인을 해야한다.문자열의 구성이 알파벳 or 한글인지 확인하는..

Algorithm 2024.10.22