选择正确的春豆候选人。什么不该做什么

时间:2016-02-11 16:49:51

标签: spring spring-bean

去年当我开始学习春天时,我记得有一篇文章说明并非所有pojos都被定义为bean。所以我打算创建一个Web应用程序,说EmployeeMaintenance。 CRUD功能就在那里。我一定会最终创建像Employee,EmployeeSupplementaryDetails,Address等的pojos。我应该制作这些bean并在xml中配置它们或注释任何东西。我确信我对豆子的理解还不够。我知道Dbconn,服务等肯定应该被声明为bean。

我需要的是在制作一个Spring Bean之前我应该​​考虑的参数是什么。

1 个答案:

答案 0 :(得分:1)

使Java类成为Spring bean的一般规则是问自己是否需要将对象注入其他对象,或者是否希望对象由Spring组件管理。您列为示例的类似乎不适合作为Spring bean - 它们代表模型数据,并将作为某些服务的方法参数传递。 典型的CRUD应用程序bean的示例:

  • EmployeeService(您希望将其注入控制器或其他服务)
  • EmployeeRepository / EmployeeDao
  • EmployeeController(它将由Spring的MVC框架管理)

Spring bean是应用程序的构建块。假设您需要创建用于存储和管理员工记录(创建,检索,更新,删除)的Web应用程序。您需要的是Web控制器,它将处理多个操作的传入请求(EmployeeController)。好的做法是控制器不实现任何业务逻辑 - 它应该做的就是将工作委托给服务bean。所以你需要像EmployeeService这样的bean。然后控制器会要求服务做一些工作(给我员工列表/从数据库中移除John Smith /为Ann Jackson /等更改薪水)。因此服务将是控制器的依赖(服务注入控制器)。服务也可以有一些依赖项(比如存储库对象,它负责处理与数据存储的通信),这些依赖项将注入服务。依赖管理是Spring的核心功能。

面向对象编程的良好实践是拥有负责执行某种操作的小类。这些对象更容易测试和理解。您拥有的类越多,来自块的构建应用程序就越难,因此将其委托给像Spring这样的框架是值得的。如果没有Spring,你需要创建控制器类,然后在其中创建服务,然后在其中创建其他依赖项等等。 Spring为您做到了,所以您需要做的就是声明依赖项,它们将自动注入。如果要将服务的实现替换为另一个(例如,使用XML文件存储数据的存储库,存储数据存储在关系数据库中),那么您只需更改bean定义。

关于Spring管理的bean,典型的例子是数据库事务管理器(例如org.springframework.orm.jpa.JpaTransactionManager)。如果您定义了这样的bean,并声明哪些方法应该是事务性的,那么Spring将负责事务管理(将自动打开,提交或回滚事务)。