SORU
30 HAZİRAN 2010, ÇARŞAMBA


Nasıl Bahar autowiring çalışır?

inversion of control (IoC) Spring nasıl çalıştığına dair biraz kafam karıştı.

UserService arabirim uygulayan Hizmet sınıfı UserServiceImpl aradım söylüyorlar.

Bu nasıl @Autowired olurdu?

Ve Controllers benim eylem, nasıl 8 ** bu hizmet instance bir ki?

Sadece aşağıdaki yapayım?

UserService userService = new UserServiceImpl();

CEVAP
30 HAZİRAN 2010, ÇARŞAMBA


İlk ve en önemlisi - tüm Bahar fasulye yönetilen - "" bir kap içine, "uygulama kapsamında". live

İkinci olarak, her bir uygulama bu bağlamda bir giriş noktası vardır. Web uygulamaları: bir Sunucu uygulaması, JSF kullanan bir el-çözümleyici, vb. Ayrıca, uygulama kapsamında önyüklenen ve tüm fasulye - autowired bulunduğu bir yer var. Web uygulamaları için bu başlangıç bir dinleyici olabilir.

Autowiring başka bir bean örneği istenilen alana bir fasulye örneği yerleştirerek olur. Her iki sınıf fasulye olmalıdır, yani uygulama çerçevesinde yaşamak tanımlanması gerekir.

""Uygulama kapsamında? yaşayan nedir Bu bağlamda anlamına gelirbaşlatırnesneler, sen değil. I. e. - asla new UserServiceImpl() - konteyner her bir enjeksiyon noktası bulur ve orada bir örnek ayarlar.

Kontrolörler, sadece şu var:

@Controller // Defines that this class is a spring bean
@RequestMapping("/users")
public class SomeController {

    // Tells the application context to inject an instance of UserService here
    @Autowired
    private UserService userService;

    @RequestMapping("/login")
    public void login(@RequestParam("username") String username,
           @RequestParam("password") String password) {

        // The UserServiceImpl is already injected and you can use it
        userService.login(username, password);

    }
}

Bir kaç not:

  • Senin 13 ** sınıflar*,* 16*,* 15 vb taranır, böylece <context:component-scan> etkinleştirmeniz gerekir. ek açıklamalar.
  • Spring-MVC uygulaması için giriş noktası DispatcherServlet, ama senden gizli, dolayısıyla uygulama kapsamında doğrudan etkileşim ve önyükleme sahne arkasında olur.
  • UserServiceImpl ayrıca bean olarak da <bean id=".." class=".."> @Service annotation kullanılarak tanımlanmalıdır. UserService, sadece uygulayıcı olacağı enjekte olacak.
  • @Autowired ek açıklama dışında, Bahar XML yapılandırılabilir autowiring kullanabilirsiniz. Bu durumda adı veya türü varolan bir fasulye bir eşleşen tüm alanları otomatik olarak fasulye enjekte alır. Aslında, herhangi bir yapılandırma olmadan alanları bağımlılıkları enjekte etmek autowiring ilk fikirdi. @Inject, @Resource gibi başka açıklamalar da kullanılabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Wills

    David Wills

    31 Aralık 2007
  • paulandstorm

    paulandstorm

    4 EYLÜL 2006
  • whatever

    whatever

    30 EYLÜL 2005