在非单例中使用@Async或@Scheduled

时间:2011-01-13 16:46:07

标签: java spring annotations

需要一些快速帮助。

  1. 是否有可能使用@Service注释的类成为非单例,我可以使用Clazz c = new Clazz();并创建新对象?

  2. 如果没有:是否可以在未使用@Async@Scheduled注释的类中使用@Component@Service

    < / LI>

    喝彩!

3 个答案:

答案 0 :(得分:2)

如果你想要一个非单例的,由spring管理的对象,用scope="prototype"(或@Scope("prototype")声明它。如果你想将原型范围的bean注入单例,你可以使用{ {1}}。每次调用方法时都会返回一个新对象。this is how it is done with xml

可以拥有使用aspectj weaver和lookup-method通过spring实例化的对象,但这不是我推荐的。

您可以在任何弹簧管理的bean上拥有@Configurable@Async。有多种方法可以定义它:注释(@Scheduled),xml配置或java配置。

答案 1 :(得分:1)

  1. @Service的好处是Spring会自动发现,实例化和管理bean。如果他们不是单身人士,那么这个注释就没有任何好处。

  2. 是。 @Async@Scheduled@Service@Component无关,

答案 2 :(得分:0)

是的,您可以实例化标记为@Service的类,只是因为Spring创建了它的单个实例并不意味着您无法创建其他实例。