jeudi 2 avril 2015

Spring MVC : Asynchronous giving beancurrently in creation exception

I am working on a Spring-MVC application in which I want to use @Async at-least for the methods which are fire-and-forget. When I try to use @Async and I have used @EnableAsync annotation too for class, the actions inside the method are not performed. When I add task executor in servlet-context.xml, then I get an error bean is getting currently created. I am new to Async, can anyone tell me how I can use it. Thanks. I am not using Eager loading btw. Error log :



Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'groupNotesService': Bean with name 'groupNotesService' has been injected into other beans [mattachService] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.


Code : GroupNotesServiceImpl :



@Service
@Transactional
@EnableAsync
public class GroupNotesServiceImpl implements GroupNotesService {

@Override
@Async
public void editGroupNote(GroupNotes mnotes, int msectionId) {
//Code to be executed, which is not getting executed
}

}


Servlet-context.xml :



<task:annotation-driven executor="executor" />
<task:executor id="executor" pool-size="20"/>

<mvc:annotation-driven />

<mvc:default-servlet-handler />

<resources mapping="/resources/" location="/resources/" />


If I remove any of the mvc lines above, I get a servlet.init() threw load exception error.


Also, Is it possible to use Async where I am returning int? I checked out the Future tag, but I don't know what modifications are required. Here is the method that returns int.



@Override
public int saveGroupNoteAndReturnId(GroupNotes mnotes, int msectionid) {
// saves note and returns its id.
}


Any help would be nice. Thanks a lot. :-)


Aucun commentaire:

Enregistrer un commentaire