🍀Spring

🍀Spring/🏝️Springframework

스프링 IoC 컨테이너

✅ 스프링 IoC 컨테이너란? Spring IoC (Inversion of Control) 컨테이너는 Spring Framework의 핵심 기능 중 하나로, 객체의 생성, 관리, 의존성 주입을 담당하는 역할을 수행합니다. IoC 컨테이너는 애플리케이션의 컴포넌트들을 인스턴스화하고, 구성하며, 조립하는 일을 담당하여 개발자가 객체의 생성과 관리에 대한 부분을 직접 처리할 필요 없이 편리하게 사용할 수 있게 해줍니다. ➡️ IoC 컨테이너의 주요 기능은 다음과 같습니다객체의 인스턴스화 및 생명주기 관리IoC 컨테이너는 애플리케이션에서 사용할 객체들을 인스턴스화하고, 객체의 생명주기를 관리합니다. 객체의 생성, 초기화, 소멸 등을 컨테이너가 담당하여 개발자는 이에 대한 로직을 신경쓰지 않고 개발할 수 있습니다..

🍀Spring/🏝️Springframework

Java-based, Annotation-based-configuration

💡Java-based configuration과 Annotation-based configuration은 둘 다 Spring Framework에서 빈(Bean) 구성을 위한 방법입니다. Java-based configuration과 Annotation-based configuration은 XML 설정 방식을 보완하기 위해 도입된 방식입니다. 이전에는 Spring Framework에서 빈 구성을 위해 XML 파일을 사용하는 방식이 주로 사용되었으나, XML 설정의 번잡함과 복잡성을 줄이기 위해 Java-based configuration과 Annotation-based configuration이 개발되었습니다. ✅ Java-based ConfigurationJava-based configuration은 자..

🍀Spring/📖toby-spring

[토비의 스프링 Maven] Junit Test와 TDD

🔥지금까지 간단하게 JUnit Test를 적용했다. 지금부터 메소드를 수정하여 테스트의 일관성, 포괄성을 향상시키고 테스트주도개발(TDD)에 대해서 알아보자. ✅ 테스트 결과의 일관성UserDaoTest의 addAndGet() 메소드를 테스트 하기 전에는 Primary key인 id가 겹치지 않게 테이블의 데이터를 삭제하거나, id의 값을 변경해주어야 했다. DB의 상태에 따라 테스트의 결과가 바뀐다는 점이 아쉽다. 코드에 변경사항이 없다면 테스트 코드는 외부에 영향을 받지 않고 언제나 일관된 결과를 내야한다. 즉, DB에 남아 있는 데이터와 같은 외부 환경에 영향을 받지 말아야 하는 것은 물론이고, 테스트를 실행하는 순서를 바꿔도 동일한 결과가 보장되도록 만들어야 한다. deleteAll(), getC..

🍀Spring/📖toby-spring

[토비의 스프링 Maven] 단위테스트

🔥스프링이 개발자에게 제공하는 가장 중요한 가치는 객체지향과 테스트라고 책에서 이야기하고 있다. 앞에서 객체지향에 대해서 배웠다면, 테스트가 무엇인지 알아보자. ✅ UserDaoTest 다시보기이전에 만들었던 테스트 코드는 main() 메소드를 이용해 UserDao 객체의 add(), get() 메소드를 호출하고, 그 결과를 화면에 출력하여 테스트하였다. UserDaoTestpackage com.jhcode.spring.ch1.dao; import java.sql.SQLException; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigAppli..

🍀Spring/📖toby-spring

[토비의 스프링 Maven] XML을 이용한 설정

✅ 스프링 IoC 컨테이너가 관리할 Bean 설정지금까지 DaoFactory를 통해서 의존관게를 설정할 수 있었습니다. 자바 클래스로써 @Configuration 어노테이션을 사용해서 스프링 IoC 컨테이너가 해당 설정 정보를 참고하여 Bean 객체를 생성하고, 컴파일 시에 의존관계를 설정할 수 있습니다. 스프링에서는 자바 클래스 외에도 XML 방식을 통해서 의존관계를 설정할 수도 있습니다. —@Configuration 어노테이션을 통해서 설정한 @Bean 메소드를 통해 얻는 정보는 아래와 같다.빈의 이름 : @Bean 메소드의 이름, 곧 빈의 이름이 된다. getBean() 메소드를 통해 반환받을 객체를 찾을 때 key로 사용된다.빈의 클래스 : 빈 객체를 어떤 클래스로 이용하여 만들지를 정의한다.빈의..

🍀Spring/📖toby-spring

[토비의 스프링 Maven] 싱글톤, 싱글톤 레지스트리, 오브젝트 스코프

🔎—오브젝트의 동일성과 동등성자바에서 두 개의 객체가 같은가?는 두 가지 의미가 있습니다. 첫 번째는 동일성으로 하나의 객체만 존재하고(메모리상 등록된 객체가 하나를 뜻한다), 두 개의 참조 변수를 갖고 있어 == 연산자로 비교할 수 있는 동일성두 번째는 동일한 정보를 담고 있는 여러 객체가 존재하여(메모리 상에 등록된 객체가 여러개를 뜻한다) .equals() 메소드를 이용해 비교하는 동등성 ✅ ApplicationContext와 Factory 객체 생성 비교DaoFactory에서 객체를 반환하는 것과 ApplicationContext에서 객체를 반환해서 사용하는 것이 큰 차이를 보여주지 않는 것 같습니다. 그렇다면 각각 객체를 반환할 때 같은 객체를 반환하는 것일까요? 왜 DaoFactory처럼 직접..

🍀Spring/📖toby-spring

[토비의 스프링 Maven] 제어역전과 의존관계 주입

✅ 의존 관계 주입(Dependency Injection)의존 관계 주입(Dependency Injection, DI)은 객체 간의 의존 관계를 코드 내에서 명시적으로 설정하는 것이 아니라 외부에서 의존 객체를 주입하여 사용하는 디자인 패턴입니다. 일반적으로 객체 간의 의존 관계는 해당 객체가 직접 의존하는 객체를 생성하거나 가져와 사용하는 방식으로 구현되지만, 이는 객체 간의 결합도를 높이고 코드 유지보수에 어려움을 초래할 수 있습니다. 그래서 IoC 컨테이너를 사용하여 외부로부터 객체 간의 관계를 설정합니다. 스프링 IoC 기능의 대표적인 동작원리는 주로 의존관계 주입이라고 불립니다. 스프링이 다른 프레임워크와 차별화돼서 제공해주는 기능은 DI를 사용할 때 명확하게 들어납니다. ✅ 의존 관계두 개의 ..

🍀Spring/📖toby-spring

[토비의 스프링 Maven] 제어역전 IoC

✅ 제어 역전의 개념제어 역전 (Inversion of Control, IoC)은 소프트웨어 디자인 패턴 중 하나로, 프로그램의 제어 흐름을 개발자가 아닌 프레임워크 또는 컨테이너가 담당하는 것을 말합니다. 개발자가 객체의 생성과 관리를 직접 제어하는 것이 아니라 외부의 컨테이너가 그 역할을 맡는다는 의미입니다. 이를 의존성 주입(Dependency Infection)으로 구현되는데 의존성 주입은 객체 간의 의존 관계를 컨테이너가 설정해주는 방식으로, 객체가 필요로 하는 의존 객체를 직접 생성하는 것이 아니라 컨테이너가 객체를 생성하고 주입해주는 것입니다. 이를 통해 개발자는 핵심 비즈니스 로직에 집중할 수 있고, 컨테이너는 객체의 생명주기와 의존성 관리 등을 처리하여 프로그램의 유연성과 확장성을 향상시..

🍀Spring/📖toby-spring

[토비의 스프링 Maven] 클래스의 분리와 인터페이스

🔎—매개변수와 인수매개변수(Parameter): 함수 또는 메서드의 선언 부분에서 정의된 변수를 말합니다. 매개변수는 함수 또는 메서드가 호출될 때에 전달되는 인수(argument)를 받아들이기 위해 사용됩니다. 매개변수는 함수 또는 메서드 내부에서 사용되는 지역 변수의 역할을 합니다.인수(Argument): 함수 또는 메서드를 호출할 때 전달되는 값들을 말합니다. 호출 시에 실제로 전달되는 값들을 인수라고 합니다. 인수는 파라미터와 일치하는 순서로 전달되며, 함수 또는 메서드 내부에서 해당 인수들을 활용하여 동작을 수행합니다. ✅ 클래스의 분리지난 시간에서 추상클래스를 만들고 이를 상속한 서브클래스에서 변화가 필요한 부분을 바꿔서 쓸 수 있게 만들었습니다. 템플릿 메서드 패턴, 팩토리 메서드 패턴이 사..

🍀Spring/📖toby-spring

[토비의 스프링 Maven] DAO 분리

🔥개발자가 객체를 설계할 때 가장 염두에 둬야 할 사항은 바로 미래의 변화를 어떻게 대비할 것인가이다. 지혜로운 개발자는 오늘 이 시간에 미래를 위해 설계하고 개발한다. -toby- ✅ 커넥션 만들기의 추출관심사를 분리하는 것은 중복된 코드를 제거하는 것이라고 할 수 있습니다. 하나의 로직을 수행하는데 무수히 많은 중복된 코드가 있다면, 만약 조금만 변동사항이 생겨도 변동사항이 생긴 코드를 하나씩 찾아가며 전부 바꿔야하기 때문에 유지보수가 어렵습니다. ➡️ UserDao의 구현된 add() 메서도 하나를 살펴보며 세가지 관심사항이 도출된다는 것을 알 수 있습니다.DB와 연결을 위한 커넥션을 어떻게 가져올까?어떤 DB를 사용하고, 어떤 드라이버를 사용할 것이고, 어떤 로그인 정보를 쓸 것인가? DB 연결에..

jhcode33
'🍀Spring' 카테고리의 글 목록 (5 Page)