공부/Spring 복습 24

스프링 MVC웹 서비스

# 아파치 다운로드 1. 아파치 톰켓 8.5버전을 다운로드한다 2. 이클립스와 연동하기위해 이클립스EE로 들어간다 3. window탭에 Show View 에 Other을 클릭후 server를 누르고 자기가 다운로드 받은 버전의 아파치를 누르고 next후에 브라우저에서 내가 아파치를 다운받은 경로를 지정해준후 피니쉬를 누른다 4. 서버에 약간에 설정이 필요한데 서버탭에서 다운받은 아파치를 더블클릭해준다 위의 사진과 같이 설정하면되는데 port name에 http가 8080이 디폴트값인데 이걸 8090으로 바꾸는 이유는 나중에 사용할 오라클이 오라클 내부적으로 http프로토콜에 포트번호가 8080이기때문에 두 프로그램이 부딪힐수 있어서 미리 방지하기 위해 바꿔주는 것이다. 그리고 서버탭에서 플레이(ctr +..

웹 프로그래밍 설계 모델

스프링 MVC 프레임워크 기반의 웹 프로그래밍 구조에 대한 학습 M : Model V : View C : Controller #웹 프로그래밍을 구축하기 위한 설계 모델 Model 1 클라이언트가 서버에 무언가를 요청했을때에 WAS(웹 어플리케이션 서버)에서 처리를 하고 데이터베이스에서 무언가에 대한 정보를 받아오고 다시 WAS에서 받아 UI처리 작업을 한 후에 다시 클라이언트에게 보내준다. 이 모든것을 나누지않고 하나의 파일로 처리하는것을 Moder 1 방식이라 한다 장점 : 하나의 파일 안에다 모든것을 짬뽕해서 넣기 때문에 개발속도가 빠르다 단점 : 유지보수가 힘들고 복잡도가 높아진다(알아보기가 힘들다) Model 2 클라이언트가 서버에 무언가를 요청했을때에 WAS에 Controller가 요청을 받아 ..

어노테이션을 이용한 스프링 설정 2.

Java 파일을 분리하여 관리하는 법을 알아보자 (기능별로 class를 나누어 관리하는 방법이라고 볼 수 있다) DTO, DAO, 서비스 관련 기능으로 보통 3가지 방법으로 나뉘어진다고 한다. MemberConfig1에는 dto MemberConfig2에는 dao MemberConfig3에는 서비스 관련 기능 으로 나누어 뒀다. 이때에 MemberConfig3에서 MemberConfig2에 메서드를 참조해야 하는데 사용할 수 있는 방법은 @Autowired(의존객체 자동 주입)를 사용할 수 있다 이제 이 클래스들을 사용하려면 스프링 컨테이너에 3개를 다 넣어야 하는데 이런 형식으로 넣어주면 된다. 위의 방법이 마음에 들지 않는다면 @Import({MemberConfig2.class, MemberConfi..

어노테이션을 이용한 스프링 설정방법 1.

스프링 설정파일 제작을 JAVA파일로 제작할 수 있는 방법에 대해서 알아보자. 1. class를 하나 만들어준다 2. @Configuration이라는 어노테이션을 사용하여주는데 클래스의 바깥쪽에 사용해준다 @Configuration public class Main{ } (스프링 컨테이너를 xml파일을 대신해 생성할 수 있어야한다는걸 명시해주는 어노테이션) 3.메소드를 만들어 사용한다 xml에서는 위와같이 빈 객체를 생성한다 그러나 java파일은 아래와 같이 메소드를 만들어야 한다. @Bean public StuderntDao studentDao(){ return new StudentDao(); } 메소드에 이름은 빈태그의 아이디 값과 같고 반환형은 객체의 데이터 타입과 같고 리턴타입은 xml태그와 동일한..

스프링 생명 주기(Life Cycle)

컨테이너와 빈이 언제 생성되고 소멸하는지 알아보자 # 스프링 컨테이너 생명주기 GenericXmlApplicationContext (객체명) = new GenericXmlAppicationContext("classpath:어딘가.xml"); 1.이 객체를 생성하는 순간 스프링 컨테이너가 만들어진다(생성시점) 생성되어지는 순간 빈들이 같이 생성된다 즉 컨테이너와 빈의 생성시점은 동일하다고 볼 수 있다. 2. getBean()을 이용한 빈 객체 이용 3. 컨테이너를 close(); 를 이용하여 소멸 이때에 컨테이너 안에있는 Bean객체도 같이 소멸 (메모리에서 날라간다.) 즉 빈 객체에 생명을 주는것은 스프링 컨테이너의 생명주기와 같다 # InitializingBean, DisposableBean 사용하기 ..

의존 객체 선택

오토와이어드를 썻을때에 동일한 데이터 타입의 빈 객체가 여러개 있다면 스프링 컨테이너에서는 누구를 주입해줘야 할지 했갈려한다 그렇기에 개발자가 선택을 해줘야한다. (자동 주입 대상 객체를 판단하지 못할경우 Exception발생) @Qualifier Qualifier 태그를 사용할 경우에 (예선통과자 우선자) 동일한 객체가 있을때에 어떤것을 먼저 사용하겠다 라고 명시하고 속성값을 넣어준다 @Injection 인젝션은 오토와이어드와 거의 비슷하게 어노테이션을 이용해서 의존 객체를 자동을 주입을 할 수 있다. 그러나 차이점이 있다면 오토와이어드의 경우 required속성을 이용해서 의존 대상 객체가 없어도 익셉션을 피할 수 있지만, 인젝션의 격우 required속성을 지원하지 않는다. (required란 re..

의존객체 자동 주입

# 의동객체 자동 주입이란 스프링 설정 파일에서 의존 객체를 주입할때 또는 태그로 의존 대상 객체를 명시하지 않아도 스프링 컨테이너가 자동으로 필요한 의존 대상 객체를 찾아서 의 대상 객체가 필요한 객체에 주입해 주는 기능이다. @Autowired 주입하려고 하는 객체의 타입이 일치하는 객체를 자동으로 주입한다. 컨테이너에 담겨있는 많은 빈 객체중에 객체 타입을 확인하여 자동으로 넣어준다. 라는 태그를 주어야 한다 이걸 사용하기위해서는 몇가지 네임스페이스와 스키마를 명시해 주어야한다 메서드, 프로퍼티, 생성자에 모두 사용이 가능하나 단 프로퍼티나, 메서드는 디폴트 생성자를 명시를 해줘야 한다. (이부분도 오타를 방지하기위해 기존의 것 에서 복붙을 이용하자) @Resource 객체의 동일한 이름을 확인하여..

스프링 설정 파일 분리

스프링은 많은 코드가 하나의 xml파일에 담겨질수 있기때문에 너무 길어져 가독성에 문제와 관리에 문제가 생길수 있기 때문에 효율적으로 파일을 분리하여 관리하는 방법에 관한 내용이다. 학사관리 시스템이 있다 이 시스템을 구성하는 xml파일에는 dao객체, 서비스객체,데이터베이스와 관련된 객체, 학사관리 시스템의 인포메이션 시스템을 담은 객체가 있다 이걸 한곳에 모아둔다면 정말 긴 코드가 되어 가독성이 떨어지고 관리가 힘들어 질 수 있다 그렇기에 이것을 기능별로 3가지로 분리한 것이고 분리를 하는것은 프로그래머의 몫 이라고 한다. 1. dao객체를 만드는 파일 2.데이터 베이스와 관련된 부분만 떼어내어 만든 파일 3.시스템을 관리하는 서비스기능이 있는 파일 분리한 파일은 배열을 이용하여 넣어주면 깔끔하다 S..

스프링 다양한 의존 객체 주입 방법

1. 생성자를 이용한 의존 객체 주입 (bean 태그를 이용하여 dao객체를 생성후에 constructor-arg ref="studentDao" 를 참조해라 라고 명시해준다) 2.setter를 이용한 의존 객체 주입 public void setJdbcUrl(String jdbcUrl) { this.jdbcUrl = jdbcUrl; } 자바에서는 이런식으로 setter을 이용하였다면 스프링에서는 이런 형식으로 이용해준다. property 태그안에 set을 때고서 소문자로 변경후 name 속성에 속성 값으로 넣어주고 매개변수로 들어온 값을 value속성에 속성 값으로 넣어 이용하여준다 2-1 public void setDevelopers(List developers) { this.developers = de..

스프링 DI(Dependency injection) 의존 주입

DI는 스프링만에 기능은 아니며 프로그래밍을 하는 방법중 하나이다. 배터리 일체형, 배터리 분리형 의 2종류 장난감이있는데 일체형은 배터리가 떨어지면 새로 장난감을 구입해야 하는 최악의 장난감이고 분리형은 배터리가 떨어지면 배터리면 교체하면된다 둘중 누가 효율적이냐 하면 당연히 후자이다 이것을 프로그램적으로 생각할때에 객체가 모든것에 엮여있다면... 예를들어 계산기로 표현하면 덧셈,뺄셈,나눗셈 기능 등... 이있는데 나누기는 소수점이 2자리만 표현되는데 나중에 계산기의 기능을 원하는 클라이언트가 와서 소수점 5자리로 바꿔달라 할때에 배터리 일체형처럼 묶여있다면 프로젝트를 다시 만들어야하는 수고를 겪어야 하는데 객체가 분리되어있다면 나눗셈의 객체부분만 새로 개발하여 바꿀수 있다. (이걸 프로그램의 유연성 ..

728x90