본문 바로가기
반응형

전체 글131

[Spring 입문] AOP 개념과 간단한 예제 - 메서드 시간측정 AOP 란? AOP(Aspect Oriented Programming)는 관점지향적 프로그래밍의 약자로 스프링 기술의 핵심이 되는 개념입니다. 관점 지향은 어떤 로직(ex. 한 기능의 총 걸린 시간 측정하기)을 기준으로 각각 모듈화 하겠다는 것입니다. 만약 모든 기능의 시간(회원 가입시간, 조회 시간)을 측정해서 어디부분이 성능 저하를 일으키는지 구하고 싶으면 모든 메서드에 아래와 같은 로직을 적용 시켜줘야 합니다. public ? 측정하려는_메서드(?){ Long start = System.currentTimeMillis(); try { // 메서드의 본래 내용 } finally { Long end = System.currentTimeMillis(); Long timems = end - start; S.. 2023. 1. 24.
[Spring 입문] 스프링부트 JPA를 이용해서 MySQL 연결하기 (AWS이용) 연동 이전 포스트에 맞춰 실습하겠습니다! (VSCode on Gitpod.io WEB IDE) https://konkukcodekat.tistory.com/entry/Spring-%EC%9E%85%EB%AC%B8-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0%EC%99%80-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%9D%98%EC%A1%B4%EA%B4%80%EA%B3%84%EC%A3%BC%EC%9E%85-Dependency-Injection-%EC%8B%A4%EC%8A%B5 [Spring 입문] 계층 구조와 클래스 의존관계/주입 (Dependency Injection) 실습 입문자의 비즈니스 실습 요구 사항 정리 데이터 : 회원 ID , 이름 기능 : 회원 등록, 조회 아.. 2023. 1. 21.
[Spring 입문] 스프링부트와 MySQL연결하기 - JDBC Template (AWS이용) 이전 포스트에 맞춰 실습하겠습니다! (VSCode on Gitpod.io WEB IDE) https://konkukcodekat.tistory.com/entry/Spring-%EC%9E%85%EB%AC%B8-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0%EC%99%80-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%9D%98%EC%A1%B4%EA%B4%80%EA%B3%84%EC%A3%BC%EC%9E%85-Dependency-Injection-%EC%8B%A4%EC%8A%B5 [Spring 입문] 계층 구조와 클래스 의존관계/주입 (Dependency Injection) 실습 입문자의 비즈니스 실습 요구 사항 정리 데이터 : 회원 ID , 이름 기능 : 회원 등록, 조회 아.. 2023. 1. 21.
[Spring 입문] 스프링 빈(Bean)과 의존관계 설정(Dependency Injection) 스프링 빈 (Spring Bean) 스프링 빈이란 스프링 컨테이너에서 관리되는 자바 객체를 의미합니다. 저번에 만든 서비스와 레포지토리를 스프링이 알아볼수 있게 빈으로 등록할 수 있습니다 스프링 컨테이너 스프링 컨테이너는 스프링 빈의 생명 주기를 관리하고, 스프링 빈들에게 추가적인 기능을 제공하고, DI(Dependency Injection 의존관계 주입)와 IoC원리가 스프링 컨테이너에 적용됩니다. 저번 포스트에서는 new 연산자, 인터페이스 호출 등등으로 의존성 주입하고 객체를 생성했었습니다. 스프링 컨터이너를 사용하면 스프링이 알아서 다 관리해줍니다. 스프링 빈 등록 방식 스프링 등록 방식에는 총 두가지 방법이 있고, 두가지 방법 다 중요합니다! 편리한건 컴포넌트 스캔이지만, Configuratio.. 2023. 1. 20.
[Spring 입문] 자바 JUnit 프레임워크를 이용해서 테스트 케이스 작성 스프링 테스트 하기 개발한 기능을 실행해서 테스트 할 때 자바의 main 메서드를 통해서 서버를 직접 실행하거나, 웹 애플리케이션의 컨트롤러를 통해서 해당 기능을 실행해서 테스트 할 수 있습니다. 이러한 방법은 준비하고 실행하는데 오래 걸리고, 반복 실행하기 어렵고 여러 테스트를 한번에 실행하기 어렵다는 단점이 있습니다다. 자바는 JUnit이라는 프레임워크로 테스트를 실행해서 이러한 문제를 해결합니다. 대규모 협업 프로젝트 할땐 테스트 케이스 없이 프로젝트 진행이 아예 불가하고, 로버트 마틴의 '클린 코트'책에 따르면 개발코드와 테스트 코드는 1:1 로 투자하는 게 맞을 정도로 엄청 중요하다고 했습니다. JUnit 자바 단위테스트란? Java에서 독립된 단위테스트 (Unit test)를 지원해주는 프레임.. 2023. 1. 15.
[Spring 입문] 계층 구조와 클래스 의존관계/주입 (Dependency Injection) 실습 입문자의 비즈니스 실습 요구 사항 정리 데이터 : 회원 ID , 이름 기능 : 회원 등록, 조회 아직 데이터저장소가 없다고 가정하고, 자바내부 자료구조를 이용해서 모의로 실습 해볼 것입니다. 서비스, 리포지토리와 , 도메인관계 웹앱의 구조는 보통 위와 같이 분류가 됩니다. 컨트롤러 : 웹MVC의 컨트롤러 역할로 받는 라우터 마다 나눠서 정의 합니다. 서비스 : 핵심 기능의 로직을 구현합니다. (컨트롤러에서 서비스의 함수를 호출하는 방식) 도메인 : '흔히 아는 객체'. 회원,주문,쿠폰 등등의 객체를 클래스로 정의합니다. 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장, 조회, 관리 등등을 합니다. 클래스 의존관계/주입 (Dependency Injection) 어떤 클래스가 다른 클래스에 접.. 2023. 1. 15.
[Spring Boot 입문] MVC패턴과 템플릿엔진의 동작과 구현 MVC 패턴 (Model-View-Controller) MVC 는 Model, View, Controller의 약자 입니다. 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴입니다. 사실 스프링은 아래와 같이 구조가 단순하지 않고 복잡하지만, 아직 데이터베이스도 다루기 전이고, 입문이기 때문에 이렇게 간소하게 표현 하겠습니다. 위의 그림처럼 사용자가 Controller를 조작하면 컨트롤러에서는 model을 통해서 데이터를 가져오고 그 정보를 바탕으로 표현을 담당하는 View를 제어해서 사용자에게 전달하게 됩니다. 라우터로 GET, POST 요청등을 받을때 어떤 동작을 적용시킬지는 컨트롤러라고 지정할 자바파일에다가 작성을 할 것이고, 그 자바파일에서는 모델에다가 데이터를.. 2023. 1. 14.
스프링부트 (Spring Boot) VSCode에서 프로젝트 시작하기 (feat. 웹IDE gitpod) Spring Boot vs Spring 스프링 프레임워크는 기능이 많은만큼 환경설정이 복잡한 편입니다. 이에 어려움을 느끼는 사용자들을 위해 나온 것이 바로 스프링 부트다. 스프링 부트는 스프링 프레임워크를 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 정말 편하게 스프링을 활용할 수 있도록 돕습니다. 보통 현업에서 스프링을 쓴다고 하면 스프링 부트를 주로 쓰는 것입니다. 스프링 프레임워크는 자바 백엔드 프레임워크고, 스프링부트는 거기에서 추가적인 라이브러리를 추가하는 것이므로, 스프링 부트 프로젝트도 다 스프링을 기반으로 부트 라이브러리를 추가한 프로젝트입니다. 그래서 스프링 공부를 시작할때 스프링 부트부터 시작하는 것을 추천하는 편이고 깊게 공부할때 부트없는 스프링을 공부해도 좋다고 생각합니다.. 2023. 1. 14.
[백준 11437] 최소 공통 조상(LCA) 알고리즘(기본) - 파이썬(Python) LCA 문제 N(2 ≤ N ≤ 50,000)개의 정점으로 이루어진 트리가 주어진다. 트리의 각 정점은 1번부터 N번까지 번호가 매겨져 있으며, 루트는 1번이다. 두 노드의 쌍 M(1 ≤ M ≤ 10,000)개가 주어졌을 때, 두 노드의 가장 가까운 공통 조상이 몇 번인지 출력한다. 입력 첫째 줄에 노드의 개수 N이 주어지고, 다음 N-1개 줄에는 트리 상에서 연결된 두 정점이 주어진다. 그 다음 줄에는 가장 가까운 공통 조상을 알고싶은 쌍의 개수 M이 주어지고, 다음 M개 줄에는 정점 쌍이 주어진다. 출력 M개의 줄에 차례대로 입력받은 두 정점의 가장 가까운 공통 조상을 출력한다. 예제 입력 1 15 1 2 1 3 2 4 3 7 6 2 3 8 4 9 2 5 5 11 7 13 10 4 11 15 12 5 .. 2023. 1. 4.
[백준 1414] 크루스칼 알고리즘(Kruskal , 최소신장트리) - 파이썬(Python) 불우이웃돕기 문제 다솜이는 불우이웃 돕기 활동을 하기 위해 무엇을 할지 생각했다. 마침 집에 엄청나게 많은 랜선이 있다는 것을 깨달았다. 마침 랜선이 이렇게 많이 필요 없다고 느낀 다솜이는 랜선을 지역사회에 봉사하기로 했다. 다솜이의 집에는 N개의 방이 있다. 각각의 방에는 모두 한 개의 컴퓨터가 있다. 각각의 컴퓨터는 랜선으로 연결되어 있다. 어떤 컴퓨터 A와 컴퓨터 B가 있을 때, A와 B가 서로 랜선으로 연결되어 있거나, 또 다른 컴퓨터를 통해서 연결이 되어있으면 서로 통신을 할 수 있다. 다솜이는 집 안에 있는 N개의 컴퓨터를 모두 서로 연결되게 하고 싶다. N개의 컴퓨터가 서로 연결되어 있는 랜선의 길이가 주어질 때, 다솜이가 기부할 수 있는 랜선의 길이의 최댓값을 출력하는 프로그램을 작성하시오.. 2023. 1. 4.