Java 관련/Spring Legecy

    [Spring] AOP(joinpoin, pointcut, advice, aspect, weaving)

    [Spring] AOP(joinpoin, pointcut, advice, aspect, weaving)

    AOP(Asperct Oriented Programming) : 관점 지향 프로그래밍 cc(core concern) -> 주 관심사항 ccc(cross cutting concern) -> 공통 관심사항 ​ joinpoint : ccc가 결합될 수 있는 모든 상황(메소드 호출 등) -인스턴스의 생성시점으로 메소드를 호출하는 시점이다. Exception이 발생하는 시점과 같이 애플리케이션이 실행될 때 특정 작업이 실행되는 시점을 의미한다.(Aspect를 플러그인 할 수 있는 애플리케이션의 실행 시점) ​ pointcut : ccc가 결합될 특정 joinpoint를 선언 -충고가 어떤 결합점에 적용되어야 하는지 정의한다. 명시적인 클래스의 이름, 메소드의 이름이나 클래스나 메소드의 이름과 패턴이 일치하는 결합..

    [Spring] AOP(cc / ccc) 관점 지향 프로그래밍

    [Spring] AOP(cc / ccc) 관점 지향 프로그래밍

    AOP(Aspect oriented Programming) AOP는 관점 지향 프로그래밍언어로 객체지향 프로그래밍의 뒤를 이은 또 하나의 프로그래밍 언어 구조입나다. (객체지향언어(OOP)를 안쓰고 AOP를 쓰는 것이 아니라 OOP도 쓰면서 AOP도 같이 씀) -문제를 해결하기 위한 핵심관심사항과 전체에 적용되는 공통관심사항을 기준으로 프로그래밍함으로써 공통모듈을 여러 코드에 쉽게 적용할 수 있도록 지원하는 기술 -공통으로 사용하는 기능들을 모듈화하고 해당 기능을 프로그램 코드에서 직접 명시하지 않고 선언적으로 처리하여 필요한 컴포넌트에 계층적으로 다양한 기능들을 적용 ​ CC(Core Concern) - 주 관심사항(핵심 관심사항) CCC(Corss Cutting Concern) - 공통 관심사항(Lo..

    [Spring] Annotation(@Component)

    [Spring] Annotation(@Component)

    @Component 클래스에 선언하여 해당 클래스를 자동으로 bean 등록. bean의 이름은 해당 클래스의 이름(첫글자 소문자) 범위는 디폴트로 singleton. @Scope로 지정 가능 ​ Annotation코드만 간단하게 보겠습니다. 우선 SamsongTv클래스와 IgTv클래스가 있다고 치면 @Component public class IgTv implements TV { } 해당 어노테이션은 IgTv를 Bean객체로 등록해주는 역할입니다. xml에서는 위와 같은 코드가 되겠네요! IgTV igTV = new IgTV(); 또 일반적인 자바 코드로는 위와 같은 코드입니다. ​ @Component("samsong") public class SamsongTv implements TV { } 해당 어노테..

    [Spring] Annotation(@Autowired, @Qualifier)

    [Spring] Annotation(@Autowired, @Qualifier)

    @Autowired Autowired annotation은 spring에서 의존관계를 자동으로 설정할 때 사용한다. 이 어노테이션은 생성자, 필드, 메서드 세곳에 적용이 가능하며 타입을 이용한 프로퍼티 자동 설정기능을 제공한다. 즉, 해당 타입의 빈 객체가 없거나 2개 이상일 경우 예외를 발생시킨다. ​ @Qualifier @Autowired annotation이 타입 기반이기 떄문에 2개 이상의 동일타입 빈 객체가 존재할 시 특정 빈을 사용하도록 선언한다. @Qualifier("beanName")의 형태로 @AutoWired와 같이 사용하며 메서드에서 두 개 이상의 파라미터를 사용할 경우에는 파라미터 앞에 선언해야 한다. ​ 좀 더 많은 어노테이션에 대한 설명은 Spring_14 스프링 어노테이션에 있..

    [Spring] Spring Annotation(스프링 어노테이션)

    [Spring] Spring Annotation(스프링 어노테이션)

    Spring annotation - 어노테이션은 자바 1.5부터 지원 - 스프링은 어노테이션을 이용하여 빈과 관련된 정보를 설정할 수 있다. - 일반적으로 @로 시작하는 것이 어노테이션이다. ​ Spring Framework에서 annotation을 사용하려면 다음과 같은 설정들을 필요로 한다. 1. CommonAnnotationBeanPostProcessor 클래스를 설정파일에 bean 객체로 등록한다. ​ 2. 태그를 이용한다. @Autowired, @Required, @Resource, @PostConstructor, @PreDestroy 등의 annotation을 자동 처리해주는 bean post processor ​ 3. 태그를 이용한다. @Component, @Controller, @Servi..

    [Spring] DI / IoC (Bean 객체_10) - MessageSourceAware

    [Spring] DI / IoC (Bean 객체_10) - MessageSourceAware

    MessageSourceAware는 번들이 지정된 properties 파일을 setMessageSource()로 전달한다. -> 메세지 국제화를 위해 사용 ResourceBundleMessageSource 의 setBaseName()을 통해 전달받은 파일을, setMessageSource()를 자동으로 호출하여 매핑하는 역할을 한다. ResourceBundleMessageSource와 MessageSourceAware는 쌍으로 사용한다. ​ ​ ​ testmessage_en.properties member.name=java member.birthplace=usa member.hobby=basketball,game member.age={0}:teenagers title=[member Information]..

    [Spring] DI / IoC (Bean 객체_10) - autowire

    [Spring] DI / IoC (Bean 객체_10) - autowire

    태그에는 autowire라는 속성도 있습니다. autowire 속성에 대한 값이 어떤게 들어가냐에 따라 출력 결과가 달라질수 있습니다. ​ autowire 1. byName : setter와 같은 이름의 bean(id/name) 이 있으면 자동 할당 2. byType : setter의 parameterType과 같은 type의 bean이 있으면 자동 할당 3. constructor : 생성자와 같은 이름의 bean이 있으면 자동 할당 4. default : 생성자에 할당할 수 있는지 확인 후, -> 없으면 setter에서 확인하여 할당 기본 생성자가 있으면 기본생성자 호출! 5. no : autowire속성을 안쓰겠다는 값입니다. ​ autowire를 테스트 해보기위해 간단한 예제를 보겠습니다. ​ 패키..

    [Spring] DI / IoC (Bean 객체_09) - 호출

    [Spring] DI / IoC (Bean 객체_09) - 호출

    이번에는 다양한 방법으로 bean객체에 값을 주입하고 호출해 볼예정입니다. ​ 우선 다음과 같은 구조의 패키지를 구성하겠습니다. ​ ​ Score.java package com.test01; public class Score { private String name; private int kor; private int eng; private int math; private int sum; private double avg; private String grade; public Score() { } public Score(String name, int kor, int eng, int math) { super(); this.name = name; this.kor = kor; this.eng = eng; this..

    [Spring] DI / IoC (Bean 객체 생성_08) - <bean>태그 속성

    [Spring] DI / IoC (Bean 객체 생성_08) - <bean>태그 속성

    lazy-init 속성을 알아보기전에 간단한 예제부터 보겠습니다. ​ TV라는 인터페이스와 이를 상속받는 IgTv, SamsongTv클래스가 있으며 applicationContext.xml의 역할을 해줄 BeanFactory클래스와 MTest클래스가 있습니다. ​ 패키지 구조 TV.java package com.test06; public interface TV { void powerOn(); void powerOff(); void volumeUp(); void volumeDown(); } IgTv.java package com.test06; public class IgTv implements TV { @Override public void powerOn() { System.out.println("ig t..

    [Spring] DI / IoC (Bean 객체 생성_07) - schema/c(c:), schema/p(p:)

    [Spring] DI / IoC (Bean 객체 생성_07) - schema/c(c:), schema/p(p:)

    DI / IoC를 위해 xml 파일을 만들때 Spring Bean Configuration File로 만들었었습니다! 파일 이름을 작성하고 Finish가 아니라 Next를 누르게 되면 뭔가가 많이 나와있죠? 다양한 속성을 사용할수 있도록 도와주는 역할을 합니다. 저희는 이번에 c: 속성과 p:속성을 사용하겠습니다! ​ p도 사용할 예정이지만 일단 c만 만들어서 Finish를 눌러볼까요?? ​ xml 파일이 만들어질때 뭔가가 한줄이 더 작성되어서 만들어졌습니다! 근데 아까 p속성도 사용한다고 했는데 왜 안했냐구요?? ​ 왼쪽 하단에 Namespaces가 있습니다! 클릭해주시고 혹시 이 창이 없으신 분들이라면 metadata를 삭제하고 다시 만들어보시고 그래도 안된다면 이클립스 버전을 업데이트 해보시기바랍니..