java geliştirici kılavuzu Azure İşlevleri
Bu kılavuz, Java kullanarak Azure İşlevleri geliştirmeyi başarmanıza yardımcı olacak ayrıntılı bilgiler içerir.
Java geliştiricisi olarak Azure İşlevleri yeniyseniz önce aşağıdaki makalelerden birini okumayı göz önünde bulundurun:
Başlarken | Kavramlar | Senaryolar/örnekler |
---|---|---|
Java işlevinin temelleri
Java işlevi, ek açıklamasıyla @FunctionName
dekore edilmiş bir public
yöntemdir. Bu yöntem bir Java işlevinin girişini tanımlar ve belirli bir pakette benzersiz olmalıdır. paketi, ile @FunctionName
ek açıklama ekli birden çok genel yönteme sahip birden çok sınıfa sahip olabilir. Azure'daki bir işlev uygulamasına tek bir paket dağıtılır. Azure'da işlev uygulaması, java işlevlerinizin dağıtım, yürütme ve yönetim bağlamını sağlar.
Programlama modeli
Tetikleyici ve bağlama kavramları Azure İşlevleri için temeldir. Tetikleyiciler kodunuzun yürütülmesini başlatır. Bağlamalar, özel veri erişim kodu yazmak zorunda kalmadan bir işleve veri geçirmenizi ve işlevden veri döndürmenizi sağlar.
Java işlevleri oluşturma
Java işlevleri oluşturmayı kolaylaştırmak için, belirli bir işlev tetikleyicisine sahip projeler oluşturmanıza yardımcı olmak için önceden tanımlanmış Java şablonlarını kullanan Maven tabanlı araçlar ve arketipler vardır.
Maven tabanlı araçlar
Aşağıdaki geliştirici ortamlarında Java işlev projeleri oluşturmanıza olanak tanıyan Azure İşlevleri araçları vardır:
Bu makaleler, tercih ettiğiniz IDE'yi kullanarak ilk işlevlerinizi nasıl oluşturabileceğinizi gösterir.
Proje iskelesi
Terminalden komut satırı geliştirmeyi tercih ediyorsanız, Java tabanlı işlev projelerini iskeleye eklemenin en basit yolu arketipleri kullanmaktır Apache Maven
. Azure İşlevleri için Java Maven arketipi şu groupId:artifactId: com.microsoft.azure:azure-functions-archetype altında yayımlanır.
Aşağıdaki komut, bu arketipi kullanarak yeni bir Java işlev projesi oluşturur:
mvn archetype:generate \
-DarchetypeGroupId=com.microsoft.azure \
-DarchetypeArtifactId=azure-functions-archetype
Bu arketipi kullanmaya başlamak için Bkz . Java hızlı başlangıcı.
Klasör yapısı
Azure İşlevleri Java projesinin klasör yapısı aşağıdadır:
FunctionsProject
| - src
| | - main
| | | - java
| | | | - FunctionApp
| | | | | - MyFirstFunction.java
| | | | | - MySecondFunction.java
| - target
| | - azure-functions
| | | - FunctionApp
| | | | - FunctionApp.jar
| | | | - host.json
| | | | - MyFirstFunction
| | | | | - function.json
| | | | - MySecondFunction
| | | | | - function.json
| | | | - bin
| | | | - lib
| - pom.xml
İşlev uygulamasını yapılandırmak için paylaşılan bir host.json dosyası kullanabilirsiniz. Her işlevin kendi kod dosyası (.java) ve bağlama yapılandırma dosyası (function.json) vardır.
Bir projede birden fazla işleviniz olabilir. Ancak işlevlerinizi ayrı jarlara koymayın. Tek bir işlev uygulamasında birden çok jar kullanılması desteklenmez. FunctionApp
Hedef dizindeki, Azure'daki işlev uygulamanıza dağıtılan dizindir.
Tetikleyiciler ve ek açıklamalar
İşlevler HTTP isteği, zamanlayıcı veya veri güncelleştirmesi gibi bir tetikleyici tarafından çağrılır. İşlevinizin bir veya daha fazla çıkış üretmek için bu tetikleyiciyi ve diğer girişleri işlemesi gerekir.
Giriş ve çıkışları yöntemlerinize bağlamak için com.microsoft.azure.functions.annotation.* paketinde yer alan Java ek açıklamalarını kullanın. Daha fazla bilgi için bkz . Java başvuru belgeleri.
Önemli
Azure Blob depolama, Azure Kuyruk depolama veya Azure Tablo depolama tetikleyicilerini yerel olarak çalıştırmak için local.settings.json bir Azure Depolama hesabı yapılandırmanız gerekir.
Örnek:
public class Function {
public String echo(@HttpTrigger(name = "req",
methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
String req, ExecutionContext context) {
return String.format(req);
}
}
azure-functions-maven-plugin tarafından oluşturulanlar function.json
şunlardır:
{
"scriptFile": "azure-functions-example.jar",
"entryPoint": "com.example.Function.echo",
"bindings": [
{
"type": "httpTrigger",
"name": "req",
"direction": "in",
"authLevel": "anonymous",
"methods": [ "GET","POST" ]
},
{
"type": "http",
"name": "$return",
"direction": "out"
}
]
}
Java sürümleri
Uygulamanızın Azure'da çalıştığı Java sürümü pom.xml dosyasında belirtilir. Maven arketipi şu anda Java 8 için yayımlamadan önce değiştirebileceğiniz bir pom.xml oluşturur. pom.xml'daki Java sürümü, uygulamanızı yerel olarak geliştirip test ettiğiniz sürümle eşleşmelidir.
Desteklenen sürümler
Aşağıdaki tabloda, işletim sistemine göre İşlevler çalışma zamanının her ana sürümü için desteklenen geçerli Java sürümleri gösterilmektedir:
İşlevler sürümü | Java sürümleri (Windows) | Java sürümleri (Linux) |
---|---|---|
4.x | 17 11 8 |
21 (Önizleme) 17 11 8 |
3.x | 11 8 |
11 8 |
2.x | 8 | yok |
Dağıtımınız için bir Java sürümü belirtmediğiniz sürece Maven arketipi, Azure'a dağıtım sırasında varsayılan olarak Java 8 olarak belirlenir.
Dağıtım sürümünü belirtme
Maven arketipi tarafından hedeflenen Java sürümünü parametresini -DjavaVersion
kullanarak denetleyebilirsiniz. Bu parametrenin değeri , 11
17
veya 21
olabilir8
.
Maven arketipi, belirtilen Java sürümünü hedefleyen bir pom.xml oluşturur. pom.xml'daki aşağıdaki öğeler kullanılacak Java sürümünü gösterir:
Öğe | Java 8 değeri | Java 11 değeri | Java 17 değeri | Java 21 değeri (Önizleme, Linux) | Açıklama |
---|---|---|---|---|---|
Java.version |
1.8 | 11 | 17 | 21 | Maven-compiler-plugin tarafından kullanılan Java sürümü. |
JavaVersion |
8 | 11 | 17 | 21 | Azure'da işlev uygulaması tarafından barındırılan Java sürümü. |
Aşağıdaki örnekler, pom.xml dosyasının ilgili bölümlerinde Java 8 ayarlarını gösterir:
Java.version
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<azure.functions.maven.plugin.version>1.6.0</azure.functions.maven.plugin.version>
<azure.functions.java.library.version>1.3.1</azure.functions.java.library.version>
<functionAppName>fabrikam-functions-20200718015742191</functionAppName>
<stagingDirectory>${project.build.directory}/azure-functions/${functionAppName}</stagingDirectory>
</properties>
JavaVersion
<runtime>
<!-- runtime os, could be windows, linux or docker-->
<os>windows</os>
<javaVersion>8</javaVersion>
<!-- for docker function, please set the following parameters -->
<!-- <image>[hub-user/]repo-name[:tag]</image> -->
<!-- <serverId></serverId> -->
<!-- <registryUrl></registryUrl> -->
</runtime>
Önemli
maven kullanarak kod derleme sırasında kullanılan JDK dizinine doğru ayarlanmış JAVA_HOME ortam değişkenine sahip olmanız gerekir. JDK sürümünün en az ayar kadar Java.version
yüksek olduğundan emin olun.
Dağıtım işletim sistemini belirtme
Maven, işlev uygulamanızın Azure'da çalıştığı işletim sistemini de belirtmenize olanak tanır. os
öğesini kullanarak işletim sistemini seçin.
Öğe | Windows | Linux | Docker |
---|---|---|---|
os |
windows |
linux |
docker |
Aşağıdaki örnekte, pom.xml dosyasının runtime
bölümündeki işletim sistemi ayarı gösterilmektedir:
<runtime>
<!-- runtime os, could be windows, linux or docker-->
<os>windows</os>
<javaVersion>8</javaVersion>
<!-- for docker function, please set the following parameters -->
<!-- <image>[hub-user/]repo-name[:tag]</image> -->
<!-- <serverId></serverId> -->
<!-- <registryUrl></registryUrl> -->
</runtime>
JDK çalışma zamanı kullanılabilirliği ve desteği
OpenJDK'nin Microsoft ve Adoptium derlemeleri Java 8 (Adoptium), Java 11, 17 ve 21 (MSFT) için İşlevler'de sağlanır ve desteklenir. Bu ikili dosyalar, Azure için OpenJDK'nin maliyetsiz, çok platformlu, üretime hazır dağıtımı olarak sağlanır. Java SE uygulamalarını oluşturmak ve çalıştırmak için gereken tüm bileşenleri içerir.
Yerel geliştirme veya test için OpenJDK veya Adoptium Temurin ikili dosyalarının Microsoft derlemesini ücretsiz olarak indirebilirsiniz. JDK'ler ve işlev uygulamalarıyla ilgili sorunlar için Azure desteği uygun bir destek planıyla sağlanır.
İşlev uygulamanızda Azure için Zulu ikili dosyalarını kullanmaya devam etmek istiyorsanız uygulamanızı uygun şekilde yapılandırın. Siteniz için Azul ikili dosyalarını kullanmaya devam edebilirsiniz. Ancak tüm güvenlik düzeltme ekleri veya iyileştirmeler yalnızca OpenJDK'nin yeni sürümlerinde kullanılabilir. Bu nedenle, uygulamalarınızın java'nın en son kullanılabilir sürümünü kullanması için bu yapılandırmayı kaldırmanız gerekir.
JVM'i özelleştirme
İşlevler, Java işlevlerinizi çalıştırmak için kullanılan Java sanal makinesini (JVM) özelleştirmenize olanak tanır. Aşağıdaki JVM seçenekleri varsayılan olarak kullanılır:
-XX:+TieredCompilation
-XX:TieredStopAtLevel=1
-noverify
-Djava.net.preferIPv4Stack=true
-jar
Plan türüne bağlı olarak aşağıdaki uygulama ayarlarından birini kullanarak JVM'ye başka bağımsız değişkenler de sağlayabilirsiniz:
Plan türü | Ayar adı | Yorum |
---|---|---|
Tüketim planı | languageWorkers__java__arguments |
Bu ayar, Tüketim planında çalışan Java işlevlerinin soğuk başlangıç sürelerini artırır. |
Premium plan Ayrılmış plan |
JAVA_OPTS |
Aşağıdaki bölümlerde bu ayarların nasıl ekleneceği gösterilmektedir. Uygulama ayarlarıyla çalışma hakkında daha fazla bilgi edinmek için Uygulama ayarlarıyla çalışma bölümüne bakın.
Azure portal
Azure portalında, veya JAVA_OPTS
ayarını eklemek languageWorkers__java__arguments
için Uygulama Ayarları sekmesini kullanın.
Azure CLI
Aşağıdaki seçenek örneğinde gösterildiği gibi, bu ayarları eklemek için -Djava.awt.headless=true
az functionapp config appsettings set komutunu kullanabilirsiniz:
az functionapp config appsettings set \
--settings "languageWorkers__java__arguments=-Djava.awt.headless=true" \
--name <APP_NAME> --resource-group <RESOURCE_GROUP>
Bu örnek, başsız modu etkinleştirir. değerini işlev uygulamanızın adıyla ve <RESOURCE_GROUP>
kaynak grubuyla değiştirin<APP_NAME>
.
Üçüncü taraf kitaplıkları
Azure İşlevleri üçüncü taraf kitaplıklarının kullanımını destekler. Varsayılan olarak, proje pom.xml
dosyanızda belirtilen tüm bağımlılıklar hedef sırasında mvn package
otomatik olarak paketlenir. Dosyada pom.xml
bağımlılık olarak belirtilmeyen kitaplıklar için, bunları işlevin kök dizinindeki bir lib
dizine yerleştirin. Dizine lib
yerleştirilen bağımlılıklar çalışma zamanında sistem sınıfı yükleyicisine eklenir.
com.microsoft.azure.functions:azure-functions-java-library
Bağımlılık varsayılan olarak sınıf yolu üzerinde sağlanır ve dizine eklenmesi lib
gerekmez. Ayrıca, azure-functions-java-worker burada listelenen bağımlılıkları classpath'e ekler.
Veri türü desteği
Giriş veya çıkış bağlamalarına bağlanmak için Düz eski Java nesnelerini (POJO'lar), içinde azure-functions-java-library
tanımlanan türleri veya Dize ve Tamsayı gibi temel veri türlerini kullanabilirsiniz.
POJO'lar
Giriş verilerini POJO'ya dönüştürmek için azure-functions-java-worker gson kitaplığını kullanır. İşlevlere giriş olarak kullanılan POJO türleri olmalıdır public
.
İkili veri
function.json alanı binary
olarak ayarlayarak dataType
ikili girişleri veya çıkışları byte[]
öğesine bağlayın:
@FunctionName("BlobTrigger")
@StorageAccount("AzureWebJobsStorage")
public void blobTrigger(
@BlobTrigger(name = "content", path = "myblob/{fileName}", dataType = "binary") byte[] content,
@BindingName("fileName") String fileName,
final ExecutionContext context
) {
context.getLogger().info("Java Blob trigger function processed a blob.\n Name: " + fileName + "\n Size: " + content.length + " Bytes");
}
Null değerler bekliyorsanız kullanın Optional<T>
.
Bağlamalar
Giriş ve çıkış bağlamaları, kodunuzun içinden verilere bağlanmak için bildirim temelli bir yol sağlar. bir işlevin birden çok giriş ve çıkış bağlaması olabilir.
Giriş bağlama örneği
package com.example;
import com.microsoft.azure.functions.annotation.*;
public class Function {
@FunctionName("echo")
public static String echo(
@HttpTrigger(name = "req", methods = { HttpMethod.PUT }, authLevel = AuthorizationLevel.ANONYMOUS, route = "items/{id}") String inputReq,
@TableInput(name = "item", tableName = "items", partitionKey = "Example", rowKey = "{id}", connection = "AzureWebJobsStorage") TestInputData inputData,
@TableOutput(name = "myOutputTable", tableName = "Person", connection = "AzureWebJobsStorage") OutputBinding<Person> testOutputData
) {
testOutputData.setValue(new Person(httpbody + "Partition", httpbody + "Row", httpbody + "Name"));
return "Hello, " + inputReq + " and " + inputData.getKey() + ".";
}
public static class TestInputData {
public String getKey() { return this.rowKey; }
private String rowKey;
}
public static class Person {
public String partitionKey;
public String rowKey;
public String name;
public Person(String p, String r, String n) {
this.partitionKey = p;
this.rowKey = r;
this.name = n;
}
}
}
Bu işlevi bir HTTP isteğiyle çağırırsınız.
- HTTP isteği yükü bağımsız değişkeni
inputReq
için olarakString
geçirilir. - Tablo depolama alanından bir girdi alınır ve bağımsız değişkenine
inputData
olarakTestInputData
geçirilir.
Bir toplu giriş almak için , , POJO[]
List<String>
veya List<POJO>
öğesine bağlayabilirsinizString[]
.
@FunctionName("ProcessIotMessages")
public void processIotMessages(
@EventHubTrigger(name = "message", eventHubName = "%AzureWebJobsEventHubPath%", connection = "AzureWebJobsEventHubSender", cardinality = Cardinality.MANY) List<TestEventData> messages,
final ExecutionContext context)
{
context.getLogger().info("Java Event Hub trigger received messages. Batch size: " + messages.size());
}
public class TestEventData {
public String id;
}
Yapılandırılan olay hub'ında yeni veriler olduğunda bu işlev tetiklenir. cardinality
olarak ayarlandığındanMANY
, işlev olay hub'ından bir toplu ileti alır. EventData
olay hub'ından işlevin yürütülmesi için öğesine TestEventData
dönüştürülür.
Çıkış bağlama örneği
kullanarak $return
dönüş değerine bir çıkış bağlaması bağlayabilirsiniz.
package com.example;
import com.microsoft.azure.functions.annotation.*;
public class Function {
@FunctionName("copy")
@StorageAccount("AzureWebJobsStorage")
@BlobOutput(name = "$return", path = "samples-output-java/{name}")
public static String copy(@BlobTrigger(name = "blob", path = "samples-input-java/{name}") String content) {
return content;
}
}
Birden çok çıkış bağlaması varsa, yalnızca biri için dönüş değerini kullanın.
Birden çok çıkış değeri göndermek için pakette tanımlı seçeneğini azure-functions-java-library
kullanınOutputBinding<T>
.
@FunctionName("QueueOutputPOJOList")
public HttpResponseMessage QueueOutputPOJOList(@HttpTrigger(name = "req", methods = { HttpMethod.GET,
HttpMethod.POST }, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
@QueueOutput(name = "itemsOut", queueName = "test-output-java-pojo", connection = "AzureWebJobsStorage") OutputBinding<List<TestData>> itemsOut,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
String query = request.getQueryParameters().get("queueMessageId");
String queueMessageId = request.getBody().orElse(query);
itemsOut.setValue(new ArrayList<TestData>());
if (queueMessageId != null) {
TestData testData1 = new TestData();
testData1.id = "msg1"+queueMessageId;
TestData testData2 = new TestData();
testData2.id = "msg2"+queueMessageId;
itemsOut.getValue().add(testData1);
itemsOut.getValue().add(testData2);
return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + queueMessageId).build();
} else {
return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
.body("Did not find expected items in CosmosDB input list").build();
}
}
public static class TestData {
public String id;
}
Bu işlevi bir HttpRequest
nesnede çağırırsınız. Kuyruk depolama alanına birden çok değer yazar.
HttpRequestMessage ve HttpResponseMessage
Bunlar içinde azure-functions-java-library
tanımlanır. Bunlar, HttpTrigger işlevleriyle çalışmak için yardımcı türlerdir.
Özelleştirilmiş tür | Hedef | Tipik kullanım |
---|---|---|
HttpRequestMessage<T> |
HTTP Tetikleyicisi | Yöntemi, üst bilgileri veya sorguları alır |
HttpResponseMessage |
HTTP Çıkış Bağlaması | 200 dışında bir durum döndürür |
Meta veri
Az sayıda tetikleyici, giriş verileriyle birlikte tetikleyici meta verilerini gönderir. Meta verileri tetikleye bağlamak için ek açıklama @BindingName
kullanabilirsiniz.
package com.example;
import java.util.Optional;
import com.microsoft.azure.functions.annotation.*;
public class Function {
@FunctionName("metadata")
public static String metadata(
@HttpTrigger(name = "req", methods = { HttpMethod.GET, HttpMethod.POST }, authLevel = AuthorizationLevel.ANONYMOUS) Optional<String> body,
@BindingName("name") String queryValue
) {
return body.orElse(queryValue);
}
}
Yukarıdaki örnekte , queryValue
HTTP isteği URL'sindeki http://{example.host}/api/metadata?name=test
sorgu dizesi parametresine name
bağlıdır. Kuyruk tetikleyicisi meta verilerinden bağlamayı Id
gösteren başka bir örnek aşağıda verilmiştır.
@FunctionName("QueueTriggerMetadata")
public void QueueTriggerMetadata(
@QueueTrigger(name = "message", queueName = "test-input-java-metadata", connection = "AzureWebJobsStorage") String message,@BindingName("Id") String metadataId,
@QueueOutput(name = "output", queueName = "test-output-java-metadata", connection = "AzureWebJobsStorage") OutputBinding<TestData> output,
final ExecutionContext context
) {
context.getLogger().info("Java Queue trigger function processed a message: " + message + " with metadataId:" + metadataId );
TestData testData = new TestData();
testData.id = metadataId;
output.setValue(testData);
}
Not
Ek açıklamada sağlanan adın meta veri özelliğiyle eşleşmesi gerekir.
Yürütme bağlamı
ExecutionContext
içinde tanımlanan azure-functions-java-library
, işlev çalışma zamanıyla iletişim kurmak için yardımcı yöntemler içerir. Daha fazla bilgi için ExecutionContext başvuru makalesine bakın.
Günlükçü
getLogger
İşlev kodundan günlük yazmak için içinde ExecutionContext
tanımlanan kullanın.
Örnek:
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
public class Function {
public String echo(@HttpTrigger(name = "req", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) String req, ExecutionContext context) {
if (req.isEmpty()) {
context.getLogger().warning("Empty request body received by function " + context.getFunctionName() + " with invocation " + context.getInvocationId());
}
return String.format(req);
}
}
Günlükleri ve izlemeyi görüntüleme
Java stdout ve stderr günlüğünün ve diğer uygulama günlüklerinin akışını yapmak için Azure CLI'yi kullanabilirsiniz.
İşlev uygulamanızı Azure CLI kullanarak uygulama günlüğü yazacak şekilde yapılandırma burada açıklanmaktadır:
az webapp log config --name functionname --resource-group myResourceGroup --application-logging true
İşlev uygulamanızın günlük çıkışını Azure CLI kullanarak akışla kaydetmek için yeni bir komut istemi, Bash veya Terminal oturumu açın ve aşağıdaki komutu girin:
az webapp log tail komutu, seçeneğini kullanarak çıkışı filtreleme seçeneklerine --provider
sahiptir.
Azure CLI kullanarak günlük dosyalarını tek bir ZIP dosyası olarak indirmek için yeni bir komut istemi olan Bash veya Terminal oturumu açın ve aşağıdaki komutu girin:
az webapp log download --resource-group resourcegroupname --name functionappname
Bu komutu çalıştırmadan önce Azure portalında veya Azure CLI'da dosya sistemi günlüğünü etkinleştirmiş olmanız gerekir.
Ortam değişkenleri
İşlevler'de, hizmet bağlantı dizesi gibi uygulama ayarları yürütme sırasında ortam değişkenleri olarak sunulur. kullanarak bu ayarlara System.getenv("AzureWebJobsStorage")
erişebilirsiniz.
Aşağıdaki örnek, anahtar adlı myAppSetting
uygulama ayarını alır:
public class Function {
public String echo(@HttpTrigger(name = "req", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) String req, ExecutionContext context) {
context.getLogger().info("My app setting value: "+ System.getenv("myAppSetting"));
return String.format(req);
}
}
Java İşlevlerinde bağımlılık ekleme özelliğini kullanma
Azure İşlevleri Java, başarmak için kullanılan bir teknik olan bağımlılık ekleme (DI) yazılım tasarım desenini desteklerSınıflar ve bağımlılıkları arasında Denetimin Ters Çevrilmesi (IoC). Java Azure İşlevleri, İşlev Uygulamalarınızdaki popüler Bağımlılık Ekleme çerçeveleriyle tümleştirmeye yönelik bir kanca sağlar. Azure İşlevleri Java SPI, FunctionInstanceInjector arabirimini içerir. Bu arabirimi uygulayarak işlev sınıfınızın bir örneğini döndürebilirsiniz ve işlevleriniz bu örnekte çağrılır. Bu, Spring, Quarkus, Google Guice, Hançer gibi çerçevelere işlev örneği oluşturma ve IOC kapsayıcısına kaydetme olanağı sağlar. Bu, işlevlerinizi doğal olarak yönetmek için bu Bağımlılık Ekleme çerçevelerini kullanabileceğiniz anlamına gelir.
Not
Microsoft Azure İşlevleri Java SPI Türleri (azure-function-java-spi), üçüncü tarafların Microsoft Azure işlevleri çalışma zamanıyla etkileşim kurması için tüm SPI arabirimlerini içeren bir pakettir.
Bağımlılık ekleme için işlev örneği enjektör
azure-function-java-spi functionInstanceInjector arabirimi içeriyor
package com.microsoft.azure.functions.spi.inject;
/**
* The instance factory used by DI framework to initialize function instance.
*
* @since 1.0.0
*/
public interface FunctionInstanceInjector {
/**
* This method is used by DI framework to initialize the function instance. This method takes in the customer class and returns
* an instance create by the DI framework, later customer functions will be invoked on this instance.
* @param functionClass the class that contains customer functions
* @param <T> customer functions class type
* @return the instance that will be invoked on by azure functions java worker
* @throws Exception any exception that is thrown by the DI framework during instance creation
*/
<T> T getInstance(Class<T> functionClass) throws Exception;
}
Bağımlılık ekleme çerçeveleriyle tümleştirmek için FunctionInstanceInjector kullanan diğer örnekler için bu depoya bakın.
Sonraki adımlar
Java geliştirme Azure İşlevleri hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:
- Azure İşlevleri için en iyi uygulamalar
- Azure İşlevleri geliştirici başvurusu
- tetikleyicileri ve bağlamaları Azure İşlevleri
- Visual Studio Code, IntelliJ ve Eclipse ile yerel geliştirme ve hata ayıklama
- Visual Studio Code kullanarak Java işlevlerinde Uzaktan Hata Ayıklama
- Azure İşlevleri için Maven eklentisi
- Amaç aracılığıyla işlev oluşturmayı kolaylaştırın
azure-functions:add
ve ZIP dosyası dağıtımı için bir hazırlama dizini hazırlayın.