小编IAm*_*aja的帖子

Java:Class.forName和ClassLoader.loadClass之间的区别

最近遇到了一些让我思考的代码.有什么区别:

Class theClass = Class.forName("SomeImpl");
SomeImpl impl = (SomeImpl)theClass.newInstance();
Run Code Online (Sandbox Code Playgroud)

和:

Class theClass = ClassLoader.loadClass("SomeImpl");
SomeImpl impl = (SomeImpl)theClass.newInstance();
Run Code Online (Sandbox Code Playgroud)

他们是同义词吗?在某些情况下,是否优先于另一方?使用这两种方法有什么用,有什么用呢?

提前致谢.

java classloader

40
推荐指数
2
解决办法
3万
查看次数

形成Mockito"语法"

Mockito似乎是一个非常甜蜜的Java存根/模拟框架.唯一的问题是我找不到关于使用API​​的最佳方法的任何具体文档.测试中使用的常用方法包括:

doXXX(???) : Stubber
when(T) : OngoingStubbing
then(T) : OngoingStubbing
verify(???) : T
given(T) : BDDOngoingStubbing
willXXX(???) : BDDStubber
Run Code Online (Sandbox Code Playgroud)

当你在实践中看到Mockito的例子时,你会看到如下代码:

when(yourMethod()).thenReturn(5);
Run Code Online (Sandbox Code Playgroud)

从我读过的所有文档中,我已经确定了Mockito"语法"的几个"模式",它们是通过菊花链式连接这些方法调用获得的,就像上面的例子一样.我发现的一些常见模式是:

当/ Then: when(yourMethod()).thenReturn(5);

给定/将:给定(yourMethod()).willThrow(OutOfMemoryException.class);

Do/When: doReturn(7).when(yourMock.fizzBu​​zz());

Will/Given/Do: willReturn(any()).given(yourMethod()).doNothing();

验证/执行:验证(yourMethod()).doThrow(SomeException.class);

我正在窒息的是如何选择正确的模式/方法调用组合来模拟我的测试用例.看起来你可以在看似无穷无尽的组合中将它们连接在一起,我不确定哪种模式适合哪个问题.

一些Mockito Guru可以帮助阐明Mockito方法的哪些模式/组合用于哪种类型的测试用例(以及为什么)?提前致谢!

java junit unit-testing mocking mockito

40
推荐指数
3
解决办法
2万
查看次数

HttpClient获取状态代码

使用Apache HttpClient 4.1.3并尝试从以下位置获取状态代码HttpGet:

HttpClient client = new DefaultHttpClient();
HttpGet response = new HttpGet("http://www.example.com");
ResponseHandler<String> handler = new BasicResponseHandler();
String body = client.execute(response, handler);
Run Code Online (Sandbox Code Playgroud)

如何从中提取状态代码(202,404等)body或者,如果在4.1.3中有另一种方法可以做到这一点,它是什么?

此外,我假设一个完美/良好的HTTP响应是一个,HttpStatus.SC_ACCEPTED但也希望确认.提前致谢!

java apache-httpclient-4.x

39
推荐指数
2
解决办法
8万
查看次数

具体代码MVP示例

有人可以提供MVP的具体(实际Java代码)示例吗?

这将包括以下3种类型以及它们如何调用彼此的方法来实现模式和处理/响应客户端响应:

  • 模型 - 某种价值对象(VO)
  • 视图 - 表示或生成UI
  • 演示者 - 业务逻辑

java mvp design-patterns

36
推荐指数
1
解决办法
4万
查看次数

Spring MVC和UI组件

我正处于一个小型,单页面Web应用程序的"技术选择"阶段,该应用程序将基于AJAX,并将报告给Java后端.

在我几周前发布的上一个问题中,SO社区强烈认为,使用基于Spring MVC的Web应用程序比使用JSF更好.由于Spring是面向请求的,而JSF是面向组件的,所以只使用Spring来获取大量异步请求才有意义.

如果我去了JSF的路线,然后我的下一组的决定,将是否要使用的视图技术所谓的UI组件库,如PrimeFaces,ICEfaces的MyFaces的.

所以,我想知道: Spring MVC是否有类似于PrimeFaces(或其喜欢的)为我的页面创建视图组件?我知道它不是基于组件的,但我并不熟悉Spring MVC的Web平台,并且想知道Spring Web开发人员用于构建漂亮网页的事实标准(如果有的话)或典型技术堆栈是什么.

而且,如果Spring只使用run-o-the-mill模板引擎,像Freemarker这样的东西就足够了吗?

我想这对于一个初露头角的Spring Web开发人员来说是一个"最佳实践"类型的问题.

提前致谢!

java spring spring-mvc

34
推荐指数
2
解决办法
4万
查看次数

静态方法是DI反模式吗?

我是一名Java开发人员,他开始掌握依赖注入的全部功能,我突然意识到没有办法注入静态方法.所以它让我思考:静态方法DI反模式?

更重要的是:如果我要接受依赖注入,这是否意味着我需要停止编写静态方法?我问,因为没有办法在单元测试中模拟它们并注入模拟静态,这对我来说是一个巨大的转折点.

编辑:我知道"包装"和注入现有静态方法的常用方法是这样的:

public class Foo {
    public static void bar() { ... }
}

public interface FooWrapper {
    public void bar();
}

public class FooWrapperImpl implements FooWrapper {
    public void bar() {
        return Foo.bar();
    }
}
Run Code Online (Sandbox Code Playgroud)

...但我不是在问如何注入一个现有的静态方法...我问我是否应该完全停止写它们,如果我所有的代码(从这一点开始)都要接受DI的概念.

此外,我看到很多与此类似的相关问题,但无法找到提出相同问题的完全匹配.如果你发现它确实是另一个问题的愚蠢,请指出我,我将自己关闭这个问题(请不要只是关闭它!).

java static-methods dependency-injection mocking

33
推荐指数
1
解决办法
7397
查看次数

Tomcat是否需要Apache httpd?

如果给我一个包含Java Web应用程序的war文件,并且我想在本地运行该war,那么我只需要Tomcat,还是需要Tomcat Apache httpd(或任何其他Web服务器)?提前致谢!

java apache webserver tomcat war

32
推荐指数
2
解决办法
2万
查看次数

如何将变量中的占位符字符或单词替换为Bash中另一个变量的值?

我正在尝试编写一个简单的Bash脚本.我有一个简单的"模板"变量:

template = "my*appserver"
Run Code Online (Sandbox Code Playgroud)

然后,我有一个函数(get_env())返回的值dev,qalive.我想调用get_env然后template使用get_env's返回值对变量进行字符串替换,并将其与星号交换掉.所以:

# Returns "dev"
server = get_env

# Prints "mydevappserver"
template = string_replace(server, template)
Run Code Online (Sandbox Code Playgroud)

要么:

# This time, it returns "live"
server = get_env

# Prints "myliveappserver"
template = string_replace(server, template)
Run Code Online (Sandbox Code Playgroud)

我应该用什么来代替这个string_replace()功能来完成绑定?

bash shell replace

32
推荐指数
3
解决办法
8万
查看次数

中间件和SOA示例

我是一个缺乏经验的Java开发人员,试图围绕一些基本的中间件/ SOA概念和技术,特别是:

  • 面向服务的体系结构(SOA)
  • 面向消息的中间件(MOM)
  • 消息队列
  • Apache Camel
  • 马骡
  • EJB的
  • 端点和路由
  • 服务总线/ ESB
  • JMS

在网上/维基百科上查看每一个之后,我能够(大部分)获得这些中的每一个都不错的定义.我不理解的是所有这些技术/概念如何在后端协同工作以提供第二/业务层解决方案.

有人可以举一个使用所有这些技术/概念的架构的例子,并解释它们在整体解决方案中扮演的角色吗?一旦我看到一个工作示例,我相信它会帮助我连接大部分点.

编辑:由于我添加了赏金,我有几个答案建议阅读书籍.虽然我很欣赏这里的所有反馈,但我根本无法分享300个声望点的答案,基本上归结为"RTM"(特别是当我平了,并且买不起手册!)重申,赏金和明确的答案将发送给能够在一个有意义的实际例子中击中所有这些子弹的人.这不一定是中间件的纲要!只是一段或两段,展示了如何将所有这些结合在一起以生成Java业务层解决方案.再次感谢.

java soa jms message-queue ejb-3.0

31
推荐指数
3
解决办法
2万
查看次数

如何在Dart中定义接口?

在Java中,我可能有一个接口IsSilly和一个或多个实现它的具体类型:

public interface IsSilly {
    public void makePeopleLaugh();
}

public class Clown implements IsSilly {
    @Override
    public void makePeopleLaugh() {
        // Here is where the magic happens
    }
}

public class Comedian implements IsSilly {
    @Override
    public void makePeopleLaugh() {
        // Here is where the magic happens
    }
}
Run Code Online (Sandbox Code Playgroud)

Dart中这段代码的等价物是什么?

仔细阅读关于课程的官方文档后,Dart似乎没有本机interface类型.那么,一般的Dartisan如何完成界面隔离原则呢?

oop api inheritance interface dart

30
推荐指数
4
解决办法
1万
查看次数