Java

[Effective Java] ์•„์ดํ…œ 65. ๋ฆฌํ”Œ๋ ‰์…˜๋ณด๋‹ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ผ.

quedevel 2023. 3. 29. 10:58
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽฏ ์•„์ดํ…œ 65. ๋ฆฌํ”Œ๋ ‰์…˜๋ณด๋‹ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ผ.

๋ฆฌํ”Œ๋ ‰์…˜์€ ๋ณต์žกํ•œ ํŠน์ˆ˜ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์š”ํ•œ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ด์ง€๋งŒ, ๋‹จ์ ๋„ ๋งŽ๋‹ค. ์ปดํŒŒ์ผํƒ€์ž„์—๋Š” ์•Œ ์ˆ˜ ์—†๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•œ๋‹ค๋ฉด ๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค. ๋‹จ, ๋˜๋„๋ก ๊ฐ์ฒด ์ƒ์„ฑ์—๋งŒ ์‚ฌ์šฉํ•˜๊ณ , ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•  ๋•Œ๋Š” ์ ์ ˆํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ์ปดํŒŒ์ผํƒ€์ž„์— ์•Œ ์ˆ˜ ์žˆ๋Š” ์ƒ์œ„ ํด๋ž˜์Šค๋กœ ํ˜•๋ณ€ํ™˜ํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

@Before(VO_SETTING_EXPRESSION)
public void setVO(JoinPoint joinPoint) {
    Object[] objects = joinPoint.getArgs();
    if(SecurityContextHolder.getContext().getAuthentication()!= null) {
        InnoUser user = (InnoUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        AdminVO vo = user.getAdminVO();
        for (Object o : objects){
            Method[] methods = o.getClass().getMethods(); // ๋ฆฌํ”Œ๋ž™์…˜
            Optional<Method> setRegDtime = Arrays.stream(methods).filter(e->e.getName().equals("setRegDate")).findFirst();
            Optional<Method> setModDtime = Arrays.stream(methods).filter(e->e.getName().equals("setModDate")).findFirst();
            // ... ์ƒ๋žต
        }
    }
}

์ฐธ๊ณ  ์ž๋ฃŒ

Joshua Bloch, ใ€ŽEffective Java 3/Eใ€, ๊ฐœ์•ž๋งต์‹œ ์˜ฎ๊น€, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ธ์‚ฌ์ดํŠธ(2018)
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966262281&orderClick=LEa&Kc=

728x90
๋ฐ˜์‘ํ˜•