小编fra*_*acz的帖子

使用Spring IoC在Guava EventBus中自动注册bean

假设我的应用程序中有一个语言更改事件接口(它基于Vaadin):

public interface ILanguageChangeListener{
    @Subscribe onLanguageChange(LanguageChangeEvent event);
}
Run Code Online (Sandbox Code Playgroud)

我有很多bean实现了这个用@Component注释的接口,因此它们可以在Spring IoC中使用.我还有一个EventBus bean:

<bean id="languageSwitcher" class="com.google.common.eventbus" scope="session" />
Run Code Online (Sandbox Code Playgroud)

现在,在从IoC获取任何bean的实例之后,我还必须得到一个languageSwitcher的实例,并在其中注册newely创建的bean:

languageSwitcher.register(myNewBean);
Run Code Online (Sandbox Code Playgroud)

为了接收这个事件.有可能以某种方式告诉IoC我想在每个实现ILanguageChangeListener的新bean上调用languageSwitcher bean的register方法吗?

java spring vaadin guava event-bus

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

如何将testCompile依赖项添加到IDE类路径

很长一段时间以来,我一直在努力解决unit-test-android问题.我已经看到了这个,这个那个,最后我找到了gradle-android-test-plugin甚至让它运行起来.我现在可以用gradlew test命令运行测试了.

但是,在IDE(Android Studio或IntelliJ 13)中编写这些测试是不太舒服的,因为它没有看到junit和Robolectric依赖项添加了testCompile依赖性.

有没有办法将这些依赖项添加到IDE类路径中,但仍然避免将它们打包到生产应用程序中(因此,compile不能使用AFAIU 依赖项)?

junit android gradle gradle-android-test-plugi

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

使用gulp-useref构建应用程序时,尊重CSS @import

我在我的项目中使用jQuery UI并使用gulp构建它.我通过以下方式包含其样式:

<!-- build:css styles/vendor/jqueryui.css -->
<link rel="stylesheet" href="bower_components/jqueryui/themes/base/jquery.ui.all.css">
<!-- endbuild -->
Run Code Online (Sandbox Code Playgroud)

当我使用gulp-useref插件构建它时,它将更改为:

<link rel="stylesheet" href="styles/vendor/jqueryui.css"/>
Run Code Online (Sandbox Code Playgroud)

问题是styles/vendor/jqueryui.css看起来像这样的内容:

@import "jquery.ui.base.css";@import "jquery.ui.theme.css";
Run Code Online (Sandbox Code Playgroud)

这些导入显然在分发包中失败,因为没有jquery.ui.base.cssjquery.ui.theme.css文件.他们没有被转移到dist包bower_components/jqueryui/themes/base/.

如何在指定所有jquery.*.css文件的情况下正确包含jQuery UI主题?

html css jquery-ui gulp

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

为什么永远不要从服务器中删除标签?

阅读Gerrit文档,它说:

[...] users should be really knowledgeable about git, 
for instance knowing why tags never should be removed from a server
Run Code Online (Sandbox Code Playgroud)

它没有详细说明这一说法.我没有看到任何问题,我也找不到任何关于它的信息.

那么,为什么永远不会从服务器中删除标签?

git gerrit

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

Spring 如何在 mongo 中构建它的 like* 查询?

我的 Mongo 数据库中有以下文档(跳过 _ids):

> db.names.find({})
{ "name": "John" }
{ "name": "Jack" }
{ "name": "Johny" }
{ "name": "Jenny" }
Run Code Online (Sandbox Code Playgroud)

我已经为此集合创建了 Spring 数据存储库:

public interface NameRepository extends MongoRepository<Name, ObjectId> {
    Collection<Name> findByNameLike(String name);
}
Run Code Online (Sandbox Code Playgroud)

结果如下:

nameRepository.findByNameLike("John"); // John, Johny
nameRepository.findByNameLike("John$"); // John
nameRepository.findByNameLike("J*ny"); // Johny, Jenny
nameRepository.findByNameLike("Jo?*ny"); // Johny, Jenny
nameRepository.findByNameLike("Jo[]]?*ny"); // empty, without error
Run Code Online (Sandbox Code Playgroud)

所以它的行为就像一个智能正则表达式。现在我想自己实现这样的行为:

class MyNameRepository {
    MongoOperations mongoOperations; // injected

    public Collection<Name> findByName(String like) {
        Query query = new Query();
        query.addCriteria(Criteria.where("name").regex(like));
        return mongoOperations.find(query, Name.class)
    } …
Run Code Online (Sandbox Code Playgroud)

java spring mongodb spring-data spring-data-mongodb

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

如何在 Aurelia 的路线之间重用数据?

我的系统中有一个用户实体,以下路由从服务器获取它并显示其详细信息:

routerConfiguration.map([
  // ...
  {route: 'user/:id', name: 'user-details', moduleId: './user-details'}
]);
Run Code Online (Sandbox Code Playgroud)

现在我想为所显示的用户显示一个编辑表单。我有以下要求:

  1. 编辑表单应该有一个单独的 URL 地址,以便可以轻松地将其发送给其他人。
  2. 当用户单击Edit用户详细信息页面上的按钮时,编辑表单应使用已加载的用户实例(即,不应再次联系 API 以获取用户详细信息)。
  3. 当用户单击Edit用户详细信息页面上的按钮,然后单击Back浏览器中的按钮时,他应该看到详细信息页面,而无需再次编辑表单。

第一次尝试

我尝试将编辑表单定义为单独的页面:

routerConfiguration.map([
  // ...
  {route: 'user/:id/edit', name: 'user-edit', moduleId: './user-edit'}
]);
Run Code Online (Sandbox Code Playgroud)

这通过了 #1 和 #3 要求,但在打开编辑表单时必须再次加载用户。

我不知道有什么方法可以在路线之间走私一些自定义数据。如果我可以将预加载的用户实例传递到编辑路由,并且编辑组件将使用它,或者在未给出的情况下加载一个新实例(例如,用户直接访问 URL),那就完美了。我只找到了如何以一种稍微有点hacky的方式将字符串传递给路由

第二次尝试

我决定在模态中显示编辑表单,并在有?action=editGET 参数时自动显示。受此问题和问题启发的代码:

export class UserDetails {
  // constructor
  activate(params, routeConfig) {
    this.user = /* fetch user */;
    this.editModalVisible = params.action == 'edit';
  }
}
Run Code Online (Sandbox Code Playgroud)

当用户单击该Edit按钮时,将执行以下代码: …

aurelia

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

为什么array_pad一次阻止添加超过1048576个元素?

array_pad文件说,

一次最多可添加1048576个元素.

我试图找到限制来自的任何信息,但找不到任何信息.唯一与此有关的问题是关于PDO:#1,#2,解决方案是扩大缓冲区的大小.但是没有PDO array_pad.

绝对可以创建一个包含更多元素的数组:

$array = range(1, 1048576 + 10);
echo count($array); // prints 1048586
Run Code Online (Sandbox Code Playgroud)

事实上,有一个硬编码检查不超过这个值array_pad来源.

但为什么?

php arrays

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

LocationListener和内存泄漏

根据找到用户位置的示例应用程序,监听活动中的位置更改是个好主意:

class MyActivity extends Activity implements LocationListener {
    @Inject
    private LocationManager locationManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
    }

    @Override
    public void onLocationChanged(Location location) {
        // do something with location
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

但是,我不确定.当配置发生更改时,我的活动将被销毁并重新创建,下次将自己注册为侦听器.对旧活动的引用是在LocationManager中进行的,不是吗?

如果我提取LocationListener到单独的对象,我仍然有如何通知当前活动有关新位置的问题(不一定与请求活动相同).

有没有什么共同的模式来解决这个问题?

android location memory-leaks locationlistener

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

尽管使用了 @Primary,但两个同名的 bean 仍会导致 ConflictingBeanDefinitionException

我有一个应用程序初始值设定项类,用于将应用程序特定数据插入数据库。

@Component("applicationInitializer")
public class ApplicationInitializer {
    @PostConstruct
    public void init(){
        // some clever code here
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一个DevApplicationInitializer类用于使用开发人员计算机上的一些示例数据初始化数据库(部署生产代码时不包括此类)。

@Component("applicationInitializer")
@Primary
public class DevApplicationInitializer extends ApplicationInitializer {
    @PostConstruct
    @Override
    public void init(){
        super.init();
        // even more clever code here
    }
}
Run Code Online (Sandbox Code Playgroud)

直到我给bean命名(只有@Component注释) - 一切都工作正常 - 当DevApplicationInitializer可用时,它被实例化而不是ApplicationInitializer. 当我给它们命名时applicationInitializer,抛出异常:

org.springframework.context.annotation.ConflictingBeanDefinitionException: 
Annotation-specified bean name 'applicationInitializer' for bean class
[com.example.DevApplicationInitializer] conflicts with existing, non-compatible 
bean definition of same name and class [com.example.ApplicationInitializer]
Run Code Online (Sandbox Code Playgroud)

当bean有名称时,为什么@Primary不尊重注释?我需要他们有一个,因为我确保在其他地方初始化程序已使用 …

java spring inversion-of-control spring-ioc

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

角度日期过滤器在firefox中不起作用

我正在使用日期过滤器在我的角度应用程序中格式化我的日期.

在Firefox中,我得到的日期值为

未定义的NaN,NaN NaN:NaN:NaN PM

在Chrome中它的效果非常好

2014年6月25日上午7:22:47

我的代码如下.

var formatDate = new Date(info.list[i].date);
var newDate=$filter('date')(formatDate, 'medium');
Run Code Online (Sandbox Code Playgroud)

如何让它在Firefox中运行?

date nan angularjs

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