본문 바로가기

Spring46

[Spring] Java 기반 컨테이너, Component Scan, 의존 관계 주입 방법 [Spring] 스프링 컨테이너(Spring Container), 빈(Bean), 빈스코프(Bean Scope) 란? +싱글톤(Singleton) 스코프 스프링 컨테이너 Spring Container = 내부에 존재하는 애플리케이션 빈의 생명주기를 관리 (= Bean 생성, 관리, 제거 등의 역할) * 스프링 프레임워크의 핵심 컴포넌트! 스프링 컨테이너는 무엇인가? = Ap wlikeoxy.tistory.com 에 대한 추가 공부 개발자의 상황에 따라서 빈을 등록하는 방법이 달라지는데 정말 개략적인 설명은 수동으로 빈을 등록 - @Configuration, @Bean 자동으로 빈을 등록 - @ComponentScan 이라 말 할 수 있다. @Bean and @Configuration : 자바 기반 설정의.. 2022. 10. 18.
[Spring] 스프링 컨테이너(Spring Container), 빈(Bean), 빈스코프(Bean Scope) 란? +싱글톤(Singleton) 스코프 스프링 컨테이너 Spring Container = 내부에 존재하는 애플리케이션 빈의 생명주기를 관리 (= Bean 생성, 관리, 제거 등의 역할) * 스프링 프레임워크의 핵심 컴포넌트! 스프링 컨테이너는 무엇인가? = ApplicationContext (다형성 적용으로 인터페이스로 구현되어 있다.) XML(과거 방식), 애너테이션 기반 자바 설정 클래스로 만들 수 있다. 빈의 인스턴스화, 구성, 전체 생명 주기 및 제거 처리 개발자가 정의한 Bean을 객체로 만들어 관리, 개발자 필요시 제공 through 스프링 컨테이너, 원하는 만큼 많은 객체 가질 수 있음 의존성 주입을 통해 애플리케이션 컴포넌트 관리 - 애플리케이션의 빈 ~ 빈 연결 - 모듈간 의존, 결합 문제에서 자유로워질 수 있음 - 메서드 호.. 2022. 10. 13.
[Spring] 아키텍쳐(Architecture)란? / Spring Framework 모듈 구성 보기 아키텍쳐(Architecture)란? 요구사항을 만족하는 건축물을 짓는데 있어 청사진 같은 역할 ex) 아파트, 빌딩 등의 조감도 아키텍처 - 건물, 구조물의 컨셉부터 잡을 것 복잡하지 않고, 최대한 심플함을 유지할 것! 아키텍처 유형 in 컴퓨터 시스템 시스템 아키텍처 소프트웨어 아키텍처 / 애플리케이션 아키텍처 시스템 아키텍처 : 시스템의 건체적인 구성을 큰 그림으로 표현 ➡ 해당 시스템의 하드웨어 구성, 소프트웨어 알 수 있음 시스템 구성 요소들 간의 상호작용 방법, 시스템 정상 동작 원리 등이 표현 될 수 있음. 소프트웨어 아키텍처 / 애플리케이션 아키텍처 소프트웨어 아키텍처 소프트웨어의 구성을 큰 그림으로 표현 어떤 기술을 지원하는지, 어떤 기능을 사용할 수 있는지 O 웹 애플리케이션을 위한 아.. 2022. 10. 12.
[Spring] PSA 란? (Portable Service Abstraction) PSA란? (Portable Service Abstraction) 추상화(Abstraction)의 개념 클래스의 본질적인 특성만을 추출해서 일반화 하는 것 *설계 관점에서는 추상화 < 일반화가 더 적절! * Java에서 코드로 추상화 방법? = 추상 클래스, 인터페이스 추상화의 예 일반적인 특성을 뽑아낸 A 클래스를 작성하고, A 클래스를 확장받은 B, C, D 클래스는 A클래스의 일반화된 동작을 자신만의 고유한 동작으로 재구성 가능하다. 클라이언트는 B, C, D 클래스를 사용할때 객체를 자신의 타입에 할당하지 않고, A클래스 변수에 할당을 해서 접근을 한다. ⬇ 추상화를 하는 이유 클라이언트(웹브라우저) 입장에서는 A클래스만 일관되게 바라보며 하위 클래스의 기능을 사용할 수 있다. So, PSA(일관.. 2022. 10. 12.
[Spring] AOP란? (Aspect Oriented Programming) AOP (Aspect Oriented Programming)란? = 관심(Aspect) 지향 프로그래밍 AOP에서 말하는 관심 = 애플리케이션에 필요한 기능 중 공통적으로 적용되는 기능에 대한 관심 공통 관심 사항 & 핵심 관심 사항? 공통 관심 사항 : 애플리케이션 전반에 공통적으로 사용되는 기능들 (=부가적인 관심 사항) ↕ 핵심 관심 사항 : 비즈니스 로직, 애플리케이션 주 목적 달성 위한 핵심 로직 ex) 커피 주문을 위한 애플리케이션 예시 AOP 적용 전 ↕ AOP 적용 후 : 공통 기능 로직이 분리되어 핵심 업무 로직에 두루 사용되는 것을 확인 할 수 있다. 따라서 AOP = 애플리케이션의 핵심 업무 로직에서 공통 기능 로직들을 분리하는 것! AOP가 필요한 이유 핵심 로직에서 공통 기능을 분.. 2022. 10. 12.
[Spring] IoC(Inversion of Control) / DI(Inversion of Control) 이란? IoC(Inversion of Control)란? 애플리케이션 흐름의 주도권을 개발자가 아닌 Spring이 갖는다. Java 콘솔 애플리케이션 일반적인 제어권 --> 개발자에게! ex) public class Example2_10 { public static void main(String[] args) { System.out.println("Hello IoC!"); } } main() 메서드로 객체 메서드 호출... 개발자 작성 코드를 순차적으로 실행 ↕ 반대로, 웹에서 동작하는 애플리케이션 경우 클라이언트(User)가 외부에서 접속해서 사용! --> main() 메서드가 종료되면 안된다. 서블릿 컨테이너에는 서블릿 클래스들 有.. 별도의 main() 메서드는 無 ↓ main() 메서드도 없는데 어떻게 .. 2022. 10. 12.
[Spring] POJO란? (Plain Old Java Object) POJO(Plain Old Java Object) PO - 플레인(순수한) : Java로 생성하는 순수한 객체 JO - Java Object : 객체지향 프로그래밍 POJO 프로그래밍 = POJO를 이용해서 프로그래밍 코드를 작성하는 것 코드의 유지/보수 및 특정 클래스 확장 용이좋은 객체지향 설계를 할 수 있도록! POJO 프로그래밍의 기본적 규칙 1. Java, Java의 스펙에 정의된 것 이외에는 다른 기술, 규약에 얽매이지 X 특정 기술을 상속해서 코드 작성시 코드가 변경될 경우 일일히 하나씩 찾아서 변경해줘야 하기 때문! + extends 상속시에도 객체지향 설계 기법 적용하기 어려워짐 2. 특정 환경에 종속적이지 X ex) Tomcat을 쓰는 상황에서 갑자기 Zetty로 변경? 코드 전면 수정.. 2022. 10. 11.
[Spring] Spring Framework란? / Framework과 Library의 차이 Framework란? 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것 Frame = 어떤 대상의 큰 틀이나 외형적인 구조 소프트웨어 관점에서의 Framework? -> 어떠한 애플리케이션을 만들기 위한 틀, 구조를 제공 Java의 Interface => 추상 메서드만 정의되어 있는 뼈대 구성! ex) Collection Framework : Map, Set, List 같은 자료 구조들은 자주 사용하기 때문에 비슷한 유형들의 데이터들을 가공, 처리하기 쉽도록 표준화된 방법 제공 --> 인터페이스와 인터페이스들을 구현한 구현체들의 집합. 따라서 Framework = 기본적으로 프로그래밍 하기 위한 틀, 구조 제공 장점 1. 효율적으로 코드.. 2022. 10. 11.
[Java] String Builder 데일리코딩 문제 중 순서가 뒤집힌 문자열을 리턴해야할때 사용한다. StringBuilder : 내부에 버퍼를 가지고있어 변경 가능한 문자열을 만들때 사용한다. StringBuilder.reverse 메서드를 사용하여 문자열을 뒤집을 수 있다. * 내부에 버퍼를 갖고 있다는 뜻 = 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 저장할 수 있다 연산이 많은 경우에는 String 계산보다 빠르고 효율적이여서 StringBuilder를 사용한다고 함. class Main { public static void main(String[] args) throws IOException { String str = "Study Hard!"; //스트링빌더 객체 선언 StringBuilder sb = new S.. 2022. 9. 26.
[JAVA - OOP 심화4] 추상화 ✨추상화 : 상속과 반대개념이라 생각해도 무방, 기존 클래스들의 공통적인 요소를 뽑아서 상위 클래스를 만듬 → 상위 클래스 or 하위 클래스를 만들어도 ㅇㅋ ✨장점 : 코드의 중복 줄일수 있고, 클래스 간 관계 설정 가능, 유지/보수 용이해짐 ✨abstract 제어자 : (기타제어자 중 하나) ‘추상적인’ = ‘미완성’ 메서드 앞에 붙은 경우 : 추상 메서드(메서드 시그니처만 有, 바디는 無) 클래스 앞에 붙은 경우 : 추상 클래스 → 클래스에 추상 메서드 포함시 자동으로 추상 클래스! ✨추상 클래스 - 객체 생성 불가함 그런데 추상 클래스를 왜 만들까? 상속관계에 있어 새로운 클래스 작성에 유용함 : 상위 클래스에서는 선언부만, 하위 클래스에서는 구체적 작성해서 유연한 대응 가능함 (오버라이딩 - 각각.. 2022. 9. 8.