Spring기초 설명
다형성(Polymorphism)
- 객체지향프로그램 OOP(Object Oriented Programing)
- 다형성은 하나의 객체가 여러가지 형태를 가질 수 있는 것으로 객체가 다른 객체들과 호환성을
가지며 자신만의 역할을 수행할 수 있다.
오버로딩(Overloading)
- 같은 이름의 메소드를 매개변수의 개수나 타입을 다르게 정의하는 것.
- 오버로딩을 사용하면 같은 이름의 메소드를 여러개 정의하여 메소드 호출시 매개변수에 따라 적절한 메소드를 선택하여 실행할 수 있다.
오버라이딩(Overriding)
- 부모클래스의 메소드를 자식 클래스에서 재정의하여 사용하는것으로
자식 클래스에서 재정의한 메소드를 부모 클래스의 메소드를 대체하게 된다.
- 오버라이딩은 매소드의 이름, 매개변수, 반환값이 모두 같아야하고 오버라이딩을 통해 자식 클래스에서 부모 클래스의 메소드를 확장하거나 변경할 수 있다.
- Spring에서는 DI를 통해 다형성을 구현하고 DI는 인터페이스를 통해 다양한 객체를 주입받고 AOP는 부가 기능을 쉽게 추가 할 수 있게 도와준다.
DI (Dpendency Injection)
- DI는 의존성 주입으로 객체 생성과 관계설정을 개발자가 직접 하지않고 프레임워크가 대신 해주는 방식으로 Bean을 등록하고 필요한 클래스에서 Bean을 주입받아 사용한다.
AOP (Aspect Oriented Programing)
- AOP는 여러 모듈에서 공통으로 사용하는 기능을 분리하여 모듈화하는 방식이다. AOP는 OOP의 한계를 보안하기 위해 등장해 로깅, 트랜잭션, 보안등 @Aspect애노테이션을 사용하여 구현한다.
CRUD : 데이터베이스에서의 데이터 조작작업
Create : 데이터를 생성하는 작업
Read : 데이터를 조회하는 작업
Update : 데이터를 업데이트하는 작업
Delete : 데이터를 삭제하는 작업
@Repository
- SpringFramework에서 데이터 접근계층(Data Access Layer)에서 사용되는 애노테이션으로 데이터베이스와 상호작용을 담당하는 DAO(Data Access Object)클래스이다.
- @Repository 애노테이션으로 지정된 클래스를 자동 검색하여 Bean으로 등록해 등록된 객체는 Singleton scope로 생성된다.
@Controller
- @Controller 애노테이션으로 지정된 클래스는 @RequestMapping 애노테이션을 사용하여 URL매핑을 정의할 수 있다.
@Service
- 비즈니스로직을 담당하는 서비스 클래스를 표시하는 역할을 한다.
@RequestMapping
- 요청 URL과 Controller매서드를 매핑하는데 사용된다. @RequestMapping은 클래스와 메서드 모두 적용이 가능하고 클라이언트의 요청 URL과 어떤 메소드가 처리할지를 연결해주는 역할이다.
- value : 요청 URL패턴을 지정한다.
- method : HTTP요청 메서드 타입을 지정한다.
- params : 요청 파라미터를 지정한다.
- headers : 요청 헤더 정보를 지정한다.
- consumes : 소비할 미디어 타입을 지정한다.
- produces : 생성할 미디어 타입을 지정한다.
@Autowired
- SpringFramework에서 자동의존성주입을 해주는 애노테이션으로 객체간의 의존성관리 io(Inversion of Control)기능을 제공하여 @Autowired를 사용하여 자동으로 의존성을 주입받을 수 있다.
- @Autowired 애노테이션을 사용하면 Spring컨테이너는 해당 클래스를 스캔해 자신이 주입할 수 있는 클래스를 찾아 의존성을 주입한다.
바인딩(Binding)
- 바인딩은 사용자가 입력한 데이터를 객체의 필드에 매핑하는 것을 말한다.
- 휍 폼에서 사용자의 입력데이터는 문자열 형태로 서버에 전송되어 문자열 데이터를 자바 객체의 필드에 바인딩하기 위해서는 자동 형변환이 필요하다.
- Spring에서는 @ModelAttribute애노테이션을 사용하여 객체를 생성하고 전송된 데이터를 객체의 필드에 매핑한다.