小编Bri*_*asa的帖子

自动装配任务发送到Spring TaskExecutor

你怎么能有一个实现Runnable并提交给弹簧TaskExecutor自动装配的类?

例如,我有一个任务:

public class MyTask implements Runnable {

    @Autowired private MyRepository myRepository;

    @Override
    public void run() {
        myRepository.doSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

以及将任务发送到spring TaskExecutor的服务:

@Service
public class MyService {

    @Autowired private TaskExecutor taskExecutor;

    public void someMethod() {

        MyTask myTask = new MyTask();
        taskExecutor.execute(myTask);

    }

}
Run Code Online (Sandbox Code Playgroud)

我知道字段没有自动装配,因为MyTask正在使用新的MyTask()进行实例化.但是,我该如何解决这个问题呢?我是否应该访问Spring的ApplicationContext并通过它创建bean?您将如何在Web应用程序环境中执行此操作?

谢谢!

java spring

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

硬编码模拟对象与模拟框架

我很好奇人们喜欢用什么方法来嘲笑和为什么.我所知道的两种方法是使用硬编码模拟对象和模拟框架.为了演示,我将概述一个使用C#的示例.

假设我们有一个名为GetEmployeeById的方法的IEmployeeRepository接口.

public interface IEmployeeRepository
{
    Employee GetEmployeeById(long id);
}
Run Code Online (Sandbox Code Playgroud)

我们可以轻松地创建一个这样的模拟:

public class MockEmployeeRepository : IEmployeeRepository
{
    public Employee GetEmployeeById(long id)
    {
        Employee employee = new Employee();
        employee.FirstName = "First";
        employee.LastName = "Last";
        ...
        return employee;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,在我们的测试中,我们可以使用setter或依赖注入显式地告诉我们的服务使用MockEmployeeRepository.我是嘲笑框架的新手,所以我很好奇为什么我们使用它们,如果我们可以做到以上几点?

testing unit-testing mocking

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

OO JavaScript - 避免自我=这个

当以OO方式使用JavaScript时,有没有人知道如何绕过声明var self = this?我经常看到它并且好奇它是否只是你必须要做的事情,或者是否真的有办法(也许是一个类库?)让你绕过它?我确实知道为什么有必要(这有功能范围).但你永远不知道那里会有什么聪明的方法......

例如,我通常在JS中编写这样的"类":

function MyClass() {

}

MyClass.prototype = {

    firstFunction: function() {

        var self = this;

        $.ajax({
            ...
            success: function() {
                self.someFunctionCall();

            }
        });
    },

    secondFunction: function() {

        var self = this;

        window.setTimeout(function() {
            self.someOtherFunction();
        }, 1000);
    }

};
Run Code Online (Sandbox Code Playgroud)

javascript

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

JPA2/Hibernate - 停止延迟加载?

我遇到了一个问题,即JPA在我不想要的时候试图懒洋洋地加载我的数据.基本上发生的事情是我正在使用服务来检索一些数据,当我将这些数据解析为JSON时,JSON库正在触发hibernate尝试并且懒洋洋地加载数据.有没有办法阻止这个?我在下面给出了一个例子.

// Web Controller method
public String getEmployeesByQuery(String query) {

    Gson gson = new Gson();
    List<Employee> employees = employeeService.findEmployeesByQuery(query);

    // Here is where the problem is occurring - the gson.toJSON() method is (I imagine)
    // using my getters to format the JSON output, which is triggering hibernate to
    // try and lazily load my data...
    return gson.toJSON(employees);
}
Run Code Online (Sandbox Code Playgroud)

是否可以将JPA/hibernate设置为不尝试并且懒惰地加载数据?

更新:我意识到你可以使用FetchType.EAGER - 但如果我不想急于加载那些数据呢?我只想阻止hibernate尝试检索更多数据 - 我已经拥有了我想要的数据.现在每当我尝试访问get()方法时,hibernate都会抛出"no session或session is closed"错误,这是有道理的,因为我的事务已经从我的服务中提交了.

谢谢!

java hibernate jpa gson

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

在测试环境中启动轨道

我正在尝试使用ruby脚本在测试环境中加载rails.我试过谷歌搜索,发现这个建议:

require "../../config/environment"
ENV['RAILS_ENV'] = ARGV.first || ENV['RAILS_ENV'] || 'test'
Run Code Online (Sandbox Code Playgroud)

这似乎加载了我的环境,但我的开发数据库仍在使用中.难道我做错了什么?

这是我的database.yml文件...但我不认为这是问题

development:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: BrianSite_development
  pool: 5
  username: root
  password: dev
  host: localhost

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: BrianSite_test
  pool: 5
  username: root
  password: dev
  host: localhost …
Run Code Online (Sandbox Code Playgroud)

environment ruby-on-rails

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

是否可以将JAX-RS用作Web框架?

我最近一直在研究JAX-RS,因为我非常喜欢Java平台和REST风格的Web开发.我已经阅读了很多关于使用JAX-RS创建RESTful Web服务的内容,但是是否可以使用JAX-RS创建RESTful网站?我想更具体地说,是否可以使用JAX-RS作为控制器(从服务器检索所需的数据),然后将控制转发给视图引擎以呈现适当的HTML?

我一直在谷歌搜索,但没有找到任何资源,告诉你如何做到这一点.

感谢您的任何见解/帮助.

java rest jax-rs

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

当您不确定单位名称时,如何创建EntityManager?

我正处于需要在运行时确定EntityManager的单元名称的情况.

例如,我想做这样的事情:

@PersistenceContext(unitName = findAppropriateJdbcName())
EntityManager entityManager;
Run Code Online (Sandbox Code Playgroud)

但是,注释不可能实现这一点.

当你不确定单元名称是什么直到运行时,是否可以创建EntityManager?

java jpa java-ee java-ee-6 jpa-2.0

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

Rails ajax请求只加载视图html

我正在尝试使用rails和jQuery创建一个支持AJAX的网页.那我遇到的问题是,当我尝试使用jQuery的AJAX方法加载一个视图到一个div我得到我的应用程序布局视图返回.有没有办法只检索视图数据,如果它是一个AJAX请求,但加载我的应用程序布局,以及如果它不是一个AJAX请求?

这是我调用的控制器方法:

def new
   @blog = Blog.new

   respond_to do |format|
       format.html # Goes to the new.html.erb view.
       format.xml { render :xml => @blog }
   end
end
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

ajax jquery ruby-on-rails

6
推荐指数
2
解决办法
8360
查看次数

是什么阻止了HttpSession的id被盗?

在Java Servlet API中,如何确保某人的会话ID不被盗?

例如,如果我有一个活跃的会话,而某人以某种方式获得我的会话ID,他们可以使用它吗?

java security servlets java-ee httpsession

6
推荐指数
2
解决办法
1500
查看次数

长轮询 - Internet Explorer 8的问题

我正在尝试使用Netty和jQuery实现长轮询.

我让它与Chrome和Firefox一起正常工作,但Internet Explorer 8引起了我的问题.

我正在执行以下代码,该代码向我的服务器发送请求,等待直到从服务器收到响应,然后发送另一个请求.

function longPollRequest() {
    $.ajax({
        url: '/test-path',
        type: 'GET',
        success: function(data, textStatus, jqXHR) {
            longPollRequest();
            console.log('Received: ' + data);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

但是,在IE8中,我遇到了一个无限循环,这会冻结浏览器.有趣的是,我的服务器只接收来自IE的第一个请求.对于发生的事情,我真的很困惑.如果有人有任何想法我会非常感谢你的帮助.

javascript jquery long-polling netty

6
推荐指数
1
解决办法
2820
查看次数