jsf或任何框架如何使用注释创建bean



jsf或任何框架如何使用注释创建bean?就像我们使用@ViewScoped时的jsf一样,它为每个视图创建bean,或者@RequestScoped为每个请求创建bean,它在内部是如何工作的?

这是我的理解:

为了便于解释,假设我们正在尝试创建这样的框架,它能够读取注释并动态地注入/创建bean。

第一部分,我们应该有自己的注释/必须遵循任何标准注释,如Java验证API JSR303

其次,我们应该在启动时读取注释,并将这些信息缓存在一些适合我们的集合中。如果是针对Web应用程序,我会创建一个监听器,并指示开发人员在启动应用程序时启动监听器(或启动servlet……很多选项)这个类/监听器/启动servlet将读取所有类(可能是我们可以提供一些xml文件,我们可以要求它们配置细节)/读取配置文件并使用Java Reflection API读取注释。

目前,我们需要详细信息。如

MyBean位置:com.bean范围:request/hotelRegister

MySecondBean位置:com.bean范围:会话/酒店注册

因此,对于每个请求,如果相关的url请求,我们必须创建MyBean。并且MySecondBean应该每个会话只创建一次。

现在创建/管理bean的生命周期。但何时何地?

像JSF/Spring/Struts这样的框架过去对web应用程序只有一个入口点。需要在web.xml中配置为启动servlet。

假设我们有一个Servlet(MyServlet),它需要配置为启动Servlet。

因此,通过这个servlet的任何请求都将通过这个方法中的doPost或doGet方法。

在这些方法中,我们应该能够找到请求的资源(例如/hotelRegister配置)。根据配置,这个servlet将知道他们必须创建myBean作为请求范围,因此使用反射,它将创建myBean并调用该Bean中的交叉积水方法。这个servlet维护实例生命周期。一旦请求为该对象提供服务,该对象就会从作用域中删除(例如,该对象可能会放在HttpRequest属性中)。

如果它是会话,那么可变对象将保持在会话中,并且您应该有sessionListener来处理bean的生命周期。

使用Referction我们可以创建beans

因此,总的来说,使用反射可以很容易地根据配置信息(注释/xml文件/任何格式)创建对象。关键是,客户端应该通过框架提供的上下文来调用/调用操作。

我可能会在非常非常高的级别上解释,但还有其他功能,如代理、AOP、缓存、初始化(DI),以及框架

附带的许多功能

相关内容

  • 没有找到相关文章

最新更新