Spring Annotations

@RestController: RestController belirtimini kullandığınız sınıf artık RESTful sorgularını kabul eder hale gelir. Kullanım örneği; [code lang=”java”] @RestController public class MyController { } [/code] @RequestMapping: (@PostMapping, @GetMapping, @PutMapping) RequestMapping belirtimi ile ilgili metoda hangi rest adresi ile sorgu atılabileceğiniz ifade etmiş olursunuz. Kullanım örneği; [code lang=”java”] @RestController public class MyController { @RequestMapping("/") public String sayHello() { return "Hello!"; } } localhost:8080/my-context-path/ @RestController("/Report") public class MyController { @RequestMapping("/hello") public String sayHello() { return "Hello!"; } } localhost:8080/my-context-path/Report/hello @RestController("/Report") public class MyController { @RequestMapping(path = "/hello", ) public String sayHello() { return "Hello!"; } } localhost:8080/my-context-path/Report/hello @RestController("/Report") public class MyController { @RequestMapping(path = "/hello", method = RequestMethod.GET) public String sayHello() { return "Hello!"; } } localhost:8080/my-context-path/Report/hello @RestController("/Report") public class MyController { @RequestMapping(path = "/hello", method = RequestMethod.POST) public String sayHello() { return "Hello!"; } } POST localhost:8080/my-context-path/Report/hello @RestController("/Report") public class MyController { @RequestMapping(path = "/hello/{name}", method = RequestMethod.GET) public String sayHello(@PathVariable("name") String name) { return helloService.sayHello(name); } } localhost:8080/my-context-path/Report/hello/oguzhan @RestController("/Report") public class MyController { @RequestMapping(path = "/sendData", method = RequestMethod.POST) public ResponseEntity<?> sendData( @RequestParam("businessDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate businessDate, @RequestParam("storeId") int storeId ) { try { integrationService.sendData(businessDate, storeId); } catch (Exception e) { return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } return new ResponseEntity<>(HttpStatus.OK); } } localhost:8080/my-context-path/Report/sendData/2020-10-24/1100 [/code] @PathVariable: [code lang=”java”] @RequestMapping(path = "/sendData", method = RequestMethod.POST) public ResponseEntity<?> sendData( @RequestParam("businessDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate businessDate, @RequestParam("storeId") int storeId ) { try { integrationService.sendData(businessDate, storeId); } catch (Exception e) { return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } return new ResponseEntity<>(HttpStatus.OK); } [/code] @RequestParam: [code lang=”java”] @RequestMapping(path = "/save", method = RequestMethod.POST) public void save( @RequestParam(value = "businessDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate businessDate, @RequestParam(value = "storeCode", required = true) String storeCode) { mySaveService.saveData(businessDate, storeCode, true); } [/code] @RequestBody: RESTfull WS metodlarında RequestBody belirtimi HTTP isteğinin gövdesinde (body) gelen parametrenin elde edilmesi için kullanılır yani bu servisi call eden kişi tarafından bu parametrenin HTTP body kısmında gönderilmesi gerektiği belirtilmiş olur. Reference/Object tip ve ilkel tipler için kullanılabilir. Bu örnek için writer instance’ını göndermesine gerek yoktur. Kullanım örneği; [code lang=”java”] public void method01(@RequestBody String param01, Writer writer) { myService.myMethod(param01); } @RequestMapping(value = "/invoice", method = RequestMethod.POST) public void processInvoice(@RequestBody Invoice invoice) { return invoiceService.processInvoice(invoice); } @RequestMapping(value = "/invoice", method = RequestMethod.POST) public void processInvoice(@Valid @RequestBody Invoice invoice) { return invoiceService.processInvoice(invoice); } [/code] @RequestParam: baeldung.com Spring @RequestParam Annotation @ResponseBody: ResponseBody belirtimi RESTful WS metodlarında HTTP yanıtının dönüş değerini belirtmek için kullanılır. Reference/Object tip ve ilkel tipler için ve sayfa dönüşleri için de kullanılabilir. Kullanım örneği; [code lang=”java”] @ResponseBody public Account result() { } [/code] [code lang=”java”] public @ResponseBody Account result() { } [/code] [code lang=”java”] public @ResponseBody int result() { } [/code] Bu örnek “index” sayfasını döner. [code lang=”java”] public @ResponseBody String index() { return "index"; } [/code] @Repository Daha fazla bilgi için doküman. @Service @Autowired @Component @ControllerAdvice : Genel hata yakalamak için uyarlanabilir, @Component belirtiminin özelleştirilmiş halidir. Bu belirtim yapılmış sınıf içindeki metodlar tüm controller’lara uygulanmış olur. Örnein aşağıdaki gibi ExceptionHandler belirtimleri kullanılabilir. [code lang=”java”] @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity<RestMessage> handleArgumentNotValidException(MethodArgumentNotValidException ex, Locale locale) { BindingResult result = ex.getBindingResult(); List<String> errorMessages = result.getAllErrors() .stream() .map(objectError -> messageSource.getMessage(objectError, locale)) .collect(Collectors.toList()); return new ResponseEntity<>(new RestMessage(errorMessages), HttpStatus.BAD_REQUEST); } [/code] @Resource: Bean olarak tanımlanmış bir Repository veya Service’i kullanmayı sağlar. [code lang=”java”] @Resource YcnDao ycnDao; [/code] şeklinde Service, Facade veya Controller içerisinde kullanabilirsiniz, bu şekilde YcnService sınıfı içerisinde YcnDao’ya artık ycnDao.get şeklide ulaşılabilir. Bunun yanında XML olarak da aşağıdaki gibi bean’ler ile ilerlenebilir ve yine aynı şekilde myappExplodedPictureDao.get şeklinde artık ulaşılabilir. [code lang=”java”] public class DefaultMyappExplodedPictureService implements MyappExplodedPictureService { MyappExplodedPictureDao myappExplodedPictureDao; @Override public List<MyappExplodedPictureModel> getExplodedPictures(final String productStockCode, final String assyCode) { validateParameterNotNull(productStockCode, "Parameter ‘productStockCode’ was null"); validateParameterNotNull(assyCode, "Parameter ‘assyCode’ was null"); return myappExplodedPictureDao.findExplodedPictureList(productStockCode, assyCode); } @Required public void setMyappExplodedPictureDao(final MyappExplodedPictureDao myappExplodedPictureDao) { this.myappExplodedPictureDao = myappExplodedPictureDao; } } [/code] [code lang=”xml”] <!– Exploded Picture Service –> <alias alias="explodedPictureService" name="defaultMyappExplodedPictureService"/> <bean id="defaultMyappExplodedPictureService" class="net.yazilimcity.myapp.core.service.impl.DefaultMyappExplodedPictureService"> <property name="defaultMyappExplodedPictureDao" ref="explodedPictureDao"/> <!– dao reference –> </bean> <!– Exploded Picture Dao –> <alias alias="explodedPictureDao" name="defaultMyappExplodedPictureDao"/> <bean id="defaultMyappExplodedPictureDao" class="net.yazilimcity.myapp.core.dao.impl.DefaultMyappExplodedPictureDao" parent="composedTModelGenericDao"> <!– <constructor-arg value="MyappExplodedPictureModel"/> –> <!– Entity Name for GenericClass extends operation –> <property name="flexibleSearchService" ref="flexibleSearchService"/> <!– super flexibleSearchService –> </bean> [/code] Spring Boot annotation’larını anlatan başka yazılara aşağıdan ulaşabilirsiniz. examples.javacodegeeks.com /spring-boot-annotations-tutorial/ zetcode.com /springboot/annotations/]]>

Leave a Reply

Your email address will not be published. Required fields are marked *