1. 기본 프로그램 완성 |
Board.java |
Write.java |
MainApp.java |
2. 강결합 | |
Write.java -> FreeWrite.java변경 |
|
Board.java에서 일일이 코드 변경해주어야함 |
|
board.java | |
public void setWrite(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(){ } 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 |
댓글