Spring Boot Essence - studiofu/brain GitHub Wiki

Quick Start

https://github.com/quantificial/springboot-book-essence

Code Snippet

AOP

https://blog.csdn.net/javazejian/article/details/56267036#%E7%AE%80%E5%8D%95%E6%A1%88%E4%BE%8B%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8

	@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
}

Resources