小编ace*_*es.的帖子

Spring HandlerInterceptor与Servlet过滤器

Spring中的HandlerInterceptor现在可以配置为仅在某些URL上使用调用<mvc:interceptors>.

Servlet过滤器可以实现相同的功能(日志记录,安全性等).那应该用哪一个?

我认为使用Interceptors,可以使用ModelAndView对象与模型一起工作,因此它具有更多优势.任何人都可以提出过滤器或拦截器比另一个有优势的场景吗?

spring spring-mvc interceptor servlet-filters

63
推荐指数
4
解决办法
7万
查看次数

域对象/服务和业务逻辑层

什么是软件架构中的域对象和域服务?我不熟悉它们或它们与业务逻辑层有何不同?

java business-logic-layer domain-object

39
推荐指数
1
解决办法
3万
查看次数

在Windows上安装协议缓冲区

我无法找到在Windows x64平台上安装Google协议缓冲区(包括编译器)的明确说明.

我查看了README文件的编译和源代码:

对于编译器:要安装,只需将此二进制文件放在PATH中的某个位置即可

我将系统变量添加到Path: PROTOC'C:\ dev_tools\protoc-2.4.1-win32'

我坚持使用Cygwin安装Protocol Buffers源代码.我尝试按照自述文件中提供的Unix说明操作:

要构建和安装C++ Protocol Buffer运行时和Protocol Buffer编译器(protoc),请执行以下命令:

$ ./configure $ make $ make check $ make install

如果"make check"失败,您仍然可以安装,但该库的某些功能可能无法在您的系统上正常运行.继续需要您自担风险.

"make install"可能需要超级用户权限.

有关configure和make的高级用法信息,请参阅INSTALL.txt.

**提示安装位置**

默认情况下,程序包将安装到/ usr/local.但是,在许多平台上,/ usr/local/lib不是LD_LIBRARY_PATH的一部分.您可以添加它,但可能更容易安装到/ usr.为此,请按如下方式调用configure:

./configure --prefix =/usr

我得到'-bash:./ configure:没有这样的文件或目录' 有人可以提供明确而详细的步骤来使其工作吗?

--------------- 更新 -----------------

我转而使用MSYS/MINGW32而是按照此链接中的说明进行操作.现在我坚持以下:

当我运行'./configure'命令时,我得到以下错误:
检查如何运行C++预处理器.../lib/cpp
configure:错误:C++预处理器"/ lib/cpp"无法进行健全性检查'

因此,make,make install命令都不起作用.
例如:make:*未指定目标且未找到makefile.停止.**

谢谢

java windows cygwin mingw protocol-buffers

23
推荐指数
5
解决办法
4万
查看次数

比较器与Apache BeanComparator

考虑一个简单的类:

class Employee {

String name;
int sal;

....//getters and setters
}
Run Code Online (Sandbox Code Playgroud)

我可以创建一个Comparator来对字段名称进行排序.

class EmpSortByName implements Comparator<Employee>{

 @Override
 public int compare(Employee e1, Employee e2){
  return e1.getName().compareTo(e2.getName());
 }
}
Run Code Online (Sandbox Code Playgroud)

但是,看看apache commons BeanComparator,可以通过以下方式实现排序:

BeanComparator bc = new BeanComparator("name");
Collections.sort(employeeList, bc);
Run Code Online (Sandbox Code Playgroud)

因此,通过使用BeanComparator,我可以用最少的代码实现排序.使用Comparators和BeanComparators之间的权衡是什么:在性能,使用场景(多个字段排序,其他因素)方面?

我也明白要使用BeanComparator,必须导入beanutils jar.

java apache comparison performance comparator

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

Mockito ClassCastException

我想测试的方法有一个for循环,其中包含bList中每个元素的逻辑:

class A {
    void someMethod(){

        for(B b: bList){
            //some logic for b
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

执行以下测试时出现异常:

@RunWith(MockitoJUnitRunner.class)
class ATest {

    @Mock
    private B b;

    @Mock
    private Map<Int, List<B>> bMap;

    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
    private List<B> bList;

    @Spy
    @InjectMocks
    private C c;
    ....

    @Test
    public void test(){

        //this line executes fine
        when(bList.size()).thenReturn(1);

        //strangely this works fine
        when(bMap.get(any())).thenReturn(bList);

        //ClassCastException
        when(bList.get(0)).thenReturn(b); // or when(bList.get(anyInt())).thenReturn(b);

        c.methodIWantToTest();
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的例外是:

java.lang.ClassCastException:
org.mockito.internal.creation.jmock.ClassImposterizer$ClassWithSuperclassToWorkAroundCglibBug$$EnhancerByMockitoWithCGLIB$$ cannot be cast to xyz.B
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这个并提出解决方法?

我搜索了一个解决方案并遇到了一些链接:http://code.google.com/p/mockito/issues/detail?id = 251 …

java testing mocking mockito

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

了解Spring AOP

我正在使用Spring 3.0框架,仍然是一个新手.任何人都可以用非专业术语解释我的AOP编程是什么?(一个简短的例子肯定会有帮助)

Spring如何整合/增强/支持它?

java aop spring aspectj

9
推荐指数
4
解决办法
7727
查看次数

ElasticSearch - 使用FilterBuilders

我是ElasticSearch和Couchbase的新手.我正在构建一个示例Java应用程序,以了解有关ElasticSearch和Couchbase的更多信息.

阅读ElasticSearch Java API,在不需要排序分数和缓存的情况下,可以更好地使用过滤器.我还没弄清楚如何使用FilterBuilders并有以下问题:

  • 可以FilterBuilders单独使用来搜索吗?
  • 或者他们总是必须使用Query?(如果是真的,有人可以列举一个例子吗?)
  • 浏览文档,如果我想根据字段值执行搜索并想使用FilterBuilders,我该如何实现?(使用AndFilterBuilderTermFilterBuilderInFilterBuilder?我不清楚它们之间的差异.)

对于第3个问题,我实际上使用查询和使用过滤器进行了测试,如下所示.当我尝试使用搜索时,我得到了空结果(没有行)FilterBuilders.我不确定我做错了什么.

任何例子都会有所帮助.我经历过艰难的时间浏览文档,我发现稀疏甚至搜索导致各种不可靠的用户论坛.

private void processQuery() {
        SearchRequestBuilder srb = getSearchRequestBuilder(BUCKET);
        QueryBuilder qb = QueryBuilders.fieldQuery("doc.address.state", "TX");
        srb.setQuery(qb);

        SearchResponse resp = srb.execute().actionGet();
        System.out.println("response :" + resp);
    }

private void searchWithFilters(){
        SearchRequestBuilder srb = getSearchRequestBuilder(BUCKET);
        srb.setFilter(FilterBuilders.termFilter("doc.address.state", "tx"));
        //AndFilterBuilder andFb = FilterBuilders.andFilter();
        //andFb.add(FilterBuilders.termFilter("doc.address.state", "TX")); 
        //srb.setFilter(andFb);
        SearchResponse resp = srb.execute().actionGet();
        System.out.println("response :" + resp);
    }
Run Code Online (Sandbox Code Playgroud)

- -UPDATE--

如答案所示,更改为小写"tx"有效.随着这个问题的解决.我还有以下问题:

  • 在什么情况下,过滤器与查询一起使用?这有什么用途?
  • 之间的区别InFilter,TermFilter和 …

java elasticsearch couchbase

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

Mockito间谍测试

我正在使用Mockito编写代码测试.但是我被困在以下场景中--A类有2个方法,method1()和method2().我尝试使用ArgumentCaptor来捕获发送到method2()的值.但是,由于我使用@Spy,我不能使用Matchers.

我如何测试method1()?

class A{
    B b;
    method1(arg1, arg2){
       //some logic
       method2(arg1, arg2, ....argN);
    }

   method2(arg1, arg2,....argN){
       //some logic
       b.method3(arg1, arg2...);
   }
}
Run Code Online (Sandbox Code Playgroud)

如何验证method2是否收到相同的参数值?以下是我写的测试类:

Class TestA{

@Mock
B b;

@Spy
@InjectMocks   //required else b is null
A a = new A();

@Test
public void testMethod1(){

 a.method1(arg1, arg2);

  //How to verify method2 receives same argument values (arg1, arg2)????
  //verify(a, times(1)).method2(.......);   
}
Run Code Online (Sandbox Code Playgroud)

}

java spring mockito

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