프로그래밍/Spring 19

[Spring] 스프링 JPA 흐름, JPA 관련 질문 내용 정리

JPA의 매핑 관계를 설정할 때 조금 복잡한 상황을 보자. 12345@ManyToMany @JoinTable(name = "recipe_category", joinColumns = @JoinColumn(name = "recipe_id"), inverseJoinColumns = @JoinColumn(name = "category_id")) private Set categories = new HashSet();cs 다 대 다 관계에서 @ManyToMany를 썼다. John Tompson께서 이런 상황은 많이 발생하지 않는다고는 한다. 지금 보면 Recipe와 Category 두 테이블이 다 대 다 관계로 묶여있다. 그래서 처음에 @JoinTable에서 이름을 "recipe_category"로 정해주었다. 이..

[Spring] 스프링 Properties 관리하기

* 스프링 Properties 정의하기 스프링 resource폴더 안에 datasource.properties를 정의해주고 그 안에 값들을 정의해 준다. 이 값들은 java config인 annotation으로 가져올 수 있다. 1234567891011121314151617181920212223242526272829@Configuration@PropertySource("classpath:datasource.properties")public class PropertyConfig { @Value("${jay.username}") String user; @Value("${jay.password}") String password; @Value("${jay.dburl}") String url; @Bean publ..

[Spring] SpringFramework Configuration, 각종 스프링 관련 면접 질문

Spring Bean Scope 스프링 빈에는 Scope를 정의할 수 있다. singleton : 싱글톤 스코프, 별도지정이 없으면 default로 들어가게 된다. 멀티 스레드환경에서 동시 접근이 발생하므로 상태 관리가 중요하다. prototype : 요청마다 새 bean instance를 생성한다. 멀티 스레드 환경에서 singleton보다 관리가 수월하다. request : single instance per http request. session : single instance per http session. [질문 목록] * 스프링의 configuration option 은?XML, Annotations, Java, Groovy, DSL * SOLID 의 S 의 기능?Single Responsib..

[SpringOneTour] 스프링을 만든 Pivotal사가 한국을 방문했다!

나는 시간날 때마다 항상 세미나 목록을 찾아본다. 가서 여러 뛰어난 개발자들의 강연을 듣고 오면 동기부여도 되고 재밌기 때문이다. 얼마전에 학교 기숙사에서 잠들기전에 sns에서 강연을 찾다가 Spring One Tour를 보게 되었다. 세상에 내가 지금 공부하는 프레임워크를 만든 분들이 직접 오신다는데 엄청난 기회였다. 근데 봤을 때 당장 내일 모레였다. 게다가 마감...ㅠㅠ 아 이걸 왜 지금 봤을까..... 진짜 여태 갔던 모든 세미나들 중에서 제일 가고 싶은 마음이 컸었다. 그래서 혹시나 하고 이메일을 보내 "학생인데 자리 없으면 바닥에서라도 듣고 싶다"고 염치 없지만 한 번 여쭤본다고 메일을 보냈다. 정말 감사하게도 자리는 줄 수 있다고 허락해주셨다. 진짜 너무 기뻤다. 목요일은 학교 풀 수업 날이..

[IntelliJ] 스프링 프로젝트 초기 세팅하기 - (1)

인텔리J를 실행한다. 처음 new Project를 선택 후 Maven을 골라준다. 넥스트 때린다. groupId와 artifactId는 본인이 원하는 대로 우측 하단에 메이븐 자동추가할 것인지를 묻는다. 할 때마다 build하기 귀찮으므로 오토로 해준다. 그리고 pom.xml에 스프링에 관련된 dependency들을 추가해준다. org.springframework spring-webmvc 4.3.1.RELEASE org.springframework spring-web 4.3.1.RELEASE javax.servlet servlet-api 2.5 그럼 이렇게 External Libraries에 자동으로 jar파일들이 들어오게 된다. File -> Project Structure로 들어간다. Facets에 ..

Spring MVC

Spring MVC는 모델2 아키텍쳐와 FrontController 패턴을 프레임워크 차원에서 제공 사실 대부분의 MVC 프레임워크들은 Front Controller 패턴을 적용해서 구현 Spring MVC도 프러트 컨트롤러를 맨 앞단에 놓고 서버로 들어오는 모든 요청을 받아 처리하도록 구성 예외가 발생했을 때 일관된 방식으로 처리하는 것도 프런트 컨트롤러의 역할 DispatcherServlet 클래스 Front Controller 패턴web.xml에 설정client로 부터 모든 요청을 전달 받음 개발자가 건드리는 일반 컨트롤러를 짠다. *** Spring MVC의 주요 구성 요소 Spring MVC기반 웹 앱 작성 절차 1. 클라이언트 요청을 받는 DispatcherServlet을 web.xml에 설정..

AOP

비지니스 로직과 부가기능을 처리하는 코드가 뒤섞이지 않게 AOP를 도입하여 부가기능을 도입하여 모듈화를 한다. AOP란? (Aspect Oriented Programming) 어플리케이션에서 관심사의 분리(기능의 분리)를 말한다. 즉, 핵심적인 기능에서 부가기능들을 분리한다. 분리한 부가기능을 Aspect라는 독특한 모듈형태로 만들어서 설계하고 개발하는 방법이다. Aspect?? Advice + Pointcut => Aspect 에스팩트는 싱글톤 형태의 객체로 존재한다. Advisor Advice + PointCut Weaving 위빙은 포인트컷에 의해서 결정된 타겟의 조인 포인트에 부가기능(어드바이스)를 삽입하는 과정AOP가 핵심기능(타겟)의 코드에 영향을 주지 않으면서 필요한 부가기능(어드바이스)을 ..

Spring JDBC & JdbcTemplate

JDBC는 모든 자바의 데이터 액세스 기술의 근간이 된다.ORM 기술들도 (Mybatis hibernate) 내부적으로는 DB와 연동을 위해 JDBC를 이용한다. 안정적이고 유연한 기술이지만 , low level 기술로 인식 되고 있다.간단한 SQL을 실행하는 데도 중복된 코드가 반복적으로 사용되며, DB에 따라 일관성 없는 정보를 가진 채로 Checked Exception으로 처리한다.장점 : 대부분의 개발자가 잘 알고 있는 친숙한 데이터 액세스 기술로 별도의 학습 없이 개발이 가능하다.단점 : Connection과 같은 공유 리소스들을 제대로 릴리즈 해주지 않으면 시스템 자원이 바닥나는 버그를 발생시킨다. Spring JDBC JDBC의 장점과 단순성을 유지하면서 기존의 단점을 보완하고 간결한 api..

IOC(제어의 역전)

스프링 프레임워크는 객체에 대한 생성 및 생명주기를 관리할 수 있는 기능을 제공하고 있다 IOC (Inversion of Control) 즉 개발자가 할 일을 프레임워크에서 대신한다는 뜻이다 1. IOC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리한다.2. POJO(Plain Old Java Object)의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다.3. 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡긴다. DL : 의존성 검색 => 저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 look up 한다DI : 의존성 주입 => 각 클래스간의 의존관계를 빈 설정 정보를 바탕으로 컨테이너가 자동으로 연결 해 주는 것setter inje..

반응형