- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在关注这个 tutorial关于如何在 Spring 中池化对象。我已经按照教程中的说明进行操作,但是当我运行我的应用程序时,它总是会生成该对象的一个新实例。我期望因为我正在合并对象,所以现有对象将被重用。因此,不应创建新实例。此外,当我访问 bean 的 getter 方法时,将再次创建 bean 的新实例。
我可能做错了什么?我是否误解了 Spring 中池化的概念?
下面是我的代码:
应用上下文:(这只是我的应用上下文的主体。)
<bean id="simpleBeanTarget" class="com.bean.SimpleBean" scope="prototype">
</bean>
<bean id="poolTargetSource" class="org.springframework.aop.target.CommonsPoolTargetSource">
<property name="targetBeanName" value="simpleBeanTarget" />
<property name="maxSize" value="2" />
</bean>
<bean id="simpleBean" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="targetSource" ref="poolTargetSource" />
</bean>
Controller :(这只是我方法的主体)
@RequestMapping("/hello")
public ModelAndView helloWorld(HttpServletRequest request, HttpServletResponse response)
{
String message = "Hello World, Spring 3.";
try
{
System.out.println("Accessing Application Context");
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println("Getting Bean");
SimpleBean simpleBean = (SimpleBean) context.getBean("simpleBean");
//A new SimpleBean... is printed here.
System.out.println("Displaying Hello World: " + simpleBean.getRandomNum());
//After this line, A new SimpleBean... is printed again. I simply access the getter method. Why does it create a new instance of SimpleBean?
return new ModelAndView("hello", "message", message);
}catch(Exception e)
{
System.out.println("Error: " + e);
e.printStackTrace();
return new ModelAndView("hello", "message", "Error! " + e.getMessage());
}
}
我正在汇集的 bean:
package com.bean;
import java.util.Random;
public class SimpleBean
{
int randomNum;
String str;
SimpleBean()
{
Random randomGenerator = new Random();
randomNum = randomGenerator.nextInt(100);
//I'm printing this line just to check if a instance of this bean is created.
System.out.println("#####################A new SimpleBean was born: " + randomNum);
str = "This is a string.";
}
public int getRandomNum()
{
return randomNum;
}
public void setRandomNum(int randomNum)
{
this.randomNum = randomNum;
}
public String getStr()
{
if (str == null)
return "str is null";
return str;
}
public void setStr(String str)
{
this.str = str;
}
}
我的 web.xml 的主体:
<display-name>Spring3MVC</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
最佳答案
在每个请求中,您创建一个全新的 Spring 应用程序上下文,然后您在每个操作的新应用程序上下文中获取新对象。所以您应该在 web.xml 中使用“ContextLoaderListener”加载您的 spring 上下文。
web.xml 中的引用片段
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:spring/appContext.xml classpath*:spring/appContext-security.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
代码见:
try
{
System.out.println("Accessing Application Context");
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
...
有关 Spring 上下文加载的更多知识,请参阅 MKyong 's tutorial或 Spring reference
关于java - 如何在 Spring 中池化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15472935/
Tomcat 6 下的 Servlets 101: 有人可以指点我对例如的最佳方式的一个很好的解释。在 servlet 启动时创建一个昂贵的 Foo 对象的集合,并将它们存储在我可以在处理每个请求时访
我想在我的网络中做最大池化,像这样: 我的网络是一维的(你可以认为上面的例子是一个句子有 6 个词,而每个词有 3 个嵌入)我不知道特征的长度(不是每个句子都有相同的长度),所以我不能' t 在 tf
关于SDL2的硬件加速纹理渲染,我有两个问题: 当使用SDL_Createtexture(...)时,当VRAM非常重要时,是否可以在系统RAM和VRAM之间自动合并/传输纹理?为了确保不会淹没VRA
我正在尝试通过池化 box2d 主体来生成 block ,我不知道 libgdx 池化是否适用于主体,但如果是,请有人解释我如何做到这一点以及我的代码有什么问题。 首先,我在单独的方法上创建了 Bod
我的主要目标是在静默或某种方式下池化一个httpclient,我想调用一个方法来给我一个httpclient...因为我认为它对于每个休息调用都使用资源,添加一个新的httpclient实例并且设置一
我有一个非常具体的应用程序架构问题。 我需要解析大量传入目的地,这些对象的解析是异步处理的,完成后需要将对象传递到下一阶段。 所以真正的问题归结为,处理大量 Future 对象的优雅方式是什么。 我是
我使用 protobuf 作为数据记录器的编码机制。远程客户端将通过 TCP 发送一条消息(在 protobuf 中编码),应用程序会将其写入磁盘。消息写入磁盘后,其唯一的内存引用将被删除,并将在适当
有些教程说使用 org.postgresql.ds.PGConnectionPoolDataSource 但有些教程说只是 org.postgresql.ds.PGSimpleDataSource..
我正在尝试在 this paper 中重新创建字符级 CNN并且在我需要创建 k-max 池化层的最后一步有点卡住,因为我使用的是 MXNet 但它没有这个。 An important differe
假设我必须在后台递归地迭代存储在树结构中的项目,并且我想使用线程池中的多个线程(每个“文件夹”节点一个线程)来遍历这棵树。我已经成功地使用 OmniThreadLibrary 提供的几种不同的低级和高
我想了解 timeToLive 属性是如何工作的? 这是当你从池中获取连接时,特意关闭连接并返回到池中的时间间隔? API 我希望使用持久连接的客户端每隔几秒关闭一次,这样对负载均衡器的请求每隔几秒就
我目前正在尝试使用 CloseableHttpClient 同时执行多个 HttpGet 请求。 我用谷歌搜索了如何做到这一点,答案是使用 PoolingHttpClientConnectionMan
我终于认输并寻求帮助。我想尽办法解决这个问题,但我似乎无能为力。 我正在与:VS2010 C#甲骨文 12cODP.Net 托管121012 我继承了一个同时使用托管和非托管数据访问 dll 的应用程
这是我看完Documents的理解: 池化,与许多其他数据库一样,我们只有一定数量的允许连接,所以你们都排好队等待空闲连接返回池中。 (连接在某种意义上就像一个 token ) 在任何给定时间,事件和
我有一个像 1x8x128x128 这样的 5D blob,并且我有一个能够处理我的 5D blob 的卷积层。当我想使用池层时,尽管它不起作用。如何将池层与 5D blob 一起使用? Check
我正在尝试实现一种使用 L2 池化的 CNN 架构。引用论文特别指出 L2 池化优于最大池化,因此我想在激活函数之后尝试 L2 池化。 但是,Tensorflow 似乎只提供了tf.nn.avg_po
我正在玩一款游戏,每 1-3 秒生成一个对象。该游戏对象包含一些用于渲染目的的资源和一个 Box2D 主体。问题是我不想创建数千个对象。相反,我想重用它们,重置其属性(位置、摩擦力等),而不是创建一个
将 Tomcat 与 MySQL 一起使用时,Tomcat 数据源配置中的 poolPreparedStatements 设置(我相信来自 DBCP)和 Connector/J 之间的关系是什么 ca
我们需要在 Java EE 应用程序中使用队列,并且由于它是一个基于云的应用程序(部署在 OpenShift Online 上),我们喜欢使用 amazon sqs。 如果我正确理解了 JMS/Jav
我是一名优秀的程序员,十分优秀!