'What is the difference between @EJB of JEE and @Autowired of Spring?

What is the difference between @EJB of JEE and @Autowired of Spring Framework?

  • Are those the same thing?

  • And if not, which are the differencies?

I have seen the following as @EJB's definition which really looks like a @Autowired's one:

An enterprise bean (EJB) is a server-side component that encapsulates the business logic of an application.

The business logic is the code that fulfills the purpose of the application. It does not perform display of business data or perform operations directly on the database.



Solution 1:[1]

The @EJB is used to inject an EJB into another EJB, in the JEE world.
See: Should I use @EJB or @Inject

In Spring the equivalent injection is done by the use of @Autowired.
Example:

@Service
public class MyServiceImpl implements MyService {

}
@Controller
public class MyController{
    @Autowired MyService myService;
}

@Service is a Spring annotation for annotating a class at a service layer.
Other annotations: @Component, @Repository, @Controller, @Service.
See: What's the difference between @Component, @Repository & @Service annotations in Spring?

I would say:

  • @Component, @Repository, @Controller & @Service are closer to @Stateless or @Statefull, and
  • @EJB is similar to @Autowired

UPDATE @Autowired tells Spring framework to find dependecies for you. The @Inject annotation also serves the same purpose, but the main difference between them is that @Inject is a standard annotation for dependency injection and @Autowired is spring specific. See: https://javarevisited.blogspot.com/2017/04/difference-between-autowired-and-inject-annotation-in-spring-framework.html

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 CodeSlave