小编Mar*_*itt的帖子

AngularJS:文件连接中断模块声明顺序

我正在使用grunt连接.js我的Angular应用程序的文件.

我刚刚完成并整理了代码库以遵循此处讨论的约定,特别是将我的代码分组为代表功能的小模块.

但是,如果模块在声明之前被消耗,我发现连接顺序似乎会破坏应用程序.

例如:

|-- src/
|   |-- app/
|   |   |-- userProfile/
|   |   |   |   userProfile.js
|   |   |   |-- deposits/
|   |   |   |   |-- depositFormCtrl.js
Run Code Online (Sandbox Code Playgroud)

哪里:

// userProfile.js
var userProfile = angular.module('userProfile',[])

// depositFormCtrl.js
angular.module('userProfile')
    .controller('DepositFormCtrl', function($scope) {...});
Run Code Online (Sandbox Code Playgroud)

当grunt执行连接时,depositFormCtrl.js出现之前userProfile.js.这导致应用程序抛出错误,抱怨:

未捕获的错误:没有模块:userProfile

我看到很多关于使用RequireJS/AMD来管理模块加载顺序的可能性的讨论.但是,通常会说这是矫枉过正/不需要,因为Angular会为您处理此问题.

例如:Angular团队的Brian Ford 提到:

我个人认为RequireJS做得太多了; AngularJS的DI系统真正缺少的唯一功能是异步加载.

他还在其他地方声明他不建议使用带有Angular的RequireJS.

我也看到提到使用angular-loader.js,如种子项目所示.但是,据我所知,(这里没有官方文档)加载器旨在解决无序加载模块的问题,而不是在使用之前引用它们.

将angular-loader.js添加到我的项目并没有解决问题.

是否有我应该使用的声明来防止我遇到的错误?

声明模块和控制器的正确方法是什么,以便连接顺序文件不会影响运行时的代码?

angularjs

28
推荐指数
1
解决办法
7734
查看次数

Java Hamcrest:Collection包含类型的项目

我想声明它List<Achievement>包含一个类型的成员TestAchievement.

这是我的断言:

List<Achievement> achievements; // Populated elsewhere
assertThat(achievements,hasItem(isA(TestAchievement.class)));
Run Code Online (Sandbox Code Playgroud)

这不编译,报告错误:

方法断言Assert类型中的(T,Matcher)不适用于参数(List,Matcher <Iterable <TestAchievement >>)

使用Hamcrest这种断言的正确语法是什么?

java unit-testing hamcrest

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

Spring/Hibernate/JUnit - 没有绑定到线程的Hibernate会话

我试图在测试用例中访问当前的hibernate会话,并收到以下错误:

org.hibernate.HibernateException:没有Hibernate Session绑定到线程,并且配置不允许在org.hibernate.impl的org.springframework.orm.hibernate3.SpringSessionContext.currentSession(SpringSessionContext.java:63)中创建非事务性的会话. .SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:574)

我显然错过了某种设置,但不确定是什么.

任何帮助将不胜感激.这是我在Hibernate/Spring等的第一次破解,学习曲线肯定是陡峭的!

代码如下:

违规类:

public class DbUnitUtil extends BaseDALTest {
    @Test
    public void exportDtd() throws Exception
    {

        Session session = sessionFactory.getCurrentSession();

        session.beginTransaction();
        Connection hsqldbConnection = session.connection(); 

        IDatabaseConnection connection = new DatabaseConnection(hsqldbConnection);

        // write DTD file
        FlatDtdDataSet.write(connection.createDataSet(), new FileOutputStream("test.dtd"));
    }
}
Run Code Online (Sandbox Code Playgroud)

基类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
public class BaseDALTest extends AbstractJUnit4SpringContextTests {
    public BaseDALTest()
    {
        super();
    }
        @Resource
        protected SessionFactory sessionFactory;
}
Run Code Online (Sandbox Code Playgroud)

applicationContext.xml中:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName">
            <value>org.hsqldb.jdbcDriver</value>
        </property>
        <property …
Run Code Online (Sandbox Code Playgroud)

junit spring hibernate

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

使用Spring MVC不调用@JsonSerialize/@JsonDeserialize

我有一个Spring 3.1 MVC项目,我无法反序列化发送到以下控制器方法的请求:

@RequestMapping(value="/deposit",method=RequestMethod.POST)
public void deposit(@RequestBody DepositRequest request)
{
}
Run Code Online (Sandbox Code Playgroud)

包含Joda Money值的请求对象,我已为其注册了自定义序列化器/反序列化器:

public class DepositRequest {
    private Money amount;
    @JsonDeserialize(using=JodaMoneyDeserializer.class)
    @JsonSerialize(using=JodaMoneySerializer.class)
    public Money getAmount() {
        return amount;
    }
    public void setAmount(Money amount) {
        this.amount = amount;
    }
}
Run Code Online (Sandbox Code Playgroud)

和解串器:

public class JodaMoneyDeserializer extends JsonDeserializer<Money> {

    @Override
    public Money deserialize(JsonParser parser, DeserializationContext context)
            throws IOException, JsonProcessingException {
        String text = parser.getText();
        return Money.parse(text);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,从不调用此反序列化程序.当我发送以下JSON时,我得到一个400 - Bad Request响应,我假设它表示未找到映射器.

{
    "amount" : "30AUD"
}
Run Code Online (Sandbox Code Playgroud)

我是否需要以某种方式告诉Spring关于这个mapper,还是足够的注释?我应采取哪些其他步骤才能使反序列化工作?

java spring spring-mvc jackson

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

您是否允许Web Tier直接访问DAL?

我对感知"最佳实践"感兴趣,在这里用一点点现实来锻炼.

在Web应用程序中,您是否允许您的Web层直接访问DAL,还是应该首先通过BLL?

我特别谈的是没有真正涉及"业务逻辑"的场景 - 比如一个简单的查询:"获取姓氏为'Atwood'的所有客户".那些有任何逻辑的场景绝对会通过BLL,所以我们称之为moo.

虽然您可以将此方法封装在BLL对象中,但是当签名与DLL对象的签名完全相同时,似乎有点无意义,并且代码可能与将查询委派给DLL的一个简单的代码一样简单.

如果选择前者 - 使用BLL对象 - 你称这些对象是什么?(假设它们只是在DLL中提供查询层).助手?QueryProviders?

想一想.

问候

马蒂

design-patterns data-access-layer bll

17
推荐指数
2
解决办法
2539
查看次数

从Java中的相对URL构建绝对URL

我无法从相对URL构建绝对URL而无需使用String hackery ...

特定

http://localhost:8080/myWebApp/someServlet
Run Code Online (Sandbox Code Playgroud)

方法内部:

   public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
Run Code Online (Sandbox Code Playgroud)

什么是最"正确"的建设方式:

http://localhost:8080/myWebApp/someImage.jpg
Run Code Online (Sandbox Code Playgroud)

(注意,必须是绝对的,而不是相对的)

目前,我是通过构建字符串来实现的,但必须有更好的方法.

我查看了新URI/URL的各种组合,我最终得到了

http://localhost:8080/someImage.jpg
Run Code Online (Sandbox Code Playgroud)

非常感谢

java url relative-url

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

覆盖扩展接口中的返回类型 - 不好主意?

在Java中,您可以执行以下操作:

public interface IEngine{}
public interface ICoolEngine extends IEngine{}

public interface Car
{
   IEngine getEngine();
}
public interface ICoolCar extends ICar
{
    @Override
    ICoolEngine getEngine();
}
Run Code Online (Sandbox Code Playgroud)

虽然这很好地解决了我一直在努力解决的问题,但有些事情"感觉"错了.

我在这里做了一些讨厌的设计失礼吗?

java oop

15
推荐指数
1
解决办法
1355
查看次数

在ActionScript数组(Object [])和Vector.<Object>之间转换

是否有选项可以在不迭代数组的情况下将一个转换Array为一个VectorActionScript?

那其他方式(转换VectorArray)?

arrays iteration vector type-conversion actionscript-3

15
推荐指数
1
解决办法
8668
查看次数

使用反应堆的Flux.buffer批处理工作仅适用于单个项目

我正试图用来Flux.buffer()从数据库中批量加载。

用例是从数据库加载记录可能是“突发的”,我想引入一个小缓冲区,以便在可能的情况下将加载分组在一起。

我的概念方法是使用某种形式的处理器,发布到它的接收器,让该缓冲区,然后订阅并过滤所需的结果。

我尝试了多种不同的方法(不同类型的处理器,以不同的方式创建过滤后的Mono)。

下面是我到目前为止所到达的地方-主要是绊脚石。

当前,这将返回一个结果,但是后续的调用将被丢弃(尽管我不确定在哪里)。

class BatchLoadingRepository {
    // I've tried all manner of different processors here.  I'm unsure if
    // TopicProcessor is the correct one to use.
    private val bufferPublisher = TopicProcessor.create<String>()
    private val resultsStream = bufferPublisher
            .bufferTimeout(50, Duration.ofMillis(50))
            // I'm unsure if concatMapIterable is the correct operator here, 
            // but it seems to work.
            // I'm really trying to turn the List<MyEntity> 
            // into a stream of MyEntity, published on the Flux<>
            .concatMapIterable { requestedIds …
Run Code Online (Sandbox Code Playgroud)

java kotlin project-reactor reactive-streams

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

isAssignableFrom with reference和primitive类型

我想更好地理解原始和引用类型之间的Java中的isAssignableFrom行为.

例如:

System.out.println(boolean.class.isAssignableFrom(Boolean.class)); // false
System.out.println(Boolean.class.isAssignableFrom(boolean.class)); // false

boolean primitive;
Boolean referenceType = true;
primitive = referenceType;
System.out.println(primitive); // true
Run Code Online (Sandbox Code Playgroud)

我知道在分配原语< - >时会引用装箱/取消装箱根据需要发生,但我认为因此isAssignableFrom会在上面的前两个例子中返回true.

有人可以解释为什么它返回false,这里适当的测试是什么?

java generics types

13
推荐指数
2
解决办法
4649
查看次数