목록콤퓨타 왕기초 (187)
파게로그
AOP(Aspect Oriented Programming) 비즈니스 로직 외에 개발자나 관리자가 프로그램 구현이나 테스트 등을 위해 사용하는, 사용자는 인식할 수 없는 코드가 존재한다. 곧, OOP가 사용자 관점에서 이루어진 프로그래밍이라면, AOP는 개발자 또는 운영자 관점 또한 고려하는 것이다. 어플리케이션의 특정 모듈에게 기대하는 행동, 즉 우리가 구현하기를 원하는 기능이 concern이라면 비즈니스 로직과 같은 것은 Primary Concern(Core Concern, 핵심 기능)이며, 여기에 해당하면 객체로, 그리고 실질적인 업무는 메서드로 만들어진다. 하지만 로그 처리, 보안 처리, 트랜잭션 처리 등 메서드의 앞이나 뒤에 포함되는 부분은 Cross-cutting Concern(공통 기능)으로서..
XML Configuration을 Java Configuration으로 변경하기 XML 파일의 내용을 Java 소스코드로 작성한다. 설정을 위한 자바 클래스라는 것을 표시하기 위해서, @Configuration annotation을 추가한다. ▼ @ComponentScan("admin.school.ui") ▼ @ComponentScan({"admin.school.ui", "admin.school.entity"}) 스프링에게 객체 생성을 부탁함 ▼ @Bean public Exam exam() { // 컨테이너에 담겨졌을 때 해당 객체의 이름(파란색 글씨, bean id와 동일) return new MidTermExam(); } 이건 내가 객체를 직접 만드는건데...?라고 생각이 들지만, @Bean anno..
annotation을 활용한 객체 생성 클래스 위에 @Component를 붙이면.. 얘가 객체화된다. base-package에서 component를 스캔하라 객체 생성하게 되면 안쪽도 읽기 때문에 얘는 더이상 필요가 없다 @Component("name") 을 통해서 객체에 이름을 부여할 수 있음 @Component의 종류와 시멘틱 @Component annotation을 이용해 객체를 생성했다면, 초기값을 어떻게 설정할 수 있을까? @Value annotation을 이용한다. @Component public class MidTermExam implements Exam { @Value("20") private int kor; @Value("30") private int eng; /* ... */ } @Co..
Spring docs - Annotation-based container configuration docs.spring.io/spring-framework/docs/5.3.x/reference/html/core.html#beans-annotation-config Annotation으로 설정할 때의 모듈 변경 방법 UI --- S --- B --- B2 (implements B) 여기서 B2 대신 B3를 사용하고자 한다면, data.B2를 data.B3로 바꾸기만 하면 된다. 이렇게만 해도 충분히 편하지만, annotation을 통해 코드에 메타 데이터를 심으면 보다 편리하다. B2가 @Component annotation을 통해 객체화되고 있을 때, 이를 지우고 B3로 대체하게 되면, @Component..
Spring Bean configuration file 생성하기 docs.spring.io/spring-framework/docs/current/reference/html/core.html#xsd-schemas-beans atoz-develop.tistory.com/entry/Spring-%EC%8A%A4%ED%94%84%EB%A7%81-XML-%EC%84%A4%EC%A0%95-%ED%8C%8C%EC%9D%BC-%EC%9E%91%EC%84%B1-%EB%B0%A9%EB%B2%95-%EC%A0%95%EB%A6%AC XML 파일을 생성해준다. 여기에서 Bean 객체를 생성한다. XML에서 을 이용한 객체 생성 package admin.school; import admin.school.entity.Exam; i..
admin.school.Program package admin.school; import admin.school.entity.Exam; import admin.school.entity.MidTermExam; import admin.school.ui.ExamConsole; import admin.school.ui.InlineExamConsole; import admin.school.ui.TableExamConsole; public class Program { public static void main(String[] args) { Exam exam = new MidTermExam(60, 70, 40, 80); ExamConsole inlineExamConsole = new InlineExamConsole(..
DI(Dependency Injection) dependency(의존성, 종속성)은 '의존적인 관계'를 의미하기도 하지만, 어떤 클래스가 의존하고 있는 부품과 같은 클래스를 의미하기도 한다. 예를 들어 클래스 A 내부에서 클래스 B를 생성하여 사용할 때, B가 dependency인 것이다. DI(Dependency Injection)는 어떤 클래스 내부에서 다른 클래스의 인스턴스를 생성하는 것이 아니라, 외부에서 생성된 인스턴스를 다른 클래스가 사용하는 것을 말한다. Spring의 경우, Spring의 컨테이너가 인스턴스를 만들어 놓으며, 다른 클래스는 만들어져 있는 인스턴스를 단순히 사용하기만 하면 된다. 🍓 Composition has a (일체형) ▪ tight coupling ▪ 두 class의 ..
Spring projects https://spring.io/projects Spring Framework Provides core support for dependency injection, transaction management, web apps, data access, messaging, and more. 기업형 응용 프로그램을 보조하기 위한 쉬운 프레임워크 ☕ Java SE(Java Standard Edition) 일반적인 로컬 응용 프로그램 개발을 위한 API 파일 I/O, 콘솔 I/O, 윈도우 I/O, 네트워크 I/O, Thread, ... ☕ Java EE(Java Enterprise Edition) → Spring으로 대체 분산형, 기업형 응용 프로그램 개발을 위한 API 결합력을 낮추는..