Spring中的HandlerInterceptor现在可以配置为仅在某些URL上使用调用<mvc:interceptors>.
Servlet过滤器可以实现相同的功能(日志记录,安全性等).那应该用哪一个?
我认为使用Interceptors,可以使用ModelAndView对象与模型一起工作,因此它具有更多优势.任何人都可以提出过滤器或拦截器比另一个有优势的场景吗?
什么是软件架构中的域对象和域服务?我不熟悉它们或它们与业务逻辑层有何不同?
我无法找到在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.停止.**
谢谢
考虑一个简单的类:
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.
我想测试的方法有一个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.BRun Code Online (Sandbox Code Playgroud)
有没有人遇到过这个并提出解决方法?
我搜索了一个解决方案并遇到了一些链接:http://code.google.com/p/mockito/issues/detail?id = 251 …
我正在使用Spring 3.0框架,仍然是一个新手.任何人都可以用非专业术语解释我的AOP编程是什么?(一个简短的例子肯定会有帮助)
Spring如何整合/增强/支持它?
我是ElasticSearch和Couchbase的新手.我正在构建一个示例Java应用程序,以了解有关ElasticSearch和Couchbase的更多信息.
阅读ElasticSearch Java API,在不需要排序分数和缓存的情况下,可以更好地使用过滤器.我还没弄清楚如何使用FilterBuilders并有以下问题:
FilterBuilders单独使用来搜索吗? Query?(如果是真的,有人可以列举一个例子吗?)AndFilterBuilder或TermFilterBuilder或InFilterBuilder?我不清楚它们之间的差异.)对于第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和 …我正在使用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 ×7
spring ×3
mockito ×2
aop ×1
apache ×1
aspectj ×1
comparator ×1
comparison ×1
couchbase ×1
cygwin ×1
interceptor ×1
mingw ×1
mocking ×1
performance ×1
spring-mvc ×1
testing ×1
windows ×1