일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Thymeleaf
- rpa
- Database
- jsp
- 이클립스
- spring
- Array
- Controller
- SpringBoot
- View
- git
- JDBC
- Eclipse
- Scanner
- Board
- 조건문
- jquery
- API
- React
- mysql
- Java
- html
- MVC
- 문자열
- 상속
- string
- 배열
- Oracle
- db
- Uipath
- Today
- Total
목록2025/02/03 (6)
유정잉
DI(Dependency Injection, 의존성 주입)란?👉 객체를 직접 생성하는 대신, 외부에서 주입해주는 방식👉 코드의 유지보수성 증가, 객체 간 결합도 감소🔥 1️⃣ 자동(Annotation 기반) DI (@Autowired)💡 Spring이 자동으로 객체를 주입해주는 방식✅ @Autowired 어노테이션을 사용하면, Spring이 해당 타입의 Bean을 자동으로 찾아서 주입해줌✅ XML 설정 없이 간단하게 사용할 수 있음📌 코드 예제import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;@Component // Engine 클래스를 Bean으로..
Constructor DI(생성자 주입)란 객체를 생성할 때, 생성자의 매개변수로 필요한 의존성을 전달하는 방식XML에서는 태그를 사용해서 주입할 수 있음!1️⃣ 기본 개념: Car와 Engine의 관계예제를 쉽게 이해하기 위해, Car 클래스가 Engine 객체를 필요로 한다고 가정즉, Car 객체가 생성될 때 Engine 객체가 필요함 → 생성자로 Engine을 주입해야 함! 2️⃣ Java 클래스 정의✅ Engine 클래스 (주입될 객체)package com.example;public class Engine { private String type; // 생성자 (Engine 타입을 설정하는 역할) public Engine(String type) { this.type =..
📌 init-method & destroy-method 차이점과 사용법스프링에서는 Bean의 라이프사이클(생성 → 사용 → 소멸)을 관리init-method → Bean이 생성될 때 실행할 메서드 지정destroy-method → Bean이 소멸될 때 실행할 메서드 지정이 속성을 사용하면, 특정 작업(초기화/정리)이 필요할 때 자동으로 실행할 수 있음1️⃣ init-method="Test3_init"✅ Bean이 생성된 후 자동으로 실행할 메서드 지정✅ DB 연결, 리소스 로드, 초기 설정 등을 할 때 사용📌 예제 (beans.xml) 📌 Java 코드 (Test3.java)package com.example; public class Test3 { public void Test3_init() { ..
📌 scope="prototype" vs scope="singleton" 차이점스프링에서 scope 속성은 Bean의 생성 방식(범위, 라이프사이클)을 결정기본값: singleton (단 하나의 객체만 생성)prototype: 필요한 만큼 객체를 새로 생성1️⃣ scope="singleton" (기본값)✅ 스프링 컨테이너가 실행될 때, 해당 Bean을 단 하나만 생성✅ 모든 요청에서 같은 객체를 공유✅ 기본값이므로 설정하지 않아도 자동으로 singleton 적용됨📌 예제 (beans.xml) 📌 동작 방식ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");Test t1 = context.getBean("testBe..
lazy-init="true"와 lazy-init="false"의 차이점은 Bean의 생성 시점1️⃣ lazy-init="false" (기본값)✅ 스프링 컨테이너가 시작될 때 Bean을 즉시 생성✅ 즉, 애플리케이션이 실행되면 미리 모든 Bean을 생성하고 초기화✅ 기본 설정이므로 따로 lazy-init="false"를 설정할 필요 없음📌 예제 (beans.xml) 📌 동작 방식ClassPathXmlApplicationContext("beans.xml")가 실행되면즉시 Test 객체가 생성됨Bean을 사용하지 않아도 미리 만들어짐2️⃣ lazy-init="true"✅ Bean을 미리 만들지 않고, 해당 Bean이 처음 필요할 때 생성✅ 메모리를 절약할 수 있음 (초기 로딩 속도 향상)✅ 지연 로딩(l..
1️⃣ 기존 방식 ((Test) ctx.getBean("test1"))Test t1 = (Test) ctx.getBean("test1");getBean("test1")은 Object 타입을 반환 → 직접 형변환 (Test)이 필요형변환을 잘못하면 ClassCastException이 발생할 가능성이 있음Spring 3.0 이전의 일반적인 방식2️⃣ 새로운 방식 (ctx.getBean("test1", Test.class)) Test t1 = ctx.getBean("test1", Test.class);제네릭 타입을 지정하여 Test 객체로 반환 → 형변환 (Test) 필요 없음컴파일 시점에 타입 체크 가능 → 안전한 코드Spring 3.0 이후 권장되는 방식📌 차이점 정리방식설명장점단점(Test) ctx.g..