전체 글(25)
-
스프링 빈 등록 & 의존관계 자동 설정
🐢 스프링 빈 등록 방법 2가지 1.컴포넌트 스캔 + 자동 의존관계 설정(@Componenet 계열)2.자바 코드로 직접 등록(@Configuration + @Bean) 🐢 1. 컴포넌트 스캔과 자동 의존관계 설정 @Component 달린 클래스 → 자동으로 스프링 빈 등록됨 🐢@Controller, @Service, @Repository 도 사실상 @Component 포함하고 있음 👉 그래서 컨트롤러/서비스/리포지토리 클래스 위에 어노테이션만 붙여도 스프링이 알아서 빈 등록함 ✔️자동 등록의 원리 스프링은 시작 시 @Component 달린 클래스 전부 스캔하위 패키지 전부 싹 뒤져서 빈으로 등록함등록된 빈은 기본적으로 싱글톤(하나만 생성)✔️스프링 빈으로 등록하면 좋은 이유? 스프링 컨테이..
2025.08.05 -
회원관리 예제로 배우는 스프링 기본기(테스트 코드, Optional, 람다 등등)
🐢 일반적인 웹 애플리케이션 계층 구조 Controller: 웹 요청 받고 응답 주는 창구 거북이 🐢📨Service: 비즈니스 로직 담당하는 두뇌 거북이 🐢🧠Repository (DAO): 데이터 저장/조회 담당하는 창고 거북이 🐢📦Domain (Entity): 회원, 주문 같은 핵심 객체 → 실제 데이터 거북이 🐢 👉 요청 → 컨트롤러 → 서비스 → 리포지토리 → DB 순서로 흐름 *위에 일반적인 웹 애플리케이션 계층 구조 🐢 Optional.ofNullable null 방지 거북이 🐢 값이 있으면 감싸서 Optional로 반환, 없으면 Optional.empty() 반환Optional 이런 식으로 많이 씀Optional member = Optional.ofNullable(rep..
2025.08.05 -
MVC 구조 완전 쉽게 + @ResponseBody까지
🐢 MVC?Model, View, Controller의 약자 역할 분리해서 개발 효율성과 유지보수성 높이는 패턴 안 그러면 코드 스파게티 대환장 파티 🐢 역할분담 Model: 데이터랑 비즈니스 로직 담당 → 똑똑한 거북이 🐢💻Controller: 요청 받고 Model 불러서 View에 넘김 → 중간 전달 거북이 🐢📨View: 화면 그리기만 함 → 예쁜 거북이 🐢🎨 🔥 정리 Model/Controller는 서버 뇌근육, View는 디자인 담당임 🐢 MVC동작 흐름 1.브라우저에서 URL 요청함 2. 내장 톰캣 서버가 받음 → 스프링 컨트롤러 호출 3. 컨트롤러가 name: spring 데이터 세팅하고 hello-template 리턴함 4. ViewResolver가 templat..
2025.08.05 -
스프링 부트 프로젝트 생성부터 실행까지 (Gradle vs Maven, 설정, 라이브러리 구조 완벽 정리!)
1️⃣ 프로젝트 생성 (Spring Initializr)스프링 부트 프로젝트는 https://start.spring.io/에서 생성합니다.Project: Gradle (요즘은 Gradle이 더 많이 쓰임)Language: JavaSpring Boot: 최신 버전 선택Dependencies:Spring Web (웹 애플리케이션 개발)Thymeleaf (템플릿 엔진)다운로드 후 압축을 풀고 IntelliJ IDEA에서 열어줍니다.2️⃣ Gradle vs Maven (빌드 도구 차이)스프링 부트 프로젝트를 만들 때 Gradle과 Maven 중 하나를 선택할 수 있습니다.✅ MavenXML 기반 설정 (pom.xml)오래된 표준, 안정적설정이 직관적이지만 코드가 길어짐✅ GradleGroovy/Kotlin DS..
2025.08.04 -
React입문 -> 고수로 가는 필수 개념
1️⃣ React는 화면을 빠르게 바꾸는 JS 라이브러리bash복사편집npm create vite@latest → Vite로 설치하면 빠르고 가벼운 개발 환경이 만들어져요.2️⃣ JSX는 JS 안에서 HTML처럼 코드를 짜는 문법jsx복사편집const element = h1>Helloh1>; → HTML처럼 생겼지만, class → className 등 문법 차이 주의!3️⃣ 컴포넌트는 화면의 부품 단위jsx복사편집function Hello() { return p>안녕하세요p>; } → 함수처럼 만들고 처럼 태그로 사용할 수 있어요.4️⃣ Props는 컴포넌트에 값을 전달하는 방법jsx복사편집function Hello(props) { return p>{props.name}님 반가워요!p>; } Hello..
2025.06.19 -
이벤트 처리하기" – 클릭, 입력 등 사용자 행동에 반응하는 법
React로 화면을 만들다 보면,“버튼 클릭했을 때 숫자 올리기”“입력창에 글자를 쓰면 화면에 반영하기”이런 걸 하고 싶을 때가 많죠!👉 그럴 때 사용하는 게 바로 이벤트 처리예요!이번 글에서는✅ 이벤트란 뭔지✅ 어떻게 처리하는지✅ 클릭과 입력 예제쉽고 간단하게 설명드릴게요.1️⃣ 이벤트란 뭘까요?이벤트(Event) = 사용자의 행동예를 들어:버튼 클릭키보드 입력마우스 움직임스크롤이런 걸 전부 “이벤트”라고 부릅니다!React에서는**“이벤트가 일어났을 때 실행할 코드”**를 미리 정해두는 걸👉 **이벤트 처리(Event Handling)**라고 해요.2️⃣ 클릭 이벤트 처리 (onClick)버튼을 눌렀을 때 어떤 일이 일어나게 하고 싶다면?jsx복사편집function App() { const han..
2025.06.19 -
버튼 누르면 바뀌는 값, State가 뭐예요?
지난 시간엔 컴포넌트에 값을 전달하는 Props에 대해 배웠어요.근데 이런 상황, 꼭 있죠?"버튼을 클릭했을 때 숫자가 올라가야 해요!""입력창에 글자를 쓰면 화면에도 바로 보여야 해요!"이렇게 값이 바뀌는 상황에서 필요한 개념이 바로 State입니다!오늘은✅ State가 뭐고✅ 왜 필요한지✅ 어떻게 쓰는지정말 쉽게 설명해드릴게요 😊1️⃣ State는 ‘변하는 값’을 저장하는 공간이에요React는 원래 한 번 화면이 그려지면, 값이 바뀌어도 화면은 그대로예요.근데 화면도 같이 바뀌게 하려면?👉 State에 값을 저장해야 해요.State는 컴포넌트 안에서 관리되는**“변하는 데이터”**입니다.2️⃣ 예제 – 버튼 누르면 숫자가 올라가요우선 아래 예제부터 볼게요:jsx복사편집import { useStat..
2025.06.19 -
컴포넌트끼리 데이터 주고받는 방법, Props가 뭐예요?
React에서 컴포넌트를 막 만들기 시작하면,이런 생각이 들 수 있어요."같은 버튼인데 글씨만 다르게 하고 싶은데?""컴포넌트 안에 정보를 어떻게 넣지?"그럴 때 등장하는 게 바로 Props입니다!오늘은✅ Props가 뭔지✅ 왜 필요한지✅ 어떻게 쓰는지진짜 쉽게 정리해드릴게요.1️⃣ Props란 뭘까?**Props = properties(속성)**의 줄임말이에요.쉽게 말하면,👉 컴포넌트에 값을 전달할 때 사용하는 방법이에요!예를 들어 볼게요jsx복사편집function Welcome() { return h1>안녕하세요!h1>; } 이 Welcome 컴포넌트를 여러 번 쓰고 싶은데,각각 이름만 다르게 하고 싶어요.이렇게 바꾸면?jsx복사편집function Welcome(props) { return h1>안..
2025.06.19 -
React는 컴포넌트 기반,,,그래서 컴포넌트가 뭔데?
React를 시작하면 꼭 듣게 되는 말!“React는 컴포넌트 기반이야.”“컴포넌트를 잘게 나눠서 써야 돼.”🤔 근데... 컴포넌트가 도대체 뭐길래 자꾸 나오는 걸까요?이번 글에서는✅ 컴포넌트가 뭐고✅ 왜 중요한지✅ 직접 예시까지진짜 쉽게 설명드릴게요!1️⃣ 컴포넌트란 쉽게 말하면 '부품'이에요React에서 컴포넌트는👉 웹 화면을 작은 조각으로 나눠서 만드는 방법이에요.예를 들어, 쇼핑몰 웹사이트가 있다고 해볼게요:상단 메뉴상품 카드장바구니 버튼하단 푸터이 각각을 하나의 컴포넌트로 만들어서 재사용하는 거예요!📌 컴포넌트는 '화면의 재사용 가능한 조각'이라고 생각하면 돼요.2️⃣ 왜 굳이 컴포넌트로 나눠야 할까?컴포넌트로 쪼개면 뭐가 좋은지 궁금하죠?✅ 장점 1. 재사용 가능같은 디자인, 같은 기능을..
2025.06.19 -
JSX는 HTML이랑 뭐가 다를까?도대체 JSX가 뭔데!!
React로 코딩을 막 시작하면,HTML처럼 생긴 코드인데 자꾸 오류가 나고…class를 썼더니 빨간 줄 뜨고…for도 못 쓰고…"이게 대체 뭐야… 나 분명 HTML 썼는데 왜 안 되는 거야??"이렇게 혼란스러웠던 적 있으시죠?그 이유는 바로👉 우리가 쓰는 건 HTML이 아니라 JSX이기 때문이에요!오늘은 JSX가 뭔지, 그리고 HTML과 뭐가 어떻게 다른지진짜 쉽게 알려드릴게요.1️⃣ JSX는 뭐예요?JSX는 한마디로 JavaScript 안에서 HTML처럼 생긴 문법을 쓸 수 있게 해주는 문법이에요.jsx복사편집const element = h1>Hello, React!h1>; 이 코드 보시면,JavaScript 변수 안에 같은 태그가 들어가 있죠?원래 JS에서는 태그를 이렇게 직접 쓰는 게 불가능했..
2025.06.19 -
React를 Vite로 설치하는게 국룰?
프론트엔드 공부를 시작하려고 하면, 꼭 듣게 되는 말이 있죠.“요즘은 React를 Vite로 설치하는 게 국룰이야!”🙄 처음 들으면“Vite가 뭐야? Create React App이랑 뭐가 다른데?”“그냥 아무거나 깔면 되는 거 아냐?”하는 의문이 들 수 있어요.오늘은 진짜 쉽게,React를 왜 써야 하는지?그리고Vite로 설치해야 하는 이유?이 두 가지를 초보자 눈높이에서 설명드릴게요!1️⃣ React는 왜 쓰는 걸까?옛날에는 웹사이트를 만들 때 HTML + CSS + JavaScript만 써서도 충분했어요.하지만 요즘 웹사이트는 이런 게 많죠:누르면 페이지 안에서 화면이 바로 바뀌고버튼을 누르면 숫자가 실시간으로 올라가고로그인하면 이름이 바로 뜨고이런 걸 **"사용자 경험"**이라고 하는데,기존 방..
2025.06.19 -
[Dbeaver]무료 DB툴 초간단 다운로드 및 설치
db툴로 dbeaver가 인기 많다 이유는 1.교차 플랫폼 도구이므로 windows, macOs 및 linux와 같은 다양한 운영체제에서 사용가능 2.광범위한 데이터베이스 지원가능 3.직관적이고 사용자 친화적인 인터페이스를 제공함 4.쿼리 실행 계획 및 데이터 내보내기/가져오기와 같은 고급 기능을 지원하여 효율적이고 데이터베이스 관리가 가능함 5.사용자가 추가 플러그인을 설치하거나 특정 요구 사항을 충족하는 맞춤 플러그인을 개발하여 기능을 향상 시킬 수 있다 그래서 많은 회사에서도 db툴로 dbeaver가 사용하고 있다고 한다 1.디비버 홈페이지 들어가기 https://dbeaver.io/download/ 2. 해당 os 찾아서 다운받기 *저는 windows를 사용중이기 떄문에 windows(instal..
2023.06.23 -
Oracle 쿼리 속도
데이터가 많아지면 쿼리 짠 건 한 끗 차이지만 속도 차이는 어마 무시 그렇다면 속도를 좀 더 빠르게 할려고 하면 어떤식으로 짜야할까 ? 질의 구조 최적화 잘 구성된 질의는 성능을 크게 향상할 수 있습니다. 질의가 적절한 조인 조건, 필터 술어 및 인덱싱을 사용하는지 확인해야한다. 또한 불필요한 조인을 피하고 테이블 관계가 올바르게 정의되었는지 확인해야한다. 복잡한 질의를 더 작고 관리할 수 있는 부분으로 나누고 필요한 경우 하위 질의 또는 임시 테이블을 사용하면 더 빠르속도의 결과가 나올 수 있다. 효율적인 인덱싱 적절한 인덱싱은 질의 성능에 매우 중요하다. WHERE 및 JOIN 절에서 자주 사용되는 열을 식별하고 해당 열에 적절한 인덱스를 만든다. 옵티마이지가 최적의 결정을 내릴 수 있도록 테이블 및..
2023.06.23 -
JAVA 연산자
Java 연산자는 피연산자(변수, 상수 또는 표현식)에 대해 특정 작업을 수행하는 기호입니다. 다양한 방법으로 값을 조작하고 결합할 수 있습니다. 다음은 Java 연산자의 주요 범주입니다. 1.산술 연산자: + 더하기: 두 개의 피연산자를 더합니다. - 빼기: 첫 번째 피연산자에서 두 번째 피연산자를 뺍니다. * 곱셈: 두 피연산자를 곱합니다. / 나누기: 첫 번째 피연산자를 두 번째 피연산자로 나눕니다. % 모듈러스: 나눗셈 후 나머지를 반환합니다. 2.할당 연산자: = 할당: 오른쪽의 값을 왼쪽의 변수에 할당합니다. += 복합 할당: 오른쪽 피연산자를 왼쪽 피연산자에 더하고 그 결과를 왼쪽 피연산자에 할당합니다. (예: x += 5는 x = x + 5와 같습니다.) 3.비교 연산자: == 같음: 두 ..
2023.06.21 -
JAVA의 변수에 대해서
JAVA의 변수에 대해서 public class DefaultValuesExample { public static void main(String[] args) { int intValue = 0; // Default value: 0 double doubleValue = 0.0; // Default value: 0.0 boolean booleanValue = false; // Default value: false char charValue = '\u0000'; // Default value: Null character String stringValue = null; // Default value: null System.out.println("Default values:"); System.out.println..
2023.06.21