스프링

 

@Autowired ( 스프링 자동 주입 기능 ) 

설정하는 빈의 개수가 증가하면 한 개의 클래스 파일에 설정하는 것보다 영역별로 설정 파일을 나누면 관리가 편해짐

스프링은 한 개 이상의 설정 파일을 이용해서 컨테이너를 생성할 수있다. 

 

장점은 AppConf2에 주석 처리한 세터 메서드를 사용해서 의존 주입을 하지 않아도 스프링 컨테이너가 @Autowired를

붙인 필드에 자동으로 해당 타입의 빈 객체를 주입 한다. ( 세터 자동 주입 ) 

 

 

AppConf1

package config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import spring.MemberDao;
import spring.MemberPrinter;

@Configuration
public class AppConf1 {

	@Bean
	public MemberDao memberDao() {
		return new MemberDao();
	}
	
	@Bean
	public MemberPrinter memberPrinter() {
		return new MemberPrinter();
	}

	
}

 

AppConf2

package config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import spring.ChangePasswordService;
import spring.MemberDao;
import spring.MemberInfoPrinter;
import spring.MemberListPrinter;
import spring.MemberPrinter;
import spring.MemberRegisterService;
import spring.VersionPrinter;


@Configuration
public class AppConf2 {
	
	@Autowired
	private MemberDao memberDao;
	@Autowired
	private MemberPrinter memberPrinter;
	
	@Bean
	public MemberRegisterService memberRegSvc() {
		return new MemberRegisterService(memberDao);
	}
	
	@Bean
	public ChangePasswordService changePasswordService() {
		ChangePasswordService pwdSvc = new ChangePasswordService();
		pwdSvc.setMemberDao(memberDao);
		return pwdSvc;
	}
	
	@Bean
	MemberListPrinter listPrinter() {
		return new MemberListPrinter(memberDao, memberPrinter);
		
	}
	
	@Bean
	public MemberInfoPrinter infoPrinter() {
		MemberInfoPrinter infoPrinter = new MemberInfoPrinter();
//		infoPrinter.setMemberDao(memberDao);
//		infoPrinter.setPrinter(memberPrinter);
		return infoPrinter;
	}
	
	@Bean
	public VersionPrinter versionPrinter() {
		VersionPrinter versionPrinter = new VersionPrinter();
		versionPrinter.setMajorVersion(5);
		versionPrinter.setMinorVersion(0);
		return versionPrinter;
	}

}

 

 

설정 클래스가 두 개 이상일 때 스프링 컨테이너를 생성하는 코드

ctx = new AnnotationConfigApplicationContext(AppConf1.class, AppConf2.class);

 

 

 

 

@import 애노테이션 사용

두 개이상의 설정 파일을 사용하는 또 다른 방법은 해당 애노테이션을 사용하는 것 이다. 

 

package config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

import spring.MemberDao;
import spring.MemberPrinter;

@Configuration
@Import(AppConf2.class)
public class AppConfImport {
	
	@Bean
	public MemberDao memberDao() {
		return new MemberDao();
	}
	
	@Bean
	public MemberPrinter memberPrinter() {
		return new MemberPrinter();
	
		
	}
}

 

 

ctx = new AnnotationConfigApplicationContext(AppConfImport.class);

 

 

 

 

 

오라클

 

뷰(view) : 가상 테이블

목적

편리성 : SELECT문의 복잡도를 완화하기 위해 사용

보안성 : 테이블의 특정 열을 노출하고 싶지 않을 경우

 

 

 

뷰 생성

create view vw_view20
 as (select empno, ename, job, deptno
            from emp
        where deptno = 20 );

조인(join) 후 뷰 생성 

 

create view test_view
as
select empno, ename, job, sal, d.deptno, loc
 from emp_temp e, dept_temp d
 where e.deptno = d.deptno;

 

 

 

ROWNUM ( 테이블에 저장된 행 번호 붙혀서 출력 )

select rownum, ename, empno
 from emp

 

ROWNUM ( 인라인 뷰 ) 서브쿼리 사용 

select rownum, e.*
 from (select *
         from emp
          order by sal desc) e

 

 

ROWNUM ( 인라인 뷰 ) WITH절 사용

with e as (select * from emp order by sal desc)
select rownum, e.*
 from e

 

 

인라인 뷰로 TOP-N 추출하기 ( 서브쿼리 사용 ) 급여가 높은 상위 3명 출력 

select rownum, e.*
 from ( select *
        from emp
         ORDER by sal desc ) e
         where ROWNUM <= 3

 

 

 

'프로젝트 기반 자바(JAVA) 응용 SW개발자 취업과정' 카테고리의 다른 글

2023-07-31 52일차  (0) 2023.07.31
2023-07-28 51일차  (0) 2023.07.28
2023-07-26 49일차  (0) 2023.07.26
2023-07-25 48일차  (0) 2023.07.25
2023-07-24 47일차  (0) 2023.07.24

+ Recent posts