컨트롤러
@RestController
@RestController = @Controller + @ResponseBody
컨트롤러에 위 어노테이션을 적용함
예시
@RestController
public class TestController {
}
@GetMapping, @PostMapping
Spring 레거시에서는 RequestMapping(value = "path" , method = RequestMethod.GET 또는 POST) 로 적용시켰는데
boot 에서는 위 두가지 어노테이션을 사용할 수 있다.
GET 요청일때는 GetMapping
POST 요청일때는 PostMapping
예시
@RestController
public class TestController {
@GetMapping("/test")
public String test() {
return "Hello world";
}
}
@PathVariable
만약 경로를 파라미터로 받고싶다
파라미터 변수 앞에 @PathVariable을 넣고 해당 변수를
Mapping경로에 {}안에 넣어주면 된다.
예시
@RestController
public class TestController {
@GetMapping("/test2/{var}")
public String varTest(@PathVariable("var") String var) {
return var;
}
}
위에서 파라미터의 var라는 변수명을 같게 쓸경우엔 PathVariable의 ("var")를 생략가능
생략한 후 코드 예시
@RestController
public class TestController {
@GetMapping("/test2/{var}")
public String varTest(@PathVariable String var) {
return var;
}
}
@RequestParam
파라미터값을 필수로 받고싶을땐 파라미터 앞에 @RequestParam를 추가해준다.
예시
@RestController
public class TestController {
@GetMapping("/req2")
public String getReq2(@RequestParam String name, @RequestParam String email) {
return name + "/" + email;
}
}
@Value
src -> main -> java -> resources -> application.properties 파일에
키, 값을 넣어서 글로벌 변수로 사용할 수 있다.
** properties **
global.guestId=A00001
global.siteName=sist.co.kr
** Controller **
@RestController
public class TestController {
@Value("${global.guestId}")
private String guestId;
@Value("${global.siteName}")
private String siteName;
}
lombok 활용
@data
VO 클래스 내부에 멤버변수만 선언하면
자동으로 getter , setter 를 생성해준다.
예시
@Data
public Class TestVO {
private String txt;
}
하지만 연산이 많이 들어간다고 한다.
@Getter, @Setter
그래서 이걸 더 선호한다.
둘 중에 하나만 필요한 경우도 있으니 그럴때 쓰기에도 좋다.
예시
@Getter
@Setter
public Class TestVO {
private String txt;
}
@AllArgsConstructor
전체 인자를 받는 생성자도 따로 만들 필요 없이 위에 어노테이션만 넣어주면 된다.
예시
@AllArgsConstructor
public Class TestVO {
private String txt;
}
@NoArgsConstructor
기본 생성자를 만드는 어노테이션
예시
@NoArgsConstructor
public Class TestVO {
private String txt;
}
@SneakyThrows
try~catch로 예외처리를 해야할 것을 명시적 예외처리를 생략할 수 있도록 함
예시
@SneakyThrows
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
}
DB관련
@Configuration
Java에서 Spring 프레임워크를 사용할 때 구성 클래스를 정의하기 위해 사용하는 어노테이션
예시
package com.sist.ex0725_db.config;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DBConfig {
}
@MapperScan
MyBatis 프레임워크를 사용할 때 MyBatis 매퍼 인터페이스를 스캔하고 등록하기 위해 사용하는 어노테이션
예시
package com.sist.ex0725_db.config;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan(basePackages = "com.sist.ex0725_db.mapper")
public class DBConfig {
}
@Bean
Spring 프레임워크에서 구성 클래스를 사용하여 메서드 수준에서 빈(Bean)을 정의하고 생성하기 위해 사용
JavaConfig에서 직접 정의된 메서드를 빈으로 등록하여, 스프링 컨테이너가 해당 빈을 관리할 수 있도록 함
예시
package com.sist.ex0725_db.config;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
@Configuration
@MapperScan(basePackages = "com.sist.ex0725_db.mapper")
public class DBConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
factoryBean.setMapperLocations(resolver.getResources("classpath:mapper/**/*.xml"));
return factoryBean.getObject();
}
}
'Spring boot' 카테고리의 다른 글
[Spring Boot] JWT 저장하기 (0) | 2024.08.09 |
---|---|
[Spring Boot] DB 비밀번호 저장 암호화 (0) | 2024.07.26 |
[Spring Boot] application.properties 파일 테스트용 생성 후 연결하기 (2) | 2024.07.25 |
[Spring Boot] 스프링 부트 환경세팅 (with. vscode) (2) | 2024.07.24 |