본문 바로가기

Java

(110)
[Java/스프링 입문] 스프링 빈과 의존관계 - 컴포넌트 스캔과 자동 의존관계 설정(@Controller, @Service, @Repository, @Autowired), 자바 코드로 직접 스프링 빈 등록하기 (@Configuration, @Bean) 들어가며스프링 빈을 등록하는 2가지 방법🫘 컴포넌트 스캔과 자동 의존관계 설정🫛 자바 코드로 직접 스프링 빈 등록하기 1. 컴포넌트 스캔과 자동 의존관계 설정 (@Controller, @Service, @Repository, @Autowired)1) @Controller, @Service, @Repository의존 관계앞서 만든 서비스에 화면을 붙이기 위해선 Controller와 View가 필요합니다.MemberController는 MemberService를 통해서 회원가입, 조회할 수 있어야 합니다.=> 이러한 관계를  MemberController가 MemberService를 의존한다고 표현합니다. 컴포넌트 스캔@Component: @Component 어노테이션이 있으면 스프링 빈으로 자동 등록됩..
[Java/스프링 입문] 스프링 웹 개발 기초 - 회원 관리 예제 (비즈니스 요구사항 정리, 회원 도메인과 리포지토리 만들기, 회원 리포지토리 테스트 케이스 작성, 회원 서비스 개발, 회원 서비스 테스트 (JUnit 테스트 프레임워크)) 회원 관리 예제 - 백엔드개발📋 비즈니스 요구사항 정리🏗️ 회원 도메인과 리포지토리 만들기🧪 회원 리포지토리 테스트 케이스 작성💻 회원 서비스 개발✅ 회원 서비스 테스트 (JUnit 테스트 프레임워크) 1. 비즈니스 요구사항 정리데이터: 회원 ID, 이름기능: 회원 등록, 조회가상의 시나리오: 아직 데이터 저장소가 선정되지 않음  컨트롤러: 웹 MVC의 컨트롤러 역할서비스: 핵심 비즈니스 로직 구현리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 클래스 의존관계아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계회원저장소: MemberRepo..
[Java/스프링 입문] 스프링 웹 개발 기초 - 정적 컨텐츠, MVC와 템플릿 엔진, API(@ResponseBody) 들어가며📜 정적 컨텐츠: 파일을 그대로 클라이언트단에 보여주는 방식🛠️ MVC와 템플릿 엔진: 서버에서 변형을 하여 html을 바꿔서 내려주는 방식🔄 API 방식: json 포맷으로 클라이언트에게 데이터를 전달하는 방식이라고 할 수 있습니다. 1. 정적 컨텐츠 (파일을 그대로)main > resources > static > hello-static.html정적 컨텐츠 입니다.  정적 컨텐츠 동작원리웹 브라우저에서 localhost:8080/hello-static.html을 치면 내장 톰캣 서버가 이  요청을 받습니다.스프링은 우선 컨트롤러를 먼저 찾아보지만, hello-static 관련 컨트롤러는 없습니다.컨트롤러가 없기에 이후 resouces: static/hello-static.html를 찾아 ..
[Java/스프링 입문] 프로젝트 환경설정 - 프로젝트 생성, 라이브러리 살펴보기, View 환경설정, 빌드하고 실행하기 1. 프로젝트 생성1) 기본 세팅Java 17Spring 3.0부터는 Java 17 버전 이상만 지원 가능하기 때문에, Java 17 버전으로 다운로드를 받습니다.https://www.oracle.com/java/technologies/downloads/#java17 Download the Latest Java LTS FreeSubscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.www.oracle.com환경 변수 설정Window + R → sysdm.cpl로 시스템 속성에 진입합니다.고급 → 환경 변수 → JAVA_HOME 시스템 변수를 설정합니다. 2)..
[Java] enum(열거형) - 정의, 문법, 사용 예제, 실제 사례 enum이 뭐야? 왜 써야 돼?💡상수의 집합enum은 상수의 집합을 나타냅니다.관련된 상수들을 논리적으로 그룹화할 수 있습니다.💡가독성, 타입 안정성, 관련 메소드 정의가독성: 상수 그룹을 하나의 타입으로 묶어 의미를 명확히 표현할 수 있습니다.타입 안정성: 잘못된 값을 사용할 가능성을 줄이고, 컴파일 타임에 오류를 발견할 수 있습니다.관련 메소드 정의: 관련 메소드나 필드를 함께 정의할 수 있어서, 코드의 응집도를 높일 수 있습니다. enum 문법public enum EnumName { CONSTANT1, CONSTANT2, CONSTANT3;}  enum 사용 예제1다음은 enum을 사용하여 요일을 나타내는 예제입니다.Day라는 enum을 정의하고 그 안에 일주일의 요일을 상숭로 ..
[Java] 제네릭 - 개념, 문법, 타입 범위 제한, 상속, 주의사항 1. 제네릭이 대체 뭐야?💡 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법⇒ 타입을 변수화한 기능 타입 파라미터: Reference 타입만 가능컴파일 타임에 타입 검사를 통한 예외 방지 2. 문법 (클래스, 인터페이스, 메서드)(1) 제네릭 클래스, 인터페이스 정의// 클래스접근 지정자 class 클래스명 {}접근 지정자 class 클래스명{ // 제네릭 타입 변수명이 2개일 때}// 인터페이스접근 지정자 interface 클래스명{}접근 지정자 interface 클래스명{} 제네릭 타입 변수 관례적 표기 의미 T타입 TypeK키 KeyV값 ValueN숫자 NumberE원소 Element (2) 제네릭 클래스제네릭 클래스 - 객체 생성💡 제네릭 클래스는 클래스를 정의하는 시점에 타입을..
[알고리즘/구현] 시뮬레이션, 완전탐색, 구현 - 개념, 행렬(Matrix), 문제(상하좌우, 시각, 왕실의 나이트, 문자열 재정렬) 💡 시뮬레이션, 완전탐색, 구현 프로그래밍의 범위가 잘 벗어나지 않게 나오는 문제가 대부분(1,000만회~1억회 미만)구현이란?개념 정리머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제 ⇒ 연습만이 살길이다…!예시알고리즘은 간단한데… 코드가 지나치게 길어지는 문제실수 연산을 다루고, 특정 소수점 자리까지 출력해야 하는 문제문자열을 특정한 기준에 따라서 끊어 처리해야 하는 문제적절한 라이브러리를 찾아서 사용해야 하는 문제 행렬(Matrix)행렬: 2차원 데이터를 일종의 표와 같은 형태로 쉽게 나타내는 수학 개념2차원 배열 = Python 2차원 List특정한 캐릭터나 사물이 특정 위치에 존재했다가, 상하좌우로 이동할 수 있다⇒ 방향 벡터 문제로 풀..
[알고리즘/해쉬(Hash)] 개념, 해시 충돌(Hash Collision), Python-Dictionary 문법 Hash 개념Key : Value 형태를 갖는 자료구조Key: 이름 - Value: 전화번호모든 데이터 타입으로 접근 가능Hash Table💡 Key - ValueHashing: Hash FunctionKey: 고유한 값, 해시 함수의 input(저장 시 값을 해시 함수로 바꾸어 저장함)Value: bucket(저장소)에 최종적으로 저장되는 값, key와 매칭되어 저장, 검색, 접근, 삭제 가능Hash Function: key 값을 Hash로 변경해 주는 함수⇒ Hash Table에서 key 값은 해시 함수를 통해 해시로 변경(index 매핑)되며, 이 Hash 값은 key와 매칭되어 bucket(저장소)에 저장됨 해시 충돌(Hash Collision)필연적 문제Hash를 이용한 자료구조 방식에서 필연..

반응형