WELD-001408: Неудовлетворенные зависимости для типа UserService с квалификаторами @Default в точке внедрения [BackedAnnotatedField] @Inject - PullRequest
1 голос
/ 17 января 2020

Я получаю ошибку, пока @Inject. Я не понимаю, почему.

Мой сервер приложений: GlassFi sh 4.1.2

Сервер выдает ошибку, когда я @Inject мой Class I создал

java.io.IOException: com.sun.enterprise.admin.remote.RemoteFailureException: Error occurred during deployment: Exception while loading the app : CDI deployment failure:WELD-001408: Unsatisfied dependencies for type UserService with qualifiers @Default at injection point [BackedAnnotatedField] @Inject private jobs.SignUpCDIB.userServiceat jobs.SignUpCDIB.userService(SignUpCDIB.java:0)

Сервер выдает ошибку, когда я @ Inject мой Class I создал

package jobs;

import services.UserService;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import java.io.Serializable;

@Named
@ConversationScoped
public class SignUpCDIB implements Serializable {

    private static final long serialVersionUID = 1L;

    @Inject
    private UserService userService;
}

Я пытаюсь внедрить его в другой класс, как:

package services;

import jobs.User;

public interface UserService {

    void save(User user);
}

UserService реализовать java класс

package services;

import jobs.User;

import java.io.Serializable;

public class UserServiceImpl implements UserService, Serializable {
    @Override
    public void save(User user) {

    }
}

Maven pom xml файл

<?xml version="1.0" encoding="UTF-8"?>
<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>groupId</groupId>
    <artifactId>loginTutorials1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.2.13</version>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>2.2.13</version>
        </dependency>

        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>

        <dependency>
            <groupId>javax.enterprise</groupId>
            <artifactId>cdi-api</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>
    </dependencies>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>```


1 Ответ

0 голосов
/ 17 января 2020

Причина появления этой ошибки очевидна из сообщения об ошибке, выдаваемого контейнером DI. Как видно из этого:

Unsatisfied dependencies for type UserService with qualifiers @Default at injection point

Контейнер уведомляет вас о том, что для запрошенной реализации нет бина, подходящего для внедрения (т. Е. UserService в этом случае).

Добавление аннотации @Singleton делает это видимым для контейнера DI и в то же время автоматически подходит для инъекции.

Рассматриваемая аннотация работает почти так же, как @ConversationScoped you иметь на вашем другом классе, хотя и с некоторыми различиями в области действия бина.

Я предлагаю вам прочитать подробное описание того, как обрабатываются бин и DI в целом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...