본문 바로가기

카테고리388

로깅 보호되어 있는 글 입니다. 2023. 8. 26.
[Spring-legacy] xml로 AOP 어드바이스(Advice) AOP의 역할들에는 다양하게 있다. 1. 어드바이스 (Advice) 2. 조인포인트 (JoinPoint) 3. 포인트 컷 (PointCut) 4. 애스펙트 (Aspect) 5. 인트로덕션 (Introduction) 6. 타깃( Target) 7. 프록시 (Proxy) 8. 위빙(Weaving) 이번에는 Advice에 대해 정리해보았다. Dao 인터페이스, OracleDao 클래스 Dao 인터페이스를 만들고, OracleDao에서 Dao를 구현하려고 한다. 인터페이스에서 정의한 메소드를 OracleDao 클래스에서 출력문을 구현해보았다. BeforeAdvice 클래스 인터페이스 BeforeAdvice를 가져오려고하는데, 만들어주지 않았음에도 이렇게 가져올 수 있다. berforeAdvicemethod( ).. 2023. 8. 25.
[Spring] AOP 개념과 용어 8가지 AOP란? 관점지향 프로그래밍으로, 문제를 바라보는 관점을 기준으로 프로그래밍 하는 방법론 what when where 횡단관심사(cross-cutting-concerns) 흩어진 관심사를 Aspect로 모듈화하고 핵심적인 비즈니스 로직에서 분리해 재사용하는 것이 AOP다. 어떤 클래스의 어떤 메소드가 실행되기 전/ 후에 다른 기능을 수행할 수 있는 코드를 캡슐화 하는것이다 즉, 비 기능적 요구사항이 핵심 애플리케이션 코드에 나타나지 않도록 캡슐화하는 것. 목적 : 공통 기능 관련 로직(로깅, 트랜잭션 관리, 보안 등)의 분리, 핵심로직 구현 코드 AOP 용어 어드바이스 ( Advice ) 조인포인트 ( JoinPoint ) 포인트 컷 ( PointCut) 애스팩트 ( Aspect ) 인트로덕션 ( In.. 2023. 8. 25.
[Spring-Legacy] @Configuration 과 @Bean, @ComponentScan, @ImportResource 이전까지는 Xml을 만들어서 조립을 했는데, 이제는 만들지 않고 조립해보려고한다. @Configuration 과 @Bean ConfigMain ApplicationContext context 스프링 컨테이너를 나타내는 객체이다. 컨테이너는 빈을 생성하고 관리하며, 의존성 주입 등을 수행하는 역할을 한다. AnnotationConfigApplicationContext(ConfigDemo.class) ConfigDemo 클래스를 이용하여 애노테이션 기반의 스프링 컨테이너를 생성한다. ConfigDemo 클래스 내에 정의된 @Bean 메서드들을 이용하여 빈들을 생성하고 구성하게 된다. StateServer 데이터를 담아 줄 객체를 하나 생성했다. ConfigDemo @Configuration @Componen.. 2023. 8. 24.
[Spring-Legacy] @Service, @Autowired, @Qualifier 사용법 dao.xml 이 요소는 스프링 컨테이너가 어노테이션을 사용한 설정을 처리할 수 있도록 해준다. 스프링에서는 @Component, @Autowired, @Qualifier 등과 같은 어노테이션을 사용하여 빈의 생성과 의존성 주입을 설정할 수 있다. 이를 통해 어노테이션들을 스프링 컨테이너가 인식하고 적용하도록 도와준다. 이 요소는 지정된 패키지 아래에 있는 클래스들을 검색하고, 스프링의 컴포넌트 스캔 기능을 활용하여 자동으로 빈으로 등록할 수 있게 해준다. @Component, @Service, @Repository, @Controller 등과 같은 어노테이션을 가진 클래스들을 자동으로 스캔하여 빈으로 등록할 수 있다. DaoMain 'src/main/java/com/bit/di/basic4/dao.xm.. 2023. 8. 24.
[Spring-Legacy] properties를 이용해 데이터 출력하기 dbms.xml xml에 위 두개를 추가해주었다. DbmsSystem @Component를 이용해 객체를 만들었고, @Value를 통해 값을 직접 넣어주었다. @PostConstruct 메서드에 부착되는것으로, 빈이 생성되고 의존성 주입이 이루어진 후 호출된다. 주로 초기화 작업을 수행하는데 사용. 빈이 생성된 직후 호출되므로 해당 메서드에서 초기화 로직을 구현할 수 있다. @PreDestroy 메서드에 부착되고, 빈이 소멸되기 전에 호출된다. 주로 빈이 소멸되기 전에 정리작업을 수행하는데 사용된다. SystemMain 이후 main 메소드에서 출력해보면, @value에 직접 데이터를 넣은 값들이 조회되는 것을 확인해볼 수 있다. initDbms가 맨 위에 호출된 이유는 @PostConstruct 때문이.. 2023. 8. 23.
[Spring-Legacy] XML과 @Annotation을 이용해 데이터 출력하기 HTML 삽입 미리보기할 수 없는 소스 Book 이후, 객체에서 initBook() 메소드와 destroy() 메소드를 만들어 주었다. book.xml init-method : 빈이 초기화 될 때 호출될 메서드의 이름을 지정한다. 여기서 initBook 메서드가 초기화될 때 호출된다. destroy-method : 빈이 소멸될 때 호출될 메서드의 이름을 지정한다. 여기서 destroy 메서드가 빈이 소멸될 때 호출. BookMain ApplicationContext: ApplicationContext는 Spring의 IoC (Inversion of Control) 컨테이너를 나타내는 인터페이스이다. IoC 컨테이너는 빈의 생명주기를 관리하고 의존성 주입을 통해 객체를 생성하고 관리한다. 애플리케이션 컴포.. 2023. 8. 23.
[Spring-Legacy] 스프링 레거시 XML에서 빈(Bean) 정의해보기 스프링 레거시란? XML- based configuration 스프링 초기 버전에서 주로 XML 파일을 사용해 애플리케이션의 구성과 설정을 정의했다. 스프링 레거시 방식에서는 주로 ~~.xml과 같은 이름의 XML 파일을 생성하고, 이 파일 내에서 빈(Bean)정의, 의존성 주입(Dependency Injection), AOP 설정, 데이터소스 설정 등을 작성한다. Person 객체 Spring-legacy에서 Person이라는 객체를 만들어 생성자와 기본생성자, setter, getter를 만들어주었다. person.xml : 빈을 정의하는 태그이다. id : 빈의 고유한 식별자를 지정한다. 이 ID를 통해 빈을 참조할 수 있다. class : 생성할 빈의 클래스 경로를 지정한다. scope : 빈의 .. 2023. 8. 22.
[Spring] 스프링 프레임워크(POJO, PSA, IoC/DI, AOP) 개념 Spring Framework POJO란? Plain Old Java Object의 약자로 다른 클래스나 인터페이스를 상속받아 메서드가 추가된 클래스가 아닌 일반적으로 우리가 알고 있는 getter, setter와 같이 기본적인 기능만 가진 자바 객체이다 ex) CODE HTML 삽입 미리보기할 수 없는 소스 테스트하기 용이하며, 객체지향 설계를 자유롭게 적용가능 특정 환경이나 기술에 종속적이지 않은 객체지향 원리에 충실한 자바 객체 일반적인 자바 객체를 지칭하기 위한 별칭 PSA란? Portable Service Abstraction의 약자로 다양한 서비스 제공 업체의 기술과 구현을 추상화하고 표준화된 방식으로 사용할 수 있는 인터페이스를 제공한다. ex) CODE HTML 삽입 미리보기할 수 없는 소.. 2023. 8. 22.
[JavaScript] 클로저(closure) 클로저란? 자바스크립트 고유의 개념이 아니라 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 중요한 특성이다 자바스크립트의 중요한 개념 중 하나로, 함수와 그 함수가 선언된 렉시컬 스코프(lexical scope) 사이의 관계를 나타낸다. outerFunction 함수를 보면, alert창이 함수 안에 또 함수를 실행시켰을때 출력되는 코드를 확인할 수 있다. Click1 버튼을 누르면, 아무런 변화가 없다. Click2를 눌렀을 때야 말로, 'test innerFunction'이 알림창으로 뜨는것을 확인할 수 있는데, outerFunction으로 함수 내에 한번 접근한 후, 그곳에서 innerFunc라는 변수에 outerFunction을 이미 한번 접근한 상태에서 다시 한번 함수 내의 코.. 2023. 8. 21.
[Spring] 스프링 모듈 보호되어 있는 글 입니다. 2023. 8. 21.
자바(JAVA) - 전략 패턴(Strategy Pattern) - 2 자바(JAVA) - 전략 패턴(Strategy Pattern) 전략 패턴 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고, 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법. HTML 삽입 미리보기할 수 없는 소스 Character 클래 bright-landscape.tistory.com 전략 패턴은 정말 많이 쓰이면서도 기초적인 디자인 패턴 중 하나이다. 그래서 또하나 예를 들어 만들어보았다. 이전 게시글에서는 한 파일로 된 코드만 짰기 때문에 다시 한번 보았을 때 이해가 가지 않을 수 있기 때문에, 하나하나 순서를 통해 구현해보았다. 전략 패턴이란? 필요에 따라 변경이 필요한 알고리즘을 인터페이스를 통해 통째로 외부로 분리시키고, 이를 구현한 구체적인 알고리즘 클래스를 필요.. 2023. 8. 20.