우선적으로 자주쓰거나 중요한 어노테이션 위주로 정리할 예정이며, 추가적으로 사용하거나 알게되는 어노테이션이 있을 시 지속적으로 추가하여 기록할 예정입니다.

 

 

■ 어노테이션 이란?

 

일반적으로 스프링을 사용하다보면 @ 사인으로 시작하는 부분을 많이 볼 수 있는데, 이러한 것의 이름을 어노테이션 이라고 합니다. 어노테이션이 생기기 전에는 xml로 설정하여 관리 하였으나, 양이 너무 많아지면 관리 및 유지보수가 어려워 지는 단점이 있었습니다. 어노테이션이 생긴 이후부터는 사용과 관리가 매우 쉬워져 요즘은 대부분 어노테이션을 사용하여 개발을 합니다.

 

 

■ 어노테이션 의 종류

 

- @SpringBootApplication

Spring Boot 애플리케이션이 실행시 진입클래스를 가리키에 되는 어노테이션 입니다.

 

ex)

@SpringBootApplication
public class Application {
    public static void main(String arg[]){
        SpringApplication.run(Application.class, arg);
    }
}

 

- @RestController

view가 필요없는 API만을 지원하는 서비스에서 사용합니다. Spring에서 Controller 중 view로 응답하지 않는 Controller를 뜻합니다. 

 

ex)

@RestController
@RequestMapping("/v1/{mallId}/sales")
public class GiftishowRestApi {
  
   private final Logger logger = LoggerFactory.getLogger(getClass());

   @Autowired
   private GiftishowService giftishowService;

 

- @RequestMapping

Spring 컨트롤러의 URI 메소드를 정의하는데 쓰입니다. 요청받는 형식을 GET, POST, PATCH, PUT, DELETE 로 정의 할 수 있으며, 정의하지 않을경우 디폴트로 GET이 정의 됩니다.

 

ex)

@RestController
@RequestMapping("/v1/{mallId}/sales")
@Validated
public class AppInstallRestApi {

   @Autowired
   ApplicationService appService;

   @Autowired
   AppInstallService appInstallService;

   @Autowired
   MemberService memberService;

 

- @GetMapping, @PostMapping, @PatchMapping, @PutMapping, @DeleteMapping

각 매핑별로 Get을 예로 들면 위에서 설명한 @RequestMapping(Method=RequestMethod.GET) 와 같습니다.

각각의 형식별로 사용할 수 있습니다.

 

ex)

@GetMapping("/employees")
public List getAllEmployees() {
 return employeeRepository.findAll();
}

 

- @PathVariable

Http의 요청에 대해 매칭되는 request parameter값이 자동으로 매칭됩니다. 

 

ex)

@GetMapping("applications/{OsType}/application/{token}")
public ResponseEntity<?> getAppInstall(@PathVariable final String OsType
       , @PathVariable final String token, final ResponseMapper mapper) {
   AppInstall appInstall = appInstallService.getAppInstallByToken(mallId, token);
   if (appInstall == null) {
       mapper.mapFrom("result",false);
   }else{
       mapper.mapFrom("result",true);
       mapper.mapFrom("marketingAgreeYn", appInstall.getMktgReceiveAgreeYn());
          }
   return ResponseEntity.ok(mapper.getDto());
}

 

- @RequestBody

Http Post 요청에 대해서만 처리되며, Post 요청의 Request body에 있는 request message 의 값을 얻어와 매칭됩니다. 

 

ex)

@PostMapping("applications/application/{token}/agree")
public ResponseEntity<?> updateAppAgree(@RequestBody OpenApiDTO reqDto,
                                       @PathVariable final String mallId, @PathVariable final String token,
                                       final ResponseMapper mapper) {

   if (StringUtils.isBlank(reqDto.getValue("agreeYn", String.class))) {
       throw new BadRequestException("agreeYn must not be empty");
   }

   final AppInstall app = appInstallService.getAppInstallByToken(mallId,token);
   final AgreeYN ag = AgreeYN.valueOf(reqDto.get("agreeYn").toString());
   final Date today = new Date();

   if (app == null) {
       throw new NotFoundException("application not found");
   }

 

- @AutoWired

객체에 대한 의존성을 주입시키며, 해당 어노테이션을 사용할 시 스프링이 자동으로 값을 할당하게 됩니다. 일반적으로 Controller에서 DAO, Service를 주입시킬때 많이 사용합니다.

 

ex)

public class AppInstallRestApi {

   @Autowired
   ApplicationService appService;

   @Autowired
   AppInstallService appInstallService;

   @Autowired
   MemberService memberService;

   @Autowired
   MemberReceiveAgreeRepository repository;

 

- @Service

Service Implement에서 사용되며, 비즈니스 로직을 수행하는 클래스라는 것을 나타내는 용도이다.

 

@Service
@Transactional
public class MemberMyShopServiceImpl implements MemberMyShopService {

   private final Logger logger = LoggerFactory.getLogger(getClass());
  
   /* (non-Javadoc)
    * @see net.g1project.ecp.customer.service.MemberMyShopAService#createMyShopMember(java.lang.Long)
    */
   @Autowired
   private BWJPAQueryFactory factory;

   @Autowired
   private MemberMyshopHistRepository memberMyshopHistRepository;
...

 

 

 

'develop > Spring' 카테고리의 다른 글

Spring 이란? 간단 설명  (0) 2019.10.03

+ Recent posts