yohjizzz's Blog

I'm a Programmer.

Spring 2.5 で Web 開発(3)Service編 〜@PostConstruct と @PreDestroy を利用する〜

まずはソースコード。ついでにJSR-250の @PostConstruct と @PreDestroy を使います。

x.service.LoginService

package x.service;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.springframework.stereotype.Service;

@Service // @Component とおんなじ。今後は @Service に特化した機能が実装されるかも○
public class LoginService { // POJO。

    public boolean login(String email, String password) {
        // ログイン判定処理・・・
        return true (or false);
    }

    @PostConstruct // コンテナがインスタンスを生成した直後に実行されます○
    public void init() {
        // インスタンスが生成された直後に実行すべき処理・・・
    }

    @PreDestroy // コンテナがインスタンスは破棄する直前に実行されます○
    public void destroy() {
        // インスタンスが破棄される直前に実行すべき処理・・・
    }

}

JSR-250(@Resource、@PostConstruct、@PreDestroy)は Java 6 から標準で利用できるようになっています。
ご注意ください○


続いて XML です。こちらは Controller 編のときと一緒です。

applicationContext.xml または {servlet.name}-servlet.xml

  <context:component-scan
    base-package="x.service"
    scoped-proxy="targetClass"
    use-default-filters="false">
    <context:include-filter
      type="annotation"
      expression="org.springframework.stereotype.Service" />
  </context:component-scan>

「context:include-filter」で @Service アノテーションが指定されているクラスのみを登録対象としています。