Bağımlılık Enjeksiyonu

Sponge bağımlılık enjeksiyonunu eklentilere API örnekleri sağlamak için kullanır. Bağımsızlık enjeksiyonu eklentilerin yapımdan sonra enjekte edilecek olan birkaç API türünü belirlemesine izin verir.

Eklenen Modellerin Geçici Listesi

ConfigDir (Yoldaki veya dosyadaki dipnot)

Eklentileri yapılandırma dizinine eklemek için kullanılır: ConfigDir#sharedRoot()`a bağlı olarak `./config/`` veya ./config/<Plugin#id>/

DefaultConfig (Yol, YapılandırmaYükleyicisi veya Dosyadaki dipnot)

Eklentilerin özel yapılandırma dosyasını eklemek için kullanılır: <Plugin#id>.conf

AssetId (annotation on Asset)

Used to inject a Asset from the asset folder of the plugin

AsynchronousExecutor (annotation on SpongeExecutorService)

Used to inject the plugin’s specific AsynchronousExecutor

SynchronousExecutor (annotation on SpongeExecutorService)

Used to inject the plugin’s specific SynchronousExecutor

ChannelId (annotation on ChannelBinding.IndexedMessageChannel or ChannelBinding.RawDataChannel)

Used to inject a ChannelBinding with the given channel id

Asset

Must be annotated with @AssetId.

SpongeExecutorService

Must be annotated with either @AsynchronousExecutor or @SynchronousExecutor. Depending on the annotation given this will contain a reference to the plugin’s specific Asynchronous or Synchronous Executor.

ConfigurationLoader<CommentedConfigurationNode>

@DefaultConfig ile açıklanmalıdır. Aynı açıklamanın File``ı için önceden oluşturulmuş bir ``ConfigurationLoader eklemek için kullanılır.

EventManager

Etkinlik sahiplerinin kayıtlarını ve etkinliklerin halledilmesini yönetir.

Dosya

Ya @DefaultConfig``ya da ``@ConfigDir ile açıklanmalıdır. Verilen açıklamaya bağlı olarak eklentinin varsayılan yapılandırma dosyasına ya da yapılandırma dosyalarını depolamak için kullanılan dizine bir dosya referansı içerecektir. Yol (aşağıda görebilirsiniz) tercih edilmelidir.

Game

The Game object is the core accessor of SpongeAPI.

GameRegistry

Bir ``Game``den modelleri geri almak için kolay bir yol sağlar.

GuiceObjectMapperFactory

Nesneleri yapılandırma düğümlerine eşleştirmenin daha kolay olması için Configurate tarafından sağlanan bir araç. Kullanılışı için :doc:`configuration/serialization`a göz atın.

Enjektör

com.google.inject.Injector Guice’ten kullanılabilir, eklentinizin bağımlılıklarını enjekte etmek için kullanılan bir enjektör. Onu bu sayfada listelenen Sponge’ın da sağladığı bağımlılıklarla birlikte kendi modülünüzle kendi sınıflarınıza enjekte etmek için bir çocuk enjektörü oluşturmakta ya da kendi sınıflarınızı yapılandırmada kullanabilirsiniz

Kaydedici

Kaydedilen mesajların gönderildiği eklentiyi belirlemek için kullanılır.

Yol

Ya @DefaultConfig``ya da ``@ConfigDir ile açıklanmalıdır. Verilen açıklamaya bağlı olarak eklentinin varsayılan yapılandırma dosyasına ya da yapılandırma dosyalarını depolamak için kullanılan dizine bir yol referansı içerecektir.

PluginContainer

Bir :javadoc:`Plugin`sınıfı wrapper’ı, daha kolay kullanım için açıklamadan bilgi almada kullanılır.

PluginManager

Uygulama tarafından yüklenen eklentileri yönetir. Diğer eklentinin ``PluginContainer``ını geri alabilir.

Enjeksiyon Örnekleri

Enjeksiyon olmadan alınması zor - veya, bazı durumlarda, imkansız - olan referanslar vardır. Her eklenti için kesinlikle aşırı derecede önemli olmayabilirken, çokta sık kullanılırlar.

Not

Eklenti yüklendiğinde Guice enjektörüyle örneklendiği gibi, nesnelerinizi ana sınıfla birlikte enjekte etmek için neredeyse her zaman onun en iyi uygulama olduğunu unutmayın.

Kaydedici

Tüyo

Eksiksiz bir rehber için :doc:`logging`i inceleyin, özellikle Logger için.

Oyun

The Game object is the opening for many of the internal functions of SpongeAPI, from the EventManager to the Server and even the Sync/Async Scheduler.

Game nesnesini Sponge.getGame() ile almak tamamen mümkünken, genellikle bir enjeksiyon ile elde edilir.

Örnek - Alan

import com.google.inject.Inject;
import org.spongepowered.api.Game;

@Inject
private Game game;

Örnek - Yöntem

private Game game;

@Inject
private void setGame(Game game) {
    this.game = game;
}

Örnek - Oluşturucu

Bu rehberin amacı için, “Elma” sınıf adıdır.

private Game game;

@Inject
public Apple(Game game) {
    this.game = game;
}

Yapılandırma Dizini

Yapılandırma dosyanızı elde etmek için önerilen yöntem, ConfigDir açıklamasıyla birlikte Guice’tir.

Tüyo

Eğer sharedRoot’u true olarak ayarlarsanız, ConfigDir’ınız -potansiyel olarak- diğer eklentilerin yapılandırmasını barındıran aynı dizin olacaktır. Çoğu durumda ConfigDir’i tutmak gerekli olduğunda, bu false olmalıdır.

Örnek - Alan

import org.spongepowered.api.config.ConfigDir;

import java.nio.file.Path;

@Inject
@ConfigDir(sharedRoot = false)
private Path configDir;

Örnek - Yöntem

private Path configDir;

@Inject
private void setConfigDir(@ConfigDir(sharedRoot = false) Path configDir) {
    this.configDir = configDir;
}

Örnek - Oluşturucu

Bu rehberin amaçları için, “Portakal” sınıf adıdır.

private Path configDir;

@Inject
public Orange(@ConfigDir(sharedRoot = false) Path configDir) {
    this.configDir = configDir;
}

VarsayılanYapılandırma

@DefaultConfig’in çalışma biçimi @ConfigDir’e çok benzer. En büyük fark @DefaultConfig``özel bir dosyayı gösterirken, ``@ConfigDir’in bir dizini göstermesidir.

Tüyo

Eksiksiz bir rehber için Eklentileri yapılandırma’i inceleyin, özellikle @DefaultConfig için.