๋ฐ์ํ
์คํ๋ง ํ๋ ์์ํฌ 5์ ์ถ๊ฐ๋ Null ๊ด๋ จ ์ ๋ ธํ ์ด์
org.springframework.lang.*
- @NonNull
- @Nullable
- @NonNullApi (ํจํค์ง ๋ ๋ฒจ ์ค์ )
- @NonNullField (ํจํค์ง ๋ ๋ฒจ ์ค์ )
๋ชฉ์
- (ํด์ ์ง์์ ๋ฐ์) ์ปดํ์ผ ์์ ์ ์ต๋ํ NPE(NullPointerException)์ ๋ฐฉ์งํ๋ ๊ฒ
- null ์ฒดํฌ๋ฅผ ํ์ง ์์์ ์๊ธฐ๋ NPE ๋ฐฉ์ง
@NonNull
- org.springframework.lang.NonNull ์ฌ์ฉ
- ๋ฉ์๋ ํ๋ผ๋ฏธํฐ์ ๋ถ์ด๋ ๊ฒฝ์ฐ -> null ๊ฐ์ด ๋ค์ด์ค์ง ๋ชปํ๋๋ก ๋ฐฉ์ง
@Service
public class EventService {
@NonNull // (1)
public String createEvent(@NonNull String name){ // (2)
return "hello " + name;
}
}
- (1) Null์ ๋ฆฌํดํ๋ ๊ฒ์ ํ์ฉํ์ง ์์
- (2) name์ด null์ธ ๊ฒ์ ํ์ฉํ์ง ์์
@Nullable
public class Person {
@Nullable // (1)
public String name;
public void getName() {
return name; // (2)
}
}
- (1) name ๊ฐ์ null์ ํ์ฉํ๊ฒ ๋ค๋ผ๋ ์๋ฏธ
- (2) name์ด null์ด ํ์ฉ๋๋ฏ๋ก null์ด ๋ฆฌํด๋๋ ๊ฒ์ ์ธ์งํ๊ณ ์ฝ๋๋ฅผ ์ง์ผํ๋ค. (IDE ์์ค์์ ๊ฒฝ๊ณ ๋ฅผ ์ค)
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
EventService eventService;
@Override
public void run(ApplicationArguments args) throws Exception {
String event = eventService.createEvent("seunghan");
System.out.println(event);
}
}
๋ง์ฝ IDE์์ ์๋ฆผ์ฐฝ์ด ์๋ฌ๋ค๋ฉด ์๋ ์ค์ ์ฐธ๊ณ
๋๋ณด๊ธฐ
cmd + , ๋ฅผ ์ด์ฉํด ์ค์ ์ ๋ค์ด๊ฐ์
notnull - annotation Configure annotaion์ ๋ณด๋ฉด springframework์ ๋ํ Nullable์ด ์ถ๊ฐ๊ฐ ์๋์ด์๋ค.
org.springframwork.lang - Nullable, NonNull์ ์ถ๊ฐํด์ค๋ค.
AppRunner์์ argument๋ก null์ ์ฃผ๋ คํ๋ฉด ์ด๋ ๊ฒ ๋ฉ์ธ์ง๊ฐ ๋จ๊ฒ๋๋ค.
Returnํ์ ๋ NonNull์ด ์ ์ฉ์ด ๋์๊ธฐ ๋๋ฌธ์, ๋ฉ์ธ์ง๊ฐ ๋ฐ์ํ๋ค.
REFERENCES
๋ฐ์ํ