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ınFile``ı 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.