2019. 6. 26. 18:20ㆍSpring
--------------------------스프링 구성요소 (모듈 구성요소)--------------------
Core
- String Container 지원 모듈
spring-core.jar
spring-context.jar
spring-beans.jar
AOP
- 관점지향 프로그래밍 지원 모듈
spring-aop.jar
DAO
- 데이터베이스 엑세스 지원 모듈
spring-jdbc.jar
spring-tx.jar
ORM
- ibatis, JPA, Hibernate와 같은 데이터베이스엑세스를
연동을 지원하는 모듈
spring-orm.jar
Web
- MVC 패턴의 웹 애플리케이션 지원 모듈
spring-web.jar
spring-mav.jar
Test
- 당위테스트를 지원하는 모듈
spring-text.jar
///////////////////////////생성자 주입방법
Constructor Injection
생성자 메소드 정의하고,
태그를 사용해서 조립된 빈을 지정한다.
예시) 생성자(constructor-arg) 주입과 setter 주입 알아보기
demo6
Goodmorning.java
///////////////////////기본 자료형 연결하고 properties파일 사용하기
기본자료형 연결하기
기본자료형(boolean, int, doublie)과 문자열을 주입할때는
Setter 주입의 ref와 다르게 value 속성을 활용한다.
또한 properties파일을 사용할 경우 value에 ${...}표현식으로 넣어준다.
예시) 기본자료형 연결하기
demo7
EmailService.java
demo7.xml
※. context 추가하기
demo7.xml 하단의 Namespace 클릭 -> context 선택
아래처럼 추가된다.
mail-config.properties
※. 만약 값이 길어서 엔터를 해야한다면 마지막에 \를 쓰면 아래와 이어진다.
Demo7App.java
//////////////////////////Annotation 기반의 빈 설정, @Autowired
Annotation 기반의 빈 설정
- 스프링 프레임워크는 xml설정파일 대신 Annotation을 사용해서
빈 설정을 할 수 있다.
1. 빈 자동감지 지원 Annotation
- @Component, @Service, @Repository, @Controller등의
Annotation이 표시된 클래스는 XML 설정없이 자동으로 스프링의
빈(객체)로 등록된다.
※. Component : 범용적으로 사용된다.
Service : 업무로직에 붙인다.
Repository : DB관련에 붙인다.
Controller : 컨트롤러에 붙인다.
- Bean 설정 파일에 아래의 태그를 추가하고, 스캔할 클래스가
포함된 패키지 졍로를 설정한다.
* 상위패키지를 경로로 지정하면 하위 패키지의 클래스로 스캔한다.
2. 자동으로 빈 묶기(AutoWiring)
- @AutoWired, @Resource Annotation을 사용해서
스프링 컨테이너에 등록된 빙들을 자동으로 주입하는 것이다.
- @AutoWired는 클래스의 멤버변수, Setter메소드, 생성자에 붙일 수 있다.
- @AutoWired는 스프링 컨테이너에 등록된 빈들 중에서 같은 타입의 객체를 찾아서
자동으로 주입한다.
* 만약 같은 타입의 객체가 두 개이상 존재하면 에러가 발생한다.
* @Resource 를 써도 자동으로 되지만 사실 용도가 다르다.
- @Resource는 @AutoWired와 같은 동작을 수행한다.
@Resource(name="빈의 이름")과 같은 형식으로 정의하면
지정된 빈의 이름과 일치하는 빈이 조립된다.
예시)Annotation과 autoWiring 사용하기
HomeService.java
예시) resource 사용하기
OrderDao.java
예시) 기본자료형을 Annotation으로 등록하기
MailConnectService.java
mail-config.properties
실행결과
/////////////////////////스프링에서 jdbc사용하기
Spring의 데이터베이스 엑세스
1. 데이터베이스 엑세스에 필요한 Connection을 제공하는 ConnectionPool객체가 필요하다.
2. CRUD기능이 구현된 xxxTemplate 객체가 필요하다.
* 스프링은 데이터베이스 엑세스 작업에서 반복적으로 수행하는 작업을 미리 구현해놓은
템플릿클래스를 제공한다.
JDBC 기술 사용 - JdbcTemplate를 스프링의 빈으로 등록
ibatis 기술 사용 - SqlMapClientTemplate를 스프링의 빈으로 등록
jpa 기술 사용 - JpaTemplate를 스프링의 빈으로 등록
3. 데이터베이스 작업을 구현하는 DAO에는 xxxTemplate를 주입(제공)해야한다.
* DAO에서 xxxTemplate에 구현된 CRUD기능을 사용한다.
예시) 데이터베이스 연결해서 Job테이블 insert하기
Job.java
context.xml
jobDao.java
JobApp.java
실행결과 - 아래와 같이 두줄이 나오면 잘된것이다.