我刚刚将Spring bean配置文件分解为较小的外部文件,并使用"import"指令将它们包含在我的Spring Test应用程序上下文XML文件中.
但每当我从导入的文件中引用其中一个bean时,我都会在Eclipse/STS/Spring XML编辑器中收到警告,抱怨"找不到引用的bean'foo'"
这是一个错误还是我?这真的很烦人,因为我不想禁用警告,但在我的公司,我们试图消除所有警告.
也许这是我缺乏理解,但我会假设在Maven Java项目中执行此操作会禁止所有调试信息进入Class文件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<debug>false</debug>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但是,我刚刚测试了它,当局部变量表消失了,源文件引用消失了,行号表仍然存在.我做了一个javap -l MyClass仍然有这样的事情:
protected com.mycorp.myapp.randomMethod();
LineNumberTable:
line 197: 0
line 68: 4
line 69: 9
line 70: 14
line 198: 19
Run Code Online (Sandbox Code Playgroud)
显然,这些东西仍在那里......我想.
我在Spring配置文件中有一个String值,它是JNDI查找的结果 - 它恰好是一个路径名:
<jee:jndi-lookup id="myAppHomeDir" jndi-name="myAppHomeDir" />
现在我需要在这个路径的末尾连接另一个字符串并将其交给另一个Spring bean,如下所示(当然这不起作用):
<bean id="LogPath" class="org.mystuff.initBean">
<property name="logDirectory">
<jee:jndi-lookup id="myAppHomeDir"
jndi-name="myAppHomeDir" /> + "/logs"
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以在不用Java编写实用程序类的情况下执行此操作?
我最近继承了一个由不同的人在不同时间编写的应用程序,并寻求如何标准化的指导.
我有一个问题.当过滤器被添加到商店时,是否可以获取存储中加载的所有记录?例如,如果我加载到商店34记录然后应用过滤器并且只剩下15个,我可以在没有清除过滤器的情况下获得这34条记录吗?
它已经出现了一段时间,所以我想知道人们是否在他们的Spring配置文件中使用了p XML命名空间.这是一条有用的捷径吗?最后进入垃圾桶是个好主意吗?
Java社区在哪里占据主导地位?
我有一个多模块Maven项目,它使用WAR覆盖(堆栈为3深).Maven中的一切都很好用,但是我无法从Eclipse中启动我的WAR,因为它抱怨找不到各种文件.
如何配置Eclipse(和启动器)以便我可以从Eclipse运行我的WAR而无需先进行Maven安装?我应该补充一点,我的Eclipse WAR项目不是动态Web项目......这是我需要做的一部分吗?
注意:以下问题涉及到主题,但答案表明您必须首先进行Maven安装,我知道这不可能是正确的,因为有些人在没有Maven的情况下使用Eclipse.
我也发现这让我觉得通过香草M2E是不可能的:
我的问题是: JPA merge在无状态Web应用程序中是否有角色?
关于mergeJPA中的操作,有很多关于SO的讨论.还有一篇关于这个主题的文章,它通过一个更加手动的自己动手过程(通过实体管理器找到实体并进行更改)来对比JPA合并.
我的应用程序有一个丰富的域模型(ala域驱动设计),它使用@Version注释来利用乐观锁定.作为RESTful Web服务的一部分,我们还创建了DTO以通过线路发送.这个DTO层的创建还允许我们向客户端发送它需要的一切,而不是它没有.
到目前为止,我知道这是一个相当典型的架构.我的问题是关于需要UPDATE(即HTTP PUT)现有对象的服务方法.在这种情况下,我们有这两种方法1)JPA Merge,和2)DIY.
我不明白的是JPA合并如何被视为处理更新的选项.这是我的想法,我想知道是否有一些我不明白的事情:
1)为了从有线DTO正确创建分离的JPA实体,必须正确设置版本号...否则抛出OptimisticLockException.但JPA规范说:
实体可以访问其版本字段或属性的状态,或者导出应用程序用于访问版本的方法,但不得修改版本值[30].只允许持久性提供程序设置或更新对象中version属性的值.
2)Merge不处理双向关系......后向字段总是以null结尾.
3)如果DTO中缺少任何字段或数据(由于部分更新),则JPA合并将删除这些关系或使这些字段无效.Hibernate可以处理部分更新,但不能处理JPA合并.DIY可以处理部分更新.
4)合并方法将要做的第一件事就是在数据库中查询实体ID,因此没有DIY的性能优势.
5)在DYI更新,我们加载实体,并根据DTO的变化-有没有电话merge或persist为此事,因为JPA背景下实现了单位的工作格局开箱.
我有这个吗?
编辑:
6)关于延迟加载关系的合并行为可能因提供者而异.
我有一些抽象的超类,我的具体类继承了各种方法.其中一些方法需要在具体类中放置JPA或JAXB注释.目前我通过以下方式执行此操作:
@MyLocalAnnotations
@Override
public method inheritedMethodHere (yadda yadda)
{
super.inheritedMethodHere(yadda yadda);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在不覆盖方法的情况下执行此操作?将覆盖方法仅用于提供本地注释似乎是浪费.
据我所知,Eclipse中的新M2E具有可插拔连接器,可帮助根据项目导入时在POM中看到的内容来配置Eclipse项目.
我也相信(大多数情况下)这些连接器在需要时(按需)自动安装.我一直在使用它们取得了一些成功.最近我手动安装了M2E-WTP连接器,因为我想尝试一下.
我安装了它 Eclipse->Preferences->Maven->Discovery,我也发现了一堆额外的连接器.但是发现窗口似乎只显示了你没有安装过的窗口.
但我怎么知道我安装了哪些?
java ×6
eclipse ×3
spring ×3
xml ×3
jpa ×2
maven-3 ×2
annotations ×1
dto ×1
eclipse-wtp ×1
extjs ×1
filter ×1
ide ×1
inheritance ×1
javabeans ×1
javascript ×1
jaxb ×1
m2e ×1
maven-2 ×1
namespaces ×1
rest ×1
servlets ×1
store ×1
unit-testing ×1
war ×1
warnings ×1
web ×1