Skip to content
Advertisement

@Autowired and @Service working from controller but not from a different package

I need help understanding the concept behind @Autowired and @Service. I have a DAO defined with @Service and controller with @Autowired and everything seems fine, however, I use the same @Autowired in a different class then it does not work.

Example:

Service

JavaScript

Controller

JavaScript

The above all works fine. However, If I want to use MyService in a POJO then it just doesn’t work. Example:

JavaScript

Spring Config:

JavaScript

Advertisement

Answer

It is because your POJO class is not managed by spring container.

@Autowire annotation will work only those objects which are managed by spring (ie created by the spring container).

In your case the service and controller object are managed by spring, but your POJO class is not managed by spring, that is why the @Autowire is not producing the behavior expected by you.

Another problem I noticed is, you are using the @Service annotation in the DAO layer when spring has the @Repository annotation specifically created for this purpose.

Also it is not desirable to allow spring to manage the POJO classes since normally it will be data storage elements which has to be created outside the container.

Advertisement