Java applicationContext.xml中bean的声明
我对applicationContext.xml 在applicationContext.xml中,是否需要指定应用程序中的所有类? 例如。 在我的小型web应用程序中,我有一个实体类、服务类和DAO类。所以现在它的定义是Java applicationContext.xml中bean的声明,java,spring,hibernate,jsf-2,javabeans,Java,Spring,Hibernate,Jsf 2,Javabeans,我对applicationContext.xml 在applicationContext.xml中,是否需要指定应用程序中的所有类? 例如。 在我的小型web应用程序中,我有一个实体类、服务类和DAO类。所以现在它的定义是 <!-- Beans Declaration --> <bean id="Employees" class="net.test.model.Employees" /> <!-- User Service Declara
<!-- 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>
我有一个新的注解
@Inject
EmployeesService employeesService;
在EmployeesService中,我有如下注释
@Named
public class EmployeesService implements IEmployeesService {
@Inject
EmployeesDAO employeesDAO;
@Override
public List<Employees> getEmployees() {
return getEmployeesDAO().getEmployees();
}
获取空指针异常的错误做法是什么?理想情况下,可以使用另一种方法,这样您就不会在xml中添加多个条目 在applicationContext.xml中,我们是否需要指定 申请表 不需要。除非您需要一个原型(比如初始化它的值),否则像您的
net.test.model.Employees
那样声明模型类是毫无意义的,但您可以直接在类中这样做,然后实例化它
所以,如果我有多个实体、服务和dao类,我需要
在applicationContext.xml中提到所有这些类吗
正如我前面解释的,实体类no.Services和dao是可以的,因为大多数时候需要将dao注入服务(这就是DI的意义)。当然,如果您创建了3个DAO,并且希望将它们注入到3个服务中,那么请在SpringXMLBean定义文件中提及它们(您称之为applicationContext.XML
)
但是有一件事,您可能希望使用自动检测并避免在Bean定义文件中写入所有内容。应用程序上下文中的Bean声明是在应用程序容器中注册Bean 如果bean未注册,容器将无法依赖注入该类的任何实例,或将拦截器应用于该类的对象 因此,除非任何任务都不需要bean的引用,比如拦截它或注入它,或者创建它的默认单例对象,否则不需要在applicationContext.xml中声明它
希望这能有所帮助。谢谢你的建议。我已经修改了applicationContext.xml和Java bean。我已经在我的问题中添加了更新1。你能告诉我我做错了什么吗?感谢您的意见。我已经为我面临的问题创建了另一个。当做
@Named
public class EmployeesService implements IEmployeesService {
@Inject
EmployeesDAO employeesDAO;
@Override
public List<Employees> getEmployees() {
return getEmployeesDAO().getEmployees();
}
<context:component-scan base-package="net.test" />
java.lang.NullPointerException at
net.test.managed.bean.EmployeesManagedBean.getEmpList(EmployeesManagedBean.java:53)