본문 바로가기

Java/Spring

spring mvc 단위테스트 spring 3.2 부터 사용가능한 mockMvc이 활용된 단위테스트입니다.간단한 로그인으로 가정합니다. html아이디와 비밀번호를 넣고 로그인하는 화면입니다. Colored by Color Scriptercscontroller일치하는 정보 없으면 / 로 넘기고 있으면 다음 페이지로 넘어가게만 처리했습니다. @Controller@RequestMapping("/user/*")public class UserController { @Autowired private UserService service; @PostMapping("/login") public String login( @RequestParam("userId") String userId, @RequestParam("userPw") String user..
Common Spring boot Properties Common Spring boot Properties# ---------------------------------------- # CORE PROPERTIES # ---------------------------------------- debug=false # Enable debug logs. trace=false # Enable trace logs. # LOGGING logging.config= # Location of the logging configuration file. For instance, `classpath:logback.xml` for Logback. logging.exception-conversion-word=%wEx # Conversion word used when logging e..
@Transactional @Transactional@Transactional 어노테이션을 사용하면 트랜잭션 범위를 쉽게 지정할 수 있다. 트랜잭션 범위에서 실행하고 싶은 메서드에 어노테이션을 붙이면 메서드 안의 코드를 하나의 트랜잭션 범위에서 실행한다. 트랜잭션으로 묶인 쿼리 중 하나라도 실패하면 전체 쿼리를 실패한 것으로 판단하고 롤백(rollback)되며, 모두 성공적으로 동작하면 커밋(commit)하여 데이터베이스에 실제로 반영한다.설정트랜잭션 범위에서 실행할 메서드에 @Transactional 어노테이션을 붙인다.xml ... ... Colored by Color ScriptercsJava자바 설정을 이용할 땐 아래와 같다.@EnableTransactionManagementpublic class AppConfig { ....
init-method/destroy-method init-method/destroy-method스프링에서 Bean 속성으로 init-method와 destroy-method를 사용해 초기화 및 소멸 시 특정 동작을 수행할 수 있다. 수정이 불가해 InitializingBean 및 DisposableBean 인터페이스를 상속받을 수 없는 경우의 대안이 될 것이다. (일반적으로 상속보다 권장된다)예제아래와 같은 CustomerService 클래스가 있다.public class CustomerService{ String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public void..
@Autowired @Autowired@Autowired의 필수여부 지정@Autowired 어노테이션을 적용하면 반드시 주입할 의존 객체가 존재해야 한다. 만약 xml 설정파일에 해당하는 객체가 존재하지 않으면, @Autowired가 적용된 대상에 주입할 객체를 찾을 수 없기 때문에 Exception이 발생한다.Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userRepositoryUserDetailsService' defined in file [../UserRepositoryUserDetailsService.class]: Unsatisfied dependency expresse..
프레임워크란? 1. 프레임워크 "소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것" 프레임워크는 구체적이고 확장가능한 기반코드를 가지고 애플리케이션의 틀과 구조를 결정할 뿐만 아니라 개발자의 코드를 제어한다. 구조에 대한 일종의 가이드라인이라고 생각하자. (이미 규칙이 정해진) 확장 가능한 기반 코드 : 설계의 기반이 되는 부분을 기술 라이브러리 : 개발자가 코드를 확장하는 데 필요한 라이브러리 를 통합제공하는 형태가 프레임워크라고 할 수 있다. 2. 프레임워크 vs 라이브러리 쉽게말해 프레임워크는 내가 끌려가는 것이고 라이브러리는 내가 부르는 것이다. 라이브러리는 내가 필요할 때 가져다 쓰는 대상일 뿐이지만 프레임워크는 라이브러리에 일종의 뼈대처럼 ..
spring framework 개발환경 설정 spring framework 개발환경 설정 1. JDK 설치 : http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 설치 후 환경변수 설정: JAVA_HOME : jdk 경로 Path : %JAVA_HOME%\bin CLASSPATH : %JAVA_HOME%\lib 2. eclipse 설치 : https://www.eclipse.org/downloads/download.php?file=/oomph/epp/oxygen/R2/eclipse-inst-win64.exe혹은, STS 설치. STS 설치시 4,5번 생략가능. 3. Apache Tomcat 다운 후 압축해제 : https://tomcat.apache...
Container와 Bean의 Lifecycle / Scope 1. Container Lifecycle2. Bean LifecycleBean 초기화 과정에서 InitializingBean 인터페이스의 afterPropertiesSet() 가 호출되고, Bean 소멸 과정에서 DisposableBean 인터페이스의 destroy() 가 호출된다. 오버라이드해서 Bean 초기화 / 소멸 과정에 개입가능하고, student.destroy()와 같이 사용하여 컨테이너와 별개로 Bean만 소멸시킬 수도 있다. 혹은 Annotation을 사용할 수도 있다.@PostConstruct를 붙이면 초기화시 / @PreDestroy를 붙이면 소멸시 해당 메소드가 호출된다. (메소드명은 관계없음) 3. Bean Scope스프링 컨테이너 / 빈이 생성될 때 빈은 Scope, 범위를 갖고 ..