小编gra*_*hez的帖子

"pom"类型依赖与范围"import"和没有"import"之间有什么区别?

从Maven 2.0.9开始,有可能包含

<type>pom</type>
<scope>import</scope>
Run Code Online (Sandbox Code Playgroud)

在该<dependencyManagement>部分.

据我了解,它将被"替换"此pom中包含的依赖项,就像它们最初在此处定义一样.

上面的解决方案与没有import范围的这个pom的简单依赖之间有什么区别(我看到后者被称为"依赖关系分组")?这种"分组"依赖关系在解决依赖关系优先级时具有较低优先级的唯一区别是什么?

java dependencies pom.xml maven

102
推荐指数
3
解决办法
7万
查看次数

rspec中的双重方法是什么?

在rspec doc中声明我应该使用double方法来创建测试double.但我可以看到,即使我不使用它也能完美运行double.不使用有什么问题double吗?另外,如果我不使用double如何MyClass得到stub和其他rspec方法?在rspec中运行时,它们是否可用于所有对象?

require 'spec_helper'

class MyClass

    def self.run
        new.execute
    end

    def execute
        'foo'
    end

end

describe MyClass do

    it 'should stub instance method' do
        obj = MyClass.new
        obj.stub(:execute).and_return('bar')
        obj.execute.should == 'bar'
    end

    it 'should stub class method' do
        MyClass.stub(:run).and_return('baz')
        MyClass.run.should == 'baz'
    end

end
Run Code Online (Sandbox Code Playgroud)

ruby rspec mocking stub

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

JEE6 @ApplicationScoped bean和并发

我需要编写一个bean来充当访问它的次数的计数器.

我正在考虑像这样使用@ApplicationScopedbeanAtomicInteger

@ApplicationScoped
class VisitsCounter {

    private AtomicInteger counter;

    @PostConstruct
    public void construct() {
        counter = new AtomicInteger(0);
    }

    public int visited() {
        return counter.incrementAndGet();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:在同时考虑多个请求时可以吗?或者我需要玩@ConcurrencyManagement@Lock注释吗?我想Atomic*应该这样做,但我不确定.

当我将线程安全集合作为字段时,同样适用吗?比如说我有

@ApplicationScoped
class ValuesHolder {

    private List<String> values;

    @PostConstruct
    public void construct() {
        values = Collections.synchronizedList(new LinkedList<String>());
    }

    public void insert(String value) {
        values.add(value);
    }

    public String remove(String value) {
        return values.remove(value);
    }
}
Run Code Online (Sandbox Code Playgroud)

这些操作真的是线程安全的吗?

据说当修改bean的状态时应该使用并发注释和锁,但是如果我的列表已经处理了线程安全怎么办?

java concurrency java-ee cdi

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

vagrant对java/javaee开发人员有用吗?

使用java/javaee时,通常的开发环境设置是在本地拥有一切(jdk安装,数据库,appserver等).我知道ruby/js世界中有很多人使用虚拟机进行开发(主要是使用vagrant).

我想知道是否有一种有效的方法来为java/javaee设置类似的env.我怀疑我可以在这样的虚拟机上轻松地将数据库服务器和应用服务器与jdk版本一起安装,但是常规开发呢?我还需要在本地安装jdk,对吧?(我需要我的IDE才能正常工作)我需要maven来构建我的项目,所以我需要完整的maven本地回购.然后我需要在虚拟机的应用服务器上部署我的应用程序.

我在这里看不到真正的优势(两台机器上仍有环境).你有这方面的经验并可以与我分享?

java virtual-machine vagrant

22
推荐指数
2
解决办法
5628
查看次数

单一责任原则如何与贫富/富域模型相关?

目前正在对从另一个团队接管的内容进行一些代码审查,并对应用SRP及其与贫血或富域模型(由Martin Fowler定义)的关系存在疑问.丰富的域模型概念是拥有智能对象,不仅可以设置/获取其属性,还可以执行更复杂的业务逻辑.我喜欢它如何融入SRP?

假设我的模型类有一些属性可以暴露这些道具并提供一些简单的计算.下一个要求是有可能将此对象数据存储在一些不受我控制的存储对象中,如下所示:

class MyObject {
    // get set
    // parse sth

}
Run Code Online (Sandbox Code Playgroud)

存储方法存储

   storage.store(key, object);
Run Code Online (Sandbox Code Playgroud)

如果MyObject具有这样的存储方法,它是否违反了SRP

public void store(Storage storage) {
    storage.store('keyOne', fieldOne);
    storage.store('keyTwo', fieldTwo);
}
Run Code Online (Sandbox Code Playgroud)

从这个对象的pov来看,能够存储其状态是一个很好的想法.其他方式可能是在这里介绍一种服务,并这样做:

public StorageService {
    private Storage;
    // constructor here
    ....
    public void store(MyObject myobj);
}
Run Code Online (Sandbox Code Playgroud)

你能指点一下我能读到的关于这个问题的链接吗?我在这里找到了一个关于SO的帖子,但它并没有完全回答我的问题.

如何在DDD中解决?根据定义,DDD中的模型很丰富,可以看作有太多的责任.

java domain-driven-design single-responsibility-principle anemic-domain-model

10
推荐指数
1
解决办法
1563
查看次数

如果maven dependecy设置为提供,则Jbos​​s 7.1.1中的Jackson @JsonSerialize被忽略

我在JBoss 7.1.1上的WAR存档中部署了Jax-rs端点.在其JSON响应中,我不希望null包含我的字段名称,所以我把@JsonSerialize它放在上面.

class MyResponse {

    private Long id;

    @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
    private String name;

    private List<String> addresses;

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

pom.xml有以下几点

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>2.3.2.Final</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
        <version>2.3.2.Final</version>
        <scope>provided</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

scopefor resteasy-jackson-provider设置为providedit时,忽略注释并返回nullJSON响应.但是,当我删除scopemaven依赖 - 它的工作原理.

从这里的页面https://docs.jboss.org/author/display/AS71/Implicit+module+dependencies+for+deployments看起来JBoss应该在发现Jax-RS部署时自动加载此模块.

现在我不知道这是不是一个bug,如果我真的应该包含这个依赖(不保留它provided).或者也许我在那里做错了什么?

jboss json jax-rs jackson java-ee-6

9
推荐指数
1
解决办法
3987
查看次数

如何从一个RESTful api的TDD开始

我正在尝试练习TDD并做一些练习.有一个现有的服务部署在互联网上的公共RESTful api.对此api的每个请求都需要一些数据准备,如有效的请求字符串构造,一些加密,一些正文消息格式化等.我想使用TDD为此服务编写通用客户端.

我知道它不像StringCalculator kata那么简单,需要一些不同的方法.

我不知道如何开始.我想在不使用真实服务的情况下测试它,因此需要一些假的impl.编写一些假实现,将它部署在localhost并从我的测试中调用它会更好吗?或者也许模拟一个负责发送http请求的类?

我希望我的客户端使用如下:

public class ServiceClientTest {
   @Test
   public void testSendStoreRequest() {
        ServiceClient client = new ServiceClient("app_key", "private_key")
        ClientResponse response = client.sendStoreRequest(StorageType.NORMAL,     "string_to_store");
       assertEquals("200", response.getStatus());
   } 
}
Run Code Online (Sandbox Code Playgroud)

你能指点我如何开始这个吗?我应该自下而上并编写所有组件(用于创建请求字符串,加密等),然后在ServiceClient中使用它们,或者我应该从ServiceClient测试和实现自上而下和模拟开始?

java tdd

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

单元测试控制器依赖于AngularJS中的表单验证

在我的控制器中,我只想在表单有效时调用一个动作(比如Tab按下).我还需要在表单成功提交后立即清除表单.我有类似的东西

app.controller('CommentFormController', function($scope) {
  $scope.submit = function() {
    if($scope.commentForm.$valid) {
      // submit form
      $scope.comment = '';
      $scope.commentForm.$setPristine();
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

我想测试这个,但看起来我必须$scope.contactForm手动创建这个并且存根$setPristine()函数.

有没有其他方法来测试它?我的意思是我可以以某种方式获得FormController我的测试中的底层实例吗?

你如何处理这种情况?

javascript validation angularjs

8
推荐指数
1
解决办法
2271
查看次数

在AngularJS中拒绝具有多个参数(如$ http)的promise

$httppromises的回调有多个参数:body,status,headers,config.

我想手工创造类似的承诺,但不知道如何做到这一点.我想做的或多或少:

myservice.action().then(function(status, message, config) {
    // ...
});
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过键传递对象来回调,但是希望有类似的约定$http.我看一下角度来源,但要么完全不理解,要么就是不能做到这一点.

你知道如何创建能够将多个参数传递给回调/错误的promises吗?

javascript angularjs

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

Java EE 6应用程序中的OpenID - 如何为用户获取Principal对象

我第一次在我的应用程序中玩OpenID身份验证.我可以成功地针对选择的提供程序对用户进行身份验证,但我不知道如何在Java EE服务器上正确登录用户,因此看起来用户已使用例如基于表单的登录进行登录.我可以使用Servlet 3.0 login但它需要用户名/密码对,而且在使用OpenID时我没有密码.

我希望能够得到一个Principal对象和使用isUserInRole方法等.我错过了什么吗?我在JBoss 7.1上运行这个应用程序,但我想应该有一个共同的方法来做到这一点.或者也许我错过了一些东西,Principal使用OpenID时所有的东西和用户角色都有所不同?

security servlets java-ee jaspic

5
推荐指数
1
解决办法
629
查看次数