본문 바로가기
대외활동/GDSC

3주차 정리 내용

by 동욷 2023. 4. 9.

1. 의존과 의존성

의존은 하나의 객체가 다른 객체를 사용하는 것을 의미한다.
클래스 A가 클래스 B를 사용하고 있다면 클래스 A는 클래스 B에 의존한다는 것이다.

의존성은 하나의 객체가 다른 객체를 사용하기 위해 필요한 것을 의미한다.
클래스 A가 클래스 B를 사용하려면, 클래스 A는 클래스 B의 인스턴스를 생성하고 참조해야 한다.

Spring에서는 객체들 간의 의존성을 자동으로 처리하고 주입해주는 기능을 제공한다. 
이것은 개발자가 수동으로 객체 간의 의존성을 설정하는 대신 Spring이 자동으로 객체를 생성하고 연결해주기 때문에 개발 시간을 단축시키고 유지보수를 용이하게 만들어준다. 

2. @Autowired 의존성 주입

@Autowired는 Spring에서 제공하는 의존성 주입(Dependency Injection)을 위한 어노테이션 중 하나이다. 
이 어노테이션을 사용하면 Spring이 객체를 자동으로 생성하고, 해당 객체에 의존하는 다른 객체를 찾아서 주입해준다.
@Autowired를 사용하기 위해서는 먼저 해당 객체를 Spring의 Bean으로 등록해야 한다. 
이를 위해, 해당 클래스에 @Component 어노테이션을 추가하거나, @Configuration 클래스에서 @Bean 어노테이션을 사용하여 Bean으로 등록할 수 있다.
@Autowired 어노테이션은 생성자, setter 메서드, 일반 메서드에 적용할 수 있다. 
생성자에 @Autowired 어노테이션을 붙이면 해당 클래스의 인스턴스를 생성할 때, 해당 생성자에서 사용하는 의존성 객체를 자동으로 주입한다. 
Setter 메서드나 일반 메서드에 @Autowired 어노테이션을 붙이면 해당 메서드에서 사용하는 의존성 객체를 자동으로 주입해준다.

3. DIP

Dependency Inversion Principle(의존 역전 원칙)
DIP는 고수준 모듈은 저수준 모듈에 의존해서는 안 되며,
양쪽 모두 추상화(abstraction)에 의존해야 한다는 원칙이다. 
즉, 추상화를 통해 각각의 모듈이 서로 독립적으로 구현되고 변경되어야 한다는 것이다.
코드의 유연성과 확장성이 높아지고, 유지보수성이 좋아진다. 또한, 코드의 재사용성도 높아지게 된다.

4. 스프링 빈과 스프링 컨테이너란?

스프링에서 빈(Bean)은 Spring IoC(Inversion of Control, 제어의 역전) 컨테이너에서 관리되는 객체를 말한다. 
스프링 빈은 Spring IoC 컨테이너에 의해 생성, 초기화, 관리되며, 필요한 곳에서 DI(Dependency Injection, 의존성 주입)을 통해 사용된다.
스프링 빈은 일반적으로 스프링에서 관리하는 객체를 의미하지만, @Bean 어노테이션을 사용하여 직접 등록할 수도 있다. 
스프링에서는 다양한 스코프(scope)의 빈을 지원하며, 스코프에 따라 빈의 생명 주기가 달라진다.
스프링 컨테이너(Spring Container)는 스프링 빈을 생성하고 관리하는 인스턴스이다. 
스프링 컨테이너는 스프링 애플리케이션의 핵심적인 역할을 담당하며, 스프링에서 제공하는 IoC/DI 기능을 수행한다. 
스프링 컨테이너는 주로 BeanFactory와 ApplicationContext 인터페이스를 구현한 클래스들을 말한다.
BeanFactory는 스프링 IoC 컨테이너의 가장 기본적인 형태이며, 스프링 빈의 등록과 검색, DI 등의 기능을 제공한다. 
ApplicationContext는 BeanFactory의 모든 기능을 포함하며, 이외에도 스프링에서 제공하는 AOP, 이벤트 처리, 메시지 처리 등의 기능을 제공한다. 
또한, ApplicationContext는 BeanFactory보다 더 많은 기능을 제공하면서도 더 빠른 시작 시간을 가지고 있다.


5. JDBC와 JPA란?

JDBC는 Java DataBase Connectivity의 약어로, 
자바에서 데이터베이스에 접근하기 위한 API 중 하나이다. 
JDBC를 사용하면 자바 어플리케이션에서 데이터베이스를 연결하고 SQL 쿼리를 실행하여 데이터를 처리할 수 있다. 
JDBC는 데이터베이스 벤더의 드라이버를 사용하여 DBMS와 통신하며, DBMS별로 서로 다른 드라이버가 필요하다.
JPA는 Java Persistence API의 약어로, 자바에서 ORM(Object-Relational Mapping)을 구현하기 위한 API이다. 
ORM은 객체 지향 프로그래밍과 관계형 데이터베이스를 연결하여 데이터베이스를 객체처럼 다루는 기술이다. 
JPA는 이러한 ORM을 지원하는 인터페이스를 제공한다. 
JPA를 사용하면 객체와 관계형 데이터베이스 간의 매핑을 일일이 작성하지 않아도 되며, 개발자는 객체 지향적인 방식으로 데이터베이스를 조작할 수 있다.

728x90

'대외활동 > GDSC' 카테고리의 다른 글

2주차 정리내용  (0) 2023.04.09
1주차 정리 내용  (0) 2023.03.26