WELD-001408: Unsatisfied dependencies for type ClassName with qualifiers

# 事象 : Unsatisfied dependencies for type HogeServiceMock with qualifiers @Mock
- 環境
    - Windows10 64bit バージョン1909
    - openjdk 11 2018-09-25
    - Eclipse IDE for Enterprise Java Developers Version: 2020-03 (4.15.0)
    - JSF 2.3.9

```bash:Payaraを起動したらエラーで起動できなかった
2020-07-17T10:21:26.264+0900|重大: Exception during lifecycle processing
org.glassfish.deployment.common.DeploymentException: CDI deployment failure:WELD-001408: Unsatisfied dependencies for type HogeServiceMock with qualifiers @Mock
  at injection point [BackedAnnotatedField] @Inject @Mock private com.example.project.service.factory.HogeServiceFactory.serviceMock
  at com.example.project.service.factory.HogeServiceFactory.serviceMock(HogeServiceFactory.java:0)
WELD-001475: The following beans match by type, but none have matching qualifiers:
  - Managed Bean [class com.example.project.service.mock.HogeServiceMock] with qualifiers [@Any @Default]
 -- WELD-001408: Unsatisfied dependencies for type HogeServiceMock with qualifiers @Mock
```

# 原因 : アノテーションがないから

```java:HogeServiceMock
/** Hogeサービス実装クラス(Mock). */
public class HogeServiceMock extends BaseServiceMock implements Serializable, HogeService {
```

```java:HogeServiceFactory
/** HogeサービスFactory. */
@ApplicationScoped
public class HogeServiceFactory extends BaseFactory<HogeServiceMock, HogeServiceImpl> {
```

### 対応 : アノテーションをつける

```java
/** Hogeサービス実装クラス(Mock). */
@Mock
@ApplicationScoped
public class HogeServiceMock extends BaseServiceMock implements Serializable, HogeService {
```





# 事象 : Unsatisfied dependencies for type HogeBean with qualifiers @Default
- 環境
    - Windows10 64bit バージョン1909
    - openjdk 11 2018-09-25
    - Eclipse IDE for Enterprise Java Developers Version: 2020-03 (4.15.0)
    - JSF 2.3.9

```bash:ダイアログのエラー
cannot Deploy app-name
deploy is failing=Error occurred during deployment:
 Exception while loading the app :
 CDI deployment failure:WELD-001408:
 Unsatisfied dependencies for type HogeBean with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private jp.co.ç.bean
  at jp.co.ponsuke.HogeController.bean(HogeController.java:0)
 -- WELD-001408: Unsatisfied dependencies for type HogeBean with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private jp.co.ponsuke.HogeController.bean
  at jp.co.ponsuke.HogeController.bean(HogeController.java:0).
 Please see server.log for more details.
```


## 原因 : CDIにBeanとして認識してもらえていないオブジェクトに`@Inject`をつけているから
> CDIでインジェクトするクラスは、何らかのスコープアノテーションを付けねばなりません。
> [わかりやすいJava EE ウェブシステム入門 - 秀和システム](https://www.shuwasystem.co.jp/book/9784798042169.html)

```java:HogeController.java
    /** 表示用bean. */
    @Getter
    @Inject
    private HogeBean bean;
```

スコープアノテーションもない・・・
Serializableインターフェースも実装していない・・・

```java:HogeBean.java
import lombok.Builder;
import lombok.Value;

@Value
@Builder
public class HogeBean {
    @NonNull
    Integer fileSize;

    @NonNull
    String extensions;
}
```

### 対応 : `@Inject`を削除する
そもそも付けなくても良かったので削除する。

```java:HogeController.java
    /** 表示用bean. */
    @Getter
    private HogeBean bean;
```

### 他の対応方法
いつかのために・・・`@Model`をつけたり`beans.xml`に書いたりしても対応できるらしい。
[jsf - WELD-001408: Unsatisfied dependencies for type Customer with qualifiers @Default - Stack Overflow](https://stackoverflow.com/questions/28352461/weld-001408-unsatisfied-dependencies-for-type-customer-with-qualifiers-default)