2

注釈を使用してサービスを作成しています:

@Service
@Repository
public class UserServiceImpl implements UserService {
  private String defaultPassword;

  @Autowired
  private UserRepository userRepository;

  // ...

  @Override
  public void setDefaultPassword(String defaultPassword) {
     this.defaultPassword = defaultPassword;
  }

  @Override
  public String getDefaultPassword() {
     return defaultPassword;
  }
}

アノテーション経由ではなく、Spring XML 構成を使用して値を構成したいdefaultPasswordので、XML 定義に以下を追加しました。

<bean id="userServiceImpl" class="com.test.service.UserServiceImpl">
   <property name="defaultPassword" value="youmustchangethis" />
</bean>

次に、次のようなテストを記述します。

public class UserServiceImplTest extends AbstractServiceImplTest {

  @Autowired
  private UserService userService;

  // ...
}

注釈と XML 宣言で Bean 名を一致させました (Bean id を使用)。私の質問は、XML とアノテーションの両方で構成された同じシングルトン Bean によって常にuserService変数が注入されるということですか? UserServiceImplTestドキュメントを検索しましたが、このような「ハイブリッド」アプローチの説明は見つかりませんでした。

4

1 に答える 1

4

この場合、xmlファイルで定義されたBeanは、アノテーションから生成されたBeanを上書きします。これは、最初の文字が小文字に変更されたクラス名に基づいて、SpringがアノテーションBeanに名前を付けるためです。明示的な名前を付けない限り。同じ名前のBeanが2つ存在することはできないため、xml定義がアノテーションの1つをオーバーライドします。

ここで呼び出されるシングルトンが1つになりuserServiceImplます。

于 2012-08-28T08:17:27.147 に答える