23-07-07 TIL

more·2023년 7월 7일
0

문제

  • @Repository vs JpaRepository
    • Bean으로 등록해주는 Annotation 중에 @Controller, @Service, @Repository 등등 컨트롤러인지 서비스인지 명시해주고 등록해주는 것들이 있다고 알고 있었다.
    • 헌데 Respository를 만드는데에 있어서 extends JpaRepository를 해주고 클래스가 아닌 인터페이스로 만들어둔 부분에 있어서는 @Repository라는 별도의 어노테이션을 붙이지 않았다.
    • 왜 붙이지 않는지, JpaRepository라는 곳에 이미 붙여있는지 궁금해서 찾아보고자 한다.

시도

  • @Repository vs JpaRepository
    • Spring Data JPA는 스프링에서 JPA를 편리하게 사용할 수 있도록 지원하는 모듈이다.
    • 실제로 이렇게 사용을 한다면 구현체도 만들어서 주기 때문에 사용하기 편리하다.
    • extends JpaRepository를 하면 해당 인터페이스의 구현체인 SimpleJpaRepository에서 @Repository로 스프링 컨테이너가 관리하는 빈이 된다.
      -> 그래서 @Repository를 별도로 선언하지 않아도 되었던 것으로 보임

해결

  • JpaRepository를 상속 받으면 SimpleJpaRepository에서 @Repository로 스프링 컨테이너가 관리하는 빈이 된다. 따라서 굳이 @Repository를 붙여주지 않아도 가능하다.
    -> 더 자세하고 세세한 부분과 과정은 따로 공부를 더 해보아야겠다. 오늘은 프로젝트 끝나는 날이라 힘이 딸린다...

오늘 푼 문제

  • 백준 13305 (주유소) - Java
    • 그냥 간단하게 현재 기름 값이 기존의 기름 값보다 비싼지만 확인하면 되는 문제
import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int city = Integer.parseInt(br.readLine());

        Long[] road = new Long[city - 1];
        Long[] oil = new Long[city];

        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        for (int i = 0; i < city - 1; i++) {
            road[i] = Long.parseLong(st.nextToken());
        }

        st = new StringTokenizer(br.readLine(), " ");

        for (int i = 0; i < city; i++) {
            oil[i] = Long.parseLong(st.nextToken());
        }

        Long minCost = oil[0];

        int sum = 0;

        for (int i = 0; i < city - 1; i++) {

            if (oil[i] < minCost)   minCost = oil[i];

            sum += minCost * road[i];

        }

        bw.write(sum + "\n");

        bw.flush();
        bw.close();
        br.close();
    }
}

0개의 댓글