4

applicationContext.xmlでのクラスの宣言について質問があります

applicationContext.xmlでは、アプリケーションからすべてのクラスを指定する必要がありますか? たとえば、私の小さな Web アプリケーションには、Entityクラス、Serviceクラス、およびDAOクラスがあります。したがって、現在は次のように定義されています

<!-- Beans Declaration -->
    <bean id="Employees"
        class="net.test.model.Employees" />

 <!-- User Service Declaration -->
    <bean id="
        EmployeeService" class="net.test.employees.service.EmployeeService">
        <property name="employeesDAO" ref="EmployeeDAOImpl" />
    </bean>

 <!-- User DAO Declaration -->
    <bean id="EmployeeDAO" class="net.test.employee.dao.EmployeeDAOImpl">
        <property name="sessionFactory" ref="SessionFactory" />
    </bean>

複数のエンティティ、サービス、および dao クラスがある場合、これらすべてのクラスについて言及する必要がありapplicationContext.xmlますか?

これに関する洞察は非常に高く評価されます。

よろしく

更新 1

ManagedBean

@ManagedBean(name="empMB")
@Named
@Scope("request")
public class EmployeesManagedBean implements Serializable {

そして、私は注釈を挿入しています

@Inject
EmployeesService employeesService;

EmployeesService には次のような注釈があります

@Named
public class EmployeesService implements IEmployeesService {

@Inject
EmployeesDAO employeesDAO;

@Override
public List<Employees> getEmployees() {
    return getEmployeesDAO().getEmployees();
}

そして最後に、私が持っているapplicationContext.xmlに

<context:component-scan base-package="net.test" />

今問題は、私が取得しているアプリケーションを実行するときです

java.lang.NullPointerException at
net.test.managed.bean.EmployeesManagedBean.getEmpList(EmployeesManagedBean.java:53)

nullpointer 例外を取得するために間違って何をしていますか?

4

3 に答える 3

4

applicationContext.xml では、アプリケーションからすべてのクラスを指定する必要がありますか?

net.test.model.Employeesいいえ。値の初期化など、プロトタイプを使用する必要がない限り、モデルクラスを宣言しても意味がありませんが、クラスで直接これを実行して、インスタンス化するだけです。

複数のエンティティ、サービス、および dao クラスがある場合、これらすべてのクラスを applicationContext.xml で指定する必要がありますか?

前に説明したように、エンティティ クラスはありません。ほとんどの場合、DAO をサービスに挿入する必要があるため (これが DI のポイントです)、サービスと DAO は問題ありません。ただし、もちろん、3 つの DAO を作成し、それらを 3 つのサービスに注入する場合は、Spring XML Bean 定義ファイル ( と呼ぶものapplicationContext.xml) でそれらを記述します。

ただし、パッケージ スキャンの自動検出と注釈ベースの構成を使用して、Bean 定義ファイルにすべてを書き込むことを避けることができます。

于 2012-12-10T05:28:10.697 に答える
2

アプリケーションコンテキストでのBean宣言は、Beanをアプリケーションコンテナに登録することです。

Beanが登録されていない場合、コンテナはそのクラスのインスタンスを依存性注入したり、クラスのオブジェクトにインターセプターを適用したりすることはできません。

したがって、Beanの参照は、Beanのインターセプトや注入、またはBeanのデフォルトのシングルトンオブジェクトの作成などのタスクに必要ない場合を除き、applicationContext.xmlで宣言する必要はありません。

お役に立てれば。

于 2012-12-10T08:40:35.413 に答える
0

理想的にはそうです。別の方法として、Spring Annotationsを使用して、xml に複数のエントリを追加しないようにすることができます。

于 2012-12-10T05:23:05.993 に答える