본문 바로가기
Develop/Spring

실습

by jaekk 2018. 6. 23.

 1. 기본 프로그램 완성 

 Board.java

 Write.java

 MainApp.java


 2. 강결합

 

 Write.java -> FreeWrite.java변경

 Board.java에서 일일이 코드 변경해주어야함

 board.java

 public void setWrite(Write write){
    this.write = write;
 } 

 public void setWrite(FreeBoardWrite write){

    this.write = write;

 }

 public Board(){

    this.setWrite(new Write());

 }

 public Board(){

    this.setWrite(new FreeBoardWrite write));

 }


 3. 약결합 - 팩토리메서드 디자인, 인터페이스

 팩토리메서드디자인 패턴으로 변경

 static 메서드가 내부적으로 객체 구현하여 반환

 반환할 객체만 변경해주면 Board.java에서 수정할 코드는 없다.

 public class Factory{

     public statis Write getWrite Instance(){
        retrurn new FreeBoardWrite();

     }

     public static Board getBoardInstance(){

        return new BoardCafe();

     }

 }

 Board board = Factory.getBoardInstance();


 public BoardCafe(){

    this.setWrite(Factory.getWriteInstance());

 }

 인터페이스를 작성하여 상속하도록 함


 4. Spring Application으로의 전환

 1. resource/spring/springcontext4.xml

 2. 빈 생성

    <bean id ="board" class="part4.BoardCafe"/>

 3. import org.springframwork.context.ApplicationContext;

      ....

    public static void main(String[] args){

        ApplicationContext ac = new GenericXmlApplicationContext;

        Board board = ac.getBean("board",Boardclass);

        board.boardWrite();

    }


5. @Autowired 이용한 DI

 1. 자동 주입 - type 기준

 2. 메서드

 3. 객체 


 6. @Qualifier 

 1. @Autowired

    @Qualifier("qnaWrite")


7. @Resource 

 1. 자동 주입 - name기준


 8. component-scan 

 1. <context:component-scan base-package="part9" />

 2. @Component("qnaWrite")


 9. 전처리기 

 

 <beans>    

    <context:annotation-config>

        <bean id="board" class="part5.BoardCafe" init-method="init"/>

 </beans>

 <beans>    

    <context:annotation-config>

        <bean id="board" class="part5.BoardCafe"/>

 </beans>

 @PostConstruct

 public void init(){

     this.setsBoardName("Free Board");

 }


 10. AOP 

 1. AOP 라이브러리 추가

 <dependency>

    <groupId>org.springframework</groundId>

    <artifactId>spring-aop</artifactId>

 </dependency>


 <dependency>

    <groupId>org.aspectj</groupId>

    <artifactId>aspectjweaver</artifactId>

    <version>1.8.9</version>

 </dependency>

 2. 

  <beans>

    <aop:config>

        <aop:aspect ref="profiler">

           <aop:pointcut id="publicMethod" expression="execution(public * part11..*(..))"/>

           <aop:around pointcut-ref="publicMethod" method="trace"/>

        </aop:aspect>

    </aop:config>

  </beans>


'Develop > Spring' 카테고리의 다른 글

[1.개발환경의 설정]2. 스프링 MVC 프로젝트 템플릿의 구조  (0) 2018.08.10
[1.개발환경의 설정]1.spring project 생성  (0) 2018.08.10
스프링  (0) 2018.07.24
스프링 정리2  (0) 2018.06.24
스프링 정리  (0) 2018.06.21

댓글