1

Apache felix scr アノテーションを使用して servicefactory を実装しようとしています。

@Component
@Service(serviceFactory = true)
@Properties(value = { @Property(name = "className", value = "interface1") })
public class Tinterfaceimpl1 implements Tinterface {

    @Override
    public void consumeService() {
        System.out.println("tinterfaceimpl1");
    }
}

上記のコードは正常に動作しています。しかし、@Component の目的は何ですか? コンポーネントとサービスの両方ではなく、サービスとして公開しようとしているためです。@Component を削除すると、状態が満足できなくなります。工場がコンポーネントとサービスの両方を使用することは本当に必須ですか? pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>TinterfaceImpl</groupId>
    <artifactId>TinterfaceImpl</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <version>2.3.5</version>
                <!-- <configuration>
                    <instructions>
                        <Import-Package>com.java.serviceeg.tinterface.Tinterface</Import-Package>
                    </instructions>
                </configuration> -->
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-scr-plugin</artifactId>
                <version>1.14.0</version>
                <executions>
                    <execution>
                        <id>generate-scr-scrdescriptor</id>
                        <goals>
                            <goal>scr</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        </build>
        <dependencies>
            <!-- Felix SCR annotations -->
            <dependency>
                <groupId>org.apache.felix</groupId>
                <artifactId>org.apache.felix.scr.annotations</artifactId>
                <version>1.9.6</version>
            </dependency>
            <dependency>
                <groupId>org.apache.felix</groupId>
                <artifactId>org.apache.felix.scr</artifactId>
                <version>1.6.0</version>
            </dependency>
            <dependency>
                <groupId>Tinterface</groupId>
                <artifactId>Tinterface</artifactId>
                <version>0.0.1-SNAPSHOT</version>
                <type>bundle</type>
            </dependency>
        </dependencies>
        <packaging>bundle</packaging>

</project>
4

1 に答える 1