일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 정규식 컴파일
- gcc regex
- python subprocess
- telegraf
- c3 step graph
- subporcess path
- python os
- InfluxDB
- c3 축 가리기
- grafana dashboard
- c3 축 없애기
- influxdb 설치
- c3 초
- snmp test
- regex_search
- 정규식 활용
- c3 second
- python popen
- snmp
- gcc 업데이트
- linux시간으로 변경
- c++ 정규식
- 1697
- centos pyhon 설치
- selinux port 등록
- CentOS7
- 정규식 문자열 출력
- g++ 업데이트
- semanage
- 백준
- Today
- Total
목록Java(폐지)/spring 책 (11)
리셋 되지 말자
PSA(Portable Service Abstraction) 서비스 추상화의 예로 JDBC를 들 수 있다. JDBC라고 하는 표준 스펙으로 인해 오라클을 사용하던 MySQL을 사용하던 Connection, Statement, ResultSet을 이용해 공통된 방식으로 코드를 작성할 수 있다. 이처럼 DB의 종류에 관계없이 같은 방식으로 제어할 수 있는 이유는 디자인 패턴중 어댑터(변환기) 패턴을 활용했기 때문이다. 이처럼 어댑터 패턴을 적용해 같은 일을 하는 다수의 기술을 공통의 인터페이스로 제어할 수 있게 한 것을 서비스 추상화 라고 한다. Spring Framework에서는 서비스 추상화를 위해 다양한 어댑터를 제공한다. 예를 들어, OXM(Object XMI Mapping: 객체와 XML 매핑) 기..
관점 지향 프로그래밍 스프링 DI가 의존성(new)에 대한 주입이라면 스프링 AOP는 로직(code) 주입이라고 할 수 있다. 횡단 관심사와 핵심 관심사 횡단 관심사 예시1 입금, 출금, 이체 모듈에서 로깅, 보안, 트랜잭션 기능이 반복적으로 나타나는 것을 볼 수 있다. 프로그램을 작성하다 보면 이처럼 다수의 모듈에 공통적으로 나타나는 부분이 존재하는데, 바로 이것을 횡단 관심사라고 한다. 회당 관심사 예시2 - DB 연동 프로그램 DB 커넥션 준비 Statement 객체 준비 try{ DB 커넥션 연결 Statement 객체 세팅 insert / update / delete / select 실행 } catch ... { //예외처리 } catch ... { //예외처리 } finaly { DB 자원 반..
@Autowired @Resource 출처 스프링 프레임워크 표준 자바 소속 패키지 import org.springframework.beans.factory.annotation.Autowired; import javax.annotation.Resource; 빈 검색 방식 byType 먼저, 못 찾으면 byName byName 먼저, 못 찾으면 byType 특이사항 @Qualifier("") 협업 name 어트리뷰트 byName 강제하기 @Autowired @Qualifier("tire1") @Resource(name="tire1") 예시 코드 Car.java (@Resource의 byName 강제) ppackage expert006; import javax.annotation.Resource; publi..
의사 코드 운전자가 종합 쇼핑몰에서 자동차 구매를 요청한다. 종합 쇼핑몰은 자동차를 생산한다. 종합 쇼핑몰은 타이어를 생산한다. 종합 쇼핑몰은 자동차에 타이어를 장착한다. 종합 쇼핑몰은 운전자에게 자동차를 전달한다. 소스 코드 (Car.java의 @Autowired가 @Resource로 변경됨) Car.java package expert005; import javax.annotation.Resource; public class Car { @Resource Tire tire; public String getTireBrand() { return "장착된 타이어: " + tire.getBrand(); } }@Autowired vs @Resource @Autowired는 Spring의 어노테이션이고, @Reso..
의사 코드(이전과 동일) 운전자가 종합 쇼핑몰에서 자동차 구매를 요청한다. 종합 쇼핑몰은 자동차를 생산한다. 종합 쇼핑몰은 타이어를 생산한다. 종합 쇼핑몰은 자동차에 타이어를 장착한다. 종합 쇼핑몰은 운전자에게 자동차를 전달한다. Car 클래스와 tire 속성 Car라고 하는 클래스에 tire라고 하는 속성을 만들고 설정자 메서드를 만든다고 하면 보통 아래와 같은 코드가 나온다. TIre tire; public void setTire(Tire tire){ this.tire=tire; } @Autowired를 이용한 스프링의 속성 주입 방법 expert004 패키지 생성 후 Spring Bean Configure File 생성한 뒤 우클릭 -> Open With -> Spring Config Editor ..
의사 코드 - 점점 현실 세계 반영 운전자가 종합 쇼핑몰에서 자동차 구매를 요청한다. 종합 쇼핑몰은 자동차를 생산한다. 종합 쇼핑몰은 타이어를 생산한다. 종합 쇼핑몰은 자동차에 타이어를 장착한다. 종합 쇼핑몰은 운전자에게 자동차를 전달한다. 자바로 표현 ApplicationContext context = new ClassPathXmlApplicationContext("expert003/expert003.xml"); Car car = context.getBean("car", Car.class); XML로 표현 property라는 새로운 태그를 확인할 수 있다. 자바에서 접근자 및 설정자 메서드를 속성 메서드라고 하는데 영어로 속성은 Property다. Driver.java에서 car.setTire(tire..
의사 코드 운전자가 종합 쇼핑몰에서 타이어를 구매한다. 운전자가 종합 쇼핑몰에서 자동차를 구매한다. 운전자가 자동차에 타이어를 장착한다. 자바로 표현 - 속성 메서드 사용 ApplicationContext context = new ClassPathXmlApplicationContext("expert002/expert002.xml"); Car car = context.getBean("car", Car.class); Tire tire = context.getBean("tire", Tire.class); car.setTire(tire);소스 코드 - Driver.java를 제외한 파일들은 모두 동일 Driver.java (기존의 생산과정에서 구매 과정으로 변경됨) package expert002; import..
의사 코드 운전자가 타이어를 생산한다. 운전자가 자동차를 생산한다. 운전자가 자동차에 타이어를 장착한다. 앞의 코드의 문제점은 차를 만들고나면, 타이어를 교체 못하는다는 것이다. Tire tire1 = new KoreaTier(); Car car1 = new Car(tire1); 현실적인 방법은, 차 주인이 타이어를 교체하고 싶을 때 교체할 수 있도록 하는것! 이를 구현하기 위해서는 생성자가 아닌 속성을 통한 의존성 주입이 필요 자바로 표현 - 속성 접근자 메서드 사용 Tire tire = new new KoreaTire(); Car car = new Car(); car.setTire(tire); 시퀀스 다이어그램 클래스 다이어그램 소스코드 Car.java package expert001_03; publ..