似乎有三种相同的方式独立获取平台相关的“文件分隔符”平台: java.io.File.separator java.nio.file.FileSystems.getDefault().getSeparator(); System.getProperty("file.separator") 我们如何决定何时使用哪个? 他们之间还有什么区别?
背景: 我有一个Spring 2.5 / Java / Tomcat应用程序。 有下面的bean,在许多地方在整个应用程序中使用 public class HibernateDeviceDao implements DeviceDao 和下面这个新的bean: public class JdbcDeviceDao implements DeviceDao 第一个bean是这样configuration的(包中的所有bean都包含在内) <context:component-scan base-package="com.initech.service.dao.hibernate" /> 第二个(新)bean是单独configuration的 <bean id="jdbcDeviceDao" class="com.initech.service.dao.jdbc.JdbcDeviceDao"> <property name="dataSource" ref="jdbcDataSource"> </bean> 这导致(当然)在启动服务器时出现exception: 嵌套的exception是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义types为[com.sevenp.mobile.samplemgmt.service.dao.DeviceDao]的唯一bean:期望的单个匹配的bean,但find2:[deviceDao,jdbcDeviceDao] 从一个类尝试自动assembly这样的bean @Autowired private DeviceDao hibernateDevicDao; 因为有两个bean实现相同的接口。 问题是: 是否有可能configuration豆,以便 1.我不必对现有的已经有了HibernateDeviceDao自动assembly的类进行修改 2.仍然可以像这样使用第二个(新)bean: @Autowired @Qualifier("jdbcDeviceDao") 也就是说,我需要一种方法来configurationHibernateDeviceDao bean作为自动assembly的默认bean,同时允许在使用@Qualifier批注明确指定时使用JdbcDeviceDao 。 我已经尝试过了: 我尝试设置属性 autowire-candidate="false" 在JdbcDeviceDao的beanconfiguration中: <bean id="jdbcDeviceDao" class="com.initech.service.dao.jdbc.JdbcDeviceDao" […]
题 我正在寻找一个Java内存中的对象cachingAPI。 任何build议? 你以前用过什么解决scheme? 当前 现在,我只是使用一个地图: Map cache = new HashMap<String, Object>(); cache.put("key", value); 要求 我需要扩展caching以包含如下基本function: 最大尺寸 时间生活 不过,我不需要更复杂的function,如: 从多个进程(caching服务器) 持久性(到磁盘) build议 内存中caching: 番石榴 CacheBuilder – 积极发展。 看这个演示文稿 。 LRUMap – 通过APIconfiguration。 没有TTL。 不是为caching而构build的。 whirlycache – XMLconfiguration。 邮件列表。 最后更新2006年。 cache4j – XMLconfiguration。 俄文文档。 最后更新2006年。 企业caching: JCS – 属性configuration。 广泛的文档。 Ehcache – XMLconfiguration。 广泛的文档。 到目前为止,根据谷歌命中最stream行。
什么是用于生成类图的好的Eclipse插件(对于项目)? 这个图像就是我正在谈论的。
有没有可能:在类库中有一个字段,但在Jackson库的序列化/反序列化过程中有不同的名称? 例如,我有class级“Coordiantes”。 class Coordinates{ int red; } 对于JSON的解密想要像这样的格式: { "red":12 } 但是当我要序列化对象时,结果应该是这样的: { "r":12 } 我试图通过在getter和setter(使用不同的值)上应用@JsonProperty注释来实现这一点: class Coordiantes{ int red; @JsonProperty("r") public byte getRed() { return red; } @JsonProperty("red") public void setRed(byte red) { this.red = red; } } 但我得到了一个例外: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "red"
我最近一直在浏览Eclipse中的警告,并碰到这个: 如果该方法可以被声明为静态,它将给出编译器警告。 在Eclipse帮助中的精确引用,强调私有和最终: 启用后,编译器将针对私有或最终方法以及仅引用静态成员的方法发出错误或警告。 是的,我知道我可以closures它,但我想知道打开它的原因? 为什么将每种可能的方法都声明为静态是一件好事? 这会给予任何性能好处吗? (在移动领域) 指出一个方法是静态的,我想表明你不使用任何实例variables,因此可以移动到一个实用程序样式类? 在一天结束的时候,我应该closures“忽略”还是应该修复它给我的100多个警告? 你认为这只是额外的关键字, 肮脏的代码,因为编译器将只是内联这些方法吗? (有点像你不声明每个variables,你可以最后, 但你可以 )。
codepad.org允许你在线运行C,C ++,D等代码,但不是Java …有没有一个可以用于Java的站点?
在Java中, private访问修饰符被认为是安全的,因为它在类之外是不可见的。 那么外界也不知道这个方法。 但是我认为Javareflection可以用来打破这个规则。 考虑以下情况: public class ProtectedPrivacy{ private String getInfo(){ return "confidential"; } } 现在从另外一个class级我将获得信息: public class BreakPrivacy{ public static void main(String[] args) throws Exception { ProtectedPrivacy protectedPrivacy = new ProtectedPrivacy(); Method method = protectedPrivacy.getClass().getDeclaredMethod("getInfo", null); method.setAccessible(true); Object result = method.invoke(protectedPrivacy); System.out.println(result.toString()); } } 此时我只想到还有一些私人的方法,因为做了一些像上面这样的事情我们必须知道方法的名字。 但是如果包含其他人编写的私有方法的类我们没有这些可见性。 但是由于下面的代码,我的观点变得无效了。 Method method[] = new ProtectedPrivacy().getClass().getDeclaredMethods(); 现在这个method[]包含了所有需要做的事情。 我的问题是,有没有办法避免使用Javareflection这种事情? […]
在Java中,为什么最好的做法是声明一个logging器static final ? private static final Logger S_LOGGER
现有的Web应用程序正在Tomcat 4.1上运行。 页面存在XSS问题,但我无法修改源代码。 我已经决定编写一个servletfilter来清除参数,然后才能看到页面。 我想写一个这样的Filter类: import java.io.*; import javax.servlet.*; public final class XssFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String badValue = request.getParameter("dangerousParamName"); String goodValue = sanitize(badValue); request.setParameter("dangerousParamName", goodValue); chain.doFilter(request, response); } public void destroy() { } public void init(FilterConfig filterConfig) { } } 但是ServletRequest.setParameter不存在。 如何在将请求传递给链之前更改请求参数的值?