gpt4 book ai didi

java - applicationContext.xml 中 bean 的声明

转载 作者:搜寻专家 更新时间:2023-11-01 02:12:56 25 4
gpt4 key购买 nike

我对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

受管Bean

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

我有注入(inject)注解

@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)

我做错了什么以获得空指针异常

最佳答案

In applicationContext.xml do we need to specify all the classes from the application?

没有。声明像 net.test.model.Employees 这样的模型类是没有意义的,除非你需要一个原型(prototype)来工作,比如初始化它的值,但你可以直接在类中这样做并实例化它。

So if I have multiple entity, service and dao classes do I need to mention all those classes in applicationContext.xml?

正如我之前解释的,实体类没有。服务和 DAO 都可以,因为大多数时候你需要将 DAO 注入(inject)到服务中(这就是 DI 的意义所在)。但是当然,如​​果您创建了 3 个 DAO 并且您希望将它们注入(inject)到您的 3 个服务中,那么请在您的 Spring XML Bean 定义文件(您称之为 applicationContext.xml)中提及它们。

但有一件事,您可能想使用 package scanning自动检测和 annotation based config避免在 Bean 定义文件中写入所有内容。

关于java - applicationContext.xml 中 bean 的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13795412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com