Spring Boot Essence - studiofu/brain GitHub Wiki
Quick Start
https://github.com/quantificial/springboot-book-essence
Code Snippet
AOP
@Around("@within(org.springframework.stereotype.Controller) ")
public Object simpleAop(final ProceedingJoinPoint pjp) throws Throwable {
try {
Object[] args = pjp.getArgs();
System.out.println("args:" + Arrays.asList(args));
Object o = pjp.proceed();
System.out.println("return :" + o);
return o;
} catch (Throwable e) {
throw e;
}
}
@Aspect
public class MyAspect {
/**
* ๅ็ฝฎ้็ฅ
*/
@Before("execution(* com.zejian.spring.springAop.dao.UserDao.addUser(..))")
public void before(){
System.out.println("ๅ็ฝฎ้็ฅ....");
}
/**
* ๅ็ฝฎ้็ฅ
* returnVal,ๅ็นๆนๆณๆง่กๅ็่ฟๅๅผ
*/
@AfterReturning(value="execution(* com.zejian.spring.springAop.dao.UserDao.addUser(..))",returning = "returnVal")
public void AfterReturning(Object returnVal){
System.out.println("ๅ็ฝฎ้็ฅ...."+returnVal);
}
/**
* ็ฏ็ป้็ฅ
* @param joinPoint ๅฏ็จไบๆง่กๅ็น็็ฑป
* @return
* @throws Throwable
*/
@Around("execution(* com.zejian.spring.springAop.dao.UserDao.addUser(..))")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("็ฏ็ป้็ฅๅ....");
Object obj= (Object) joinPoint.proceed();
System.out.println("็ฏ็ป้็ฅๅ....");
return obj;
}
/**
* ๆๅบ้็ฅ
* @param e
*/
@AfterThrowing(value="execution(* com.zejian.spring.springAop.dao.UserDao.addUser(..))",throwing = "e")
public void afterThrowable(Throwable e){
System.out.println("ๅบ็ฐๅผๅธธ:msg="+e.getMessage());
}
/**
* ๆ ่ฎบไปไนๆ
ๅตไธ้ฝไผๆง่ก็ๆนๆณ
*/
@After(value="execution(* com.zejian.spring.springAop.dao.UserDao.addUser(..))")
public void after(){
System.out.println("ๆ็ป้็ฅ....");
}
}
Controller
@RequestMapping("/endpoint") // define end point
@Function()
public @ResponseBody String say(String name){
return "hello "+name;
}
@GetMapping("/abc") // define endpoint for different http request
@PostMapping("/abc")
@PutMapping("/abc")
@DeleteMapping("/abc")
@PatchMapping("/abc")
@GetMapping(value="/consumes/a.json",consumes="application/json") // specify to allow to consume json only
$.ajax({
type: "get",
url: "/consumes/a.json",
contentType: "application/json",
...
});
@PostMapping(path = "/update.json", params = "action=save") // specify the required params
@PostMapping(path = "/update.json", headers = "action=save") // specify the required headers
@GetMapping(path = "/{userId}.json", produces = "application/json")
@ResponseBody
public User getUserById( @PathVariable Long userId) {} // use @PathVarible to map url variable
@GetMapping(path = "/{id}.json", produces = "application/json") // use @PathVariable to map url variable
@ResponseBody
public User getUserById( @PathVariable("id") Long userId) {}
Useful Annotation for bean
// PostConstruct after Spring init
@PostConstruct
public void init() {}
// call the method before the bean has been destroyed
@PreDestroy
public void cleanUp() {}
// Qualifier to reference the bean
@Service
@Qualifier("apple")
public class ExampleBean() {}
@Service
public AnotherBean() {
@Qualifier("apple") ExampleBean bean
}