웹 & 프레임워크

Spring 스프링에서 에노테이션이란?

늘근이 2014. 6. 27. 14:26

이제 2.5부터 애노테이션이 태어났다

이놈은 소스가 아니고, 단순한 주석이 아니라

메타정보를 가지고있어서 이걸통해 안에 뭔가 검사한다던지 정보검사 가능해짐

소스안에 직접 설정하는 애노테이션으로 고고싱하자.

설정이 줄어든다고 느껴질것이다 왜그럴까?

이제 클래스에게 붙일것이니 확 줄어든다고 느끼는 것이다. 

애노테이션은 클래스위, 멤버변수위, 아무데나 고고싱할수있다.

 

xml에 기술했었던 그런것들은 줄어들게 되는데, 설정이 줄어든다고 생각할수도 있으나,

사실 이건 소스안에 있는거다. 그래서 유지관리가 어려워질수있다. 코드는 아니지만 소스의 애노테이션을 수정하기때문에, 애노테이션을 수정하게 되면 소스를 재컴파일한다는 소리기때문에 단점이라고 볼수있을것이다. 유지관리차원에서는 xml이 더 낫다

 

인원이 작고 고고싱할때는 소스코드에 설정하는게 나을수있는데 변경이 곧 컴파일로 고고싱하기때문에 클래스이름, 메서드이름을 타이핑안하는 장점도 있기때문에 호불호가 갈리는 편이다. 

 

내가 다짜면 두가지 방법을 거시기할수 있는데, 내가 라이브러리 형식으로 고고싱한다면 불론 설정을 바꿀때 xml을 써야하기 때문에 애노테이션기법은 지금까지 봐온 @override같은거다

 

에노테이션은 사실 근데 임의로 작성하는게 아니라 

 

autowire ->type으로 찾고, 다시 이름을 한번 봐줌! 그니까 byType과 byName의 장점을 잘 흡수한것인듯

그냥 byType으로 해주면 spring자체 에러가 날것이다.

@Autowired라는 어노테이션으로 표시해주면 된다.

 

그리고 value, 즉 값을 주게 된다면 @Value

 

@Value("log.txt")

이렇게 하면됨. 값주임은 이렇게 안에 껏도 그냥 직접 주는거랑 근데 차이가없어서 효용성이없다.

 

<!-- 애노테이션을  분석해서 도우미를 해줌어노테이션읽어서 그에맞는 처리를 해주는

atAutowired atValue등등이런놈임근데 그렇게 하지말고 밑에 저거 한줄 추가하면

끝나는거다이런거  등록시켜!! 이렇게 되는 태그 하나임 ..! 이거 쓰고싶으면

밑의 메뉴에 가서 Namespaces -> context 추가시켜야 한다. -->

<context:annotation-config/>

 

                  <bean id="greeting" class="com.sample1.autowire.GreetingServiceImpl" />

 

                  <bean id="outputterConsole" class="com.sample1.autowire.OutputServiceImplConsole" />

                  <bean id="outputter" class="com.sample1.autowire.OutputServiceImplFile" />

 

 

</beans>

 

//타입을 체크해주고 이름을 같이 체크해주는 아주 상식적인 착한 놈이다 캬핫핫핫