Java/Spring:如何在服务器启动时恢复对象
我正在使用jax-rs和spring编写一个web服务。我有一个表示数据库连接池的单例类,称为“Datasource” 这段代码运行,因此在第一次“查询”时创建了singleton,但我想在服务器启动时创建singleton实例。我如何做到这一点?在我的web.xml中,我有Java/Spring:如何在服务器启动时恢复对象,java,spring,Java,Spring,我正在使用jax-rs和spring编写一个web服务。我有一个表示数据库连接池的单例类,称为“Datasource” 这段代码运行,因此在第一次“查询”时创建了singleton,但我想在服务器启动时创建singleton实例。我如何做到这一点?在我的web.xml中,我有 <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WE
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/application.xml</param-value>
</context-param>
上下文配置位置
/WEB-INF/application.xml
在application.xml中,我有
<bean name="myRoutes" class="com.package.myClass" />
是否在此处添加bean?是的,根据此定义,您可以在服务器启动时创建singleton spring bean:
<bean name="myRoutes" class="com.package.myClass" />
是的,根据此定义,您可以在服务器启动时创建单例Springbean:
<bean name="myRoutes" class="com.package.myClass" />
您可能必须实现一个
,并将其定义为部署描述符中的侦听器。根据文件
ServletContextListener
的
方法的javadoc说
通知web应用程序初始化进程已启动
启动。将上下文通知所有ServletContextListener
在web应用程序中的任何筛选器或servlet之前进行初始化
初始化
您可能必须实现一个
,并将其定义为部署描述符中的侦听器。根据文件
ServletContextListener
的
方法的javadoc说
通知web应用程序初始化进程已启动
启动。将上下文通知所有ServletContextListener
在web应用程序中的任何筛选器或servlet之前进行初始化
初始化
默认情况下,ApplicationContext实现在初始化过程中急切地创建和配置所有单例bean。单例作用域是Spring中的默认作用域 定义使用静态工厂方法创建的bean时,使用
类
属性指定包含静态工厂方法的类,使用名为工厂方法
的属性指定工厂方法本身的名称
<bean
id="dataSource"
class="com.package.DataSource"
factory-method="getInstance" />
默认情况下,ApplicationContext实现在初始化过程中急切地创建和配置所有单例bean。单例作用域是Spring中的默认作用域 定义使用静态工厂方法创建的bean时,使用
类
属性指定包含静态工厂方法的类,使用名为工厂方法
的属性指定工厂方法本身的名称
<bean
id="dataSource"
class="com.package.DataSource"
factory-method="getInstance" />
Spring等DI框架背后的想法是消除像Datasource这样的单例。有没有理由不到处注入实例,而不是手动调用getInstance()
?@TomG,可能只是因为我对该框架是全新的,还没有深入了解。这是什么样子的?在您使用数据源的类中,您会请求通过@Autowired
-例如@Autowired public Foo(Datasource ds){…}
将其注入。如果您以bean的形式提供单个Datasource
实例,通过在XML中配置它,那么在创建这些类时,它将被提供给这些类。查看Spring文档了解更多背景信息。Spring等DI框架背后的想法是消除像Datasource
这样的单例。有没有理由不到处注入实例,而不是手动调用getInstance()
?@TomG,可能只是因为我对该框架是全新的,还没有深入了解。这是什么样子的?在您使用数据源的类中,您会请求通过@Autowired
-例如@Autowired public Foo(Datasource ds){…}
将其注入。如果您以bean的形式提供单个Datasource
实例,通过在XML中配置它,那么在创建这些类时,它将被提供给这些类。查看Spring文档了解更多背景信息。对于新项目,我强烈建议使用新的基于注释的语法。在您的一个@Configuration
对象中,您只有一个方法@Bean public DataSource DataSource()
,该方法返回正确构造的对象,Spring将拾取该对象并使其可用。对于新项目,我强烈建议使用新的基于注释的语法。在一个@Configuration
对象中,您只有一个方法@Bean public DataSource DataSource()
,该方法返回正确构造的对象,Spring将拾取该对象并使其可用。