当我可以直接使用类名访问唯一的静态方法时,创建一个Spring bean是否有利

Kar*_*hik 12 java spring-bean

我想我对春豆的理解有点过时了.

我正在研究我的项目,我正在考虑这种情况.

说我上课了 Foo

class Foo(){   
   public void doSomething(Object a , Object b){ // input parameters does not matter actually.
      //do something
   }
}
Run Code Online (Sandbox Code Playgroud)

如果我在另一个类中使用此类,如:

class Scheduler{
  ....
 @Autowired
 private Foo foo;

 someMethod(){
    foo.doSomeThind(a,b);
 }
  ....
}
Run Code Online (Sandbox Code Playgroud)

在上面的情况下Foo,我可以使doSomeThing静态和直接使用而不是自动装配Foo.doSomeThing(a,b)

我只是想知道创建一个bean是否有任何优势,或者是否有使用这样的静态方法的任何缺点?

如果它们是相同的,我什么时候应该使用spring bean?何时应该使用静态方法?

Aiv*_*ean 6

静态方法适用于小型实用程序功能.静态代码的局限性在于,如果不更改代码本身,则无法更改其行为.

另一方面,Spring为您提供了灵活性.

  1. IoC.您的类不了解其依赖项的确切实现,它们只依赖于接口定义的API.所有连接都在配置中指定,对于生产/测试/其他可以是不同的.

  2. 元编程的力量.您可以通过仅标记它们来更改方法的行为(通过xml中的注释).因此,您可以在事务中包装方法,使其异步或调度,添加自定义AOP拦截器等.

  3. Spring可以检测您的POJO方法,使其成为远程Web服务/ RPC的端点.

http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/


Wan*_*ker 4

Spring bean 中的方法可以从依赖注入中受益,而静态方法则不能。因此,静态方法的理想候选者是或多或少独立地执行操作并且不需要任何其他依赖项(例如 DAO 或服务)的方法