2015-07-25 12 views
6

Myślę, że moje zrozumienie fasoli szparagowej jest nieco opóźnione.Czy jest korzystne utworzenie komponentu Spring bean, gdy mogę uzyskać dostęp do jedynej statycznej metody bezpośrednio z nazwą klasy

Pracowałem nad moim projektem i myślałem o tej sytuacji.

Say mam klasa Foo

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

Jeśli używam tej klasy w innej klasie, takich jak:

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

someMethod(){ 
    foo.doSomeThind(a,b); 
} 
    .... 
} 

w powyższym przypadku Zamiast autowiring Foo mogę zrobić doSomeThing statyczne i bezpośrednio używałam Foo.doSomeThing(a,b) Zastanawiam się, czy nie ma żadnej korzyści z tworzenia fasoli, czy też jest jakaś wada użycia takich statycznych metod?

Jeśli są one takie same, Kiedy powinienem wybrać fasolę szparaganą i kiedy powinienem zrobić to po prostu używając metody statycznej?

+0

Jeśli 'Foo' nie ma żadnego stanu i zawiera tylko" statyczne "metody, jest to bardziej klasa użytkowa. Nie ma sensu tworzyć fasoli 'Spring', ponieważ nie można tak naprawdę zamienić implementacji, jeśli' class' ma tylko 'static' metody. – CKing

Odpowiedz

1

Metody w fasoli szparagowej mogą korzystać z wtrysku zależności, podczas gdy metody statyczne nie mogą. Idealnym kandydatem do statycznej metody jest więc to, co robi wszystko mniej lub bardziej niezależnie i nie przewiduje, że będzie potrzebować jakiejkolwiek innej zależności (np. DAO lub usługi).

2

Metody statyczne są dobre dla małych funkcji użytkowych. Ograniczeniem kodu statycznego jest to, że nie można zmienić jego zachowania bez zmiany samego kodu.

Sprężyna zapewnia elastyczność.

  1. . Twoje zajęcia nie wiedzą o dokładnej implementacji ich zależności, po prostu opierają się na API zdefiniowanym przez interfejs. Wszystkie połączenia są określone w konfiguracji, która może być różna dla produkcji/testu/innych.

  2. Moc metaprogramowania. Możesz zmienić zachowanie swoich metod, po prostu zaznaczając je (poprzez adnotacje w xml). W ten sposób można zawijać metodę w transakcjach, dostosowywać ją asynchronicznie lub planowo, dodawać niestandardowe przechwytywacze AOP, itp.

  3. Spring może instrumentować metodę POJO, aby była punktem końcowym zdalnej usługi sieciowej/RPC.

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

1

Ludzie korzystają sprężyna nie z powodu jakichś wąskich konkretnych futures, które nie mogą być zastąpione przez klas statycznych lub di lub cokolwiek innego. Ludzie używają Springa z powodu bardziej abstrakcyjnych funkcji i pomysłów, które dostarcza z pudełka. Oto miłe cytat od Someone`s blog:

Następując niektóre z głównych świadczeń oferowanych w Framework wiosenny

  • sprężyna zapewnia programowanie POJO. Wiosna umożliwia programistom tworzenie aplikacji klasy korporacyjnej za pomocą POJO. Dzięki Spring możesz wybrać własne usługi i strukturę uporczywości.Programujesz w POJO i dodajesz do nich usługi korporacyjne za pomocą plików konfiguracyjnych. Budujesz swój program z POJO i konfigurujesz go, a reszta jest ukryta przed tobą.
  • Wiosna zapewnia lepszą dźwignię. Ze sprężyną można wykonać więcej pracy z każdą linią kodu. Kodujesz szybciej i utrzymujesz mniej. Nie ma przetwarzania transakcji. Spring pozwala na zbudowanie kodu konfiguracji do obsługi tego. Nie musisz zamykać sesji, aby zarządzać zasobami. Nie musisz wykonywać konfiguracji samodzielnie. Poza tym możesz zarządzać wyjątkami w najbardziej odpowiednim miejscu, bez konieczności zarządzania nimi na tym poziomie, ponieważ wyjątki są odznaczone.
  • Injection Injection pomaga w testowaniu. Wiosna znacznie poprawia Twoją zdolność do testowania poprzez wzorzec projektowania o nazwie Dependency Injection (DI). DI pozwala kodować zależność produkcyjną i zależność od testu. Testowanie aplikacji opartej na źródle jest łatwe, ponieważ całe powiązane środowisko i zależny kod jest przenoszony do środowiska.
  • Inwersja sterowania upraszcza JDBC. Aplikacje JDBC są dość szczegółowe i czasochłonne. Co może pomóc, to dobra warstwa abstrakcji. Dzięki Spring możesz dostosować domyślną metodę JDBC z zapytaniem i anonimową klasą wewnętrzną, aby zmniejszyć ciężką pracę.
  • Sprężyna koherencji. Wiosna to połączenie pomysłów w spójną całość, wraz z ogólną wizją architektoniczną ułatwiającą efektywne wykorzystanie, więc znacznie lepiej jest używać Springa niż tworzyć własne równoważne rozwiązanie.
  • Podstawa istniejących technologii. Wiosenna struktura oparta jest na istniejących technologiach, takich jak struktura logowania, framework ORM, Java EE, timery JDK, kwarc i inne technologie związane z wyświetlaniem.
Powiązane problemy