문제

I was reading a Wikipedia article about Java EE application servers here:

http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition#Java_EE_5_certified

It says that 2 APIs that Java App Services implement are:

javax.enterprise.inject
javax.enterprise.context

These both relate to application context and dependency injection JSR-299. I had never heard of these APIs before. Does Spring implement these APIs? Would it matter to anyone if they did?

도움이 되었습니까?

해결책

  • JSR-330 defines a set of annotations (javax.inject) that are to be used across different dependency injection frameworks. The specification was lead by Rod Johnson (from Spring), and Bob Lea from (Google Guice)
  • (partly) because of the spec leads, spring and guice support this set of annotations

This is the part of JavaEE that is used by spring.

The same set is used by JSR-299, which is lead by Gavin King from JBoss. However, JSR-299 (also known as CDI) uses javax.enterprise.inejct/context and is a whole new dependency-injection framework. It is based on ideas of spring, guice and seam, but is specified formally as a JSR and aims at covering many corner cases as well as smooth integration with other JavaEE parts.

JSR-299 defines both an API and SPI so that concrete implementations can be developed. Current implementations are JBoss Weld, Apache OpenWebBeans and Resin CanDI.

So, to answer your question - there is no direct relation between javax.enterprise.inject and spring.

다른 팁

Spring does support JSR-330's @Inject - it can be used in place of @Autowired (except that it doesn't have a required property).

You also need to have the JSR 330 jar on the classpath.

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-autowired-annotation

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top