使用Spring,我可以使用以下属性自动装配bean:
@PersistenceContext(unitName="foo") private EntityManager em;
Run Code Online (Sandbox Code Playgroud)
使用以下我可以手动自动装配bean"someBean":
ClassPathXmlApplicationContext ctx =
new ClassPathXmlApplicationContext("META-INF/applicationContext.xml");
AutowireCapableBeanFactory fac = ctx.getAutowireCapableBeanFactory();
fac.autowireBean(someBean);
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何直接获取特定的EntityManager.用例是我想编写一个测试,它将获取所有EntityManager对象并在其中执行简单查询,以确保它们已正确设置.为此,我需要能够从应用程序上下文中获取所有EntityManager对象.我怎样才能做到这一点?
以下不起作用.它返回一张空地图.
Map<String,EntityManager> ems = ctx.getBeansOfType(EntityManager.class);
Run Code Online (Sandbox Code Playgroud) 我正在保存大量的小png文件,用于手机游戏,因此空间非常宝贵.
我试图弄清楚文件大小背后的逻辑,这样我可以最有效地保存东西,但即使使用pngcrush后,大小也完全不一致.
我保存了1x1图像,需要3kb.我有另一个23x21图像,只需2kb.我有两个图像几乎相同的大小,但一个需要6kb,另一个需要13kb.我将图像高度加倍并将一个图像复制到另一个图像的空白区域并保存.合并后的图像仅为11kb!
为什么1x1图像大于23x21图像?为什么我可以将13kb图像和6kb图像组合在一起并获得11kb图像?
以下是我正在谈论的图像(第1张图像和第2张图像之间有1x1像素.很难看到,所以我只提供URL:http://g42.org/temp/png/1x1. png):
示例http://g42.org/temp/png/hat.png 示例http://g42.org/temp/png/1x1.png 示例http://g42.org/temp/png/helmet1.png 示例http ://g42.org/temp/png/helmet2.png 示例http://g42.org/temp/png/helmet1_2.png
以下查询应该返回大约800个对象.问题是hibernate实际上执行了800个查询来获取它们.它似乎执行一个查询来获取id,然后为每个对象执行一个查询以获取有关该对象的特定数据.此查询返回需要60秒以上.
List<AUser> result = em.createQuery("FROM AUser where company=:companyId")
.setParameter("companyId",company.getId())
.getResultList();
Run Code Online (Sandbox Code Playgroud)
本机查询要快得多.
List<AUser> result = em.createNativeQuery("select a.* FROM AUser a where a.company=:companyId")
.setParameter("companyId",company.getId())
.getResultList();
Run Code Online (Sandbox Code Playgroud)
上述查询返回时间不到一秒.
为什么不同?
这是一个Android应用程序,但可能在Java中也是如此.我有一个类型LevelFactory,我从中导出Level1Factory,Level2Factory等.我想拥有这些类的数组,所以我可以实例化给定数组索引的级别.
我可以只有一个Class []并将它们放入其中然后在我需要使用它们时将它们转换为LevelFactory,但我想知道正确的做法是什么.
这显然是一个错误"不兼容的类型":
new Class<LevelFactory>[] {Level1Factory.class,Level2Factory.class};
Run Code Online (Sandbox Code Playgroud)
但是,我很惊讶地发现这也是一个错误"通用数组创建":
new Class<? extends LevelFactory>[] {Level1Factory.class,Level2Factory.class};
Run Code Online (Sandbox Code Playgroud)
以下工作,但它在分配给变量时给出"未选中分配"警告:
new Class[] {Level1Factory.class,Level2Factory.class};
Run Code Online (Sandbox Code Playgroud)
最后一个是我可以开始工作的唯一选择.我只是忽略了警告,但如果实际上可行,我想用泛型来做.
在applicationcontext.xml中,是否可以设置一个值,以后可以在SPEL表达式中使用?
例如,有没有办法做到这一点?:
<setProperty name="foo" value="someval" />
<bean id="beanId" name="beanName" class="SomeClass">
<property name="someVal" value="blah_${foo}"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
我想要这样做的实际原因是我使用语句来创建在许多不同的应用程序上下文中使用的实体管理器.问题是实体管理器需要一个唯一的名称,Bitronix使用该名称来创建一个本地文件,如果多个单元测试同时使用该字段的相同名称运行,则该文件会中断.要设置该唯一名称,我当前为每个应用程序上下文都有一个单独的属性文件,并导入它以从中获取唯一的名称.
而不是做那些废话,我宁愿这样做:
<setProperty name="uniqueName" value="someUniqueName" />
<import resource="classpath*:shared/db/fooDb.xml" />
Run Code Online (Sandbox Code Playgroud) 在OpenGL ES中,如何指定最大可见距离是多少?我发现当我这样做时:
gl.glTranslatef(0,0,-10f);
Run Code Online (Sandbox Code Playgroud)
我绘制的所有东西都是看不见的,因为它离相机太远了.我如何指定它应该把东西拉得更远?