你怎么能有一个实现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应用程序环境中执行此操作?
谢谢!
我很好奇人们喜欢用什么方法来嘲笑和为什么.我所知道的两种方法是使用硬编码模拟对象和模拟框架.为了演示,我将概述一个使用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.我是嘲笑框架的新手,所以我很好奇为什么我们使用它们,如果我们可以做到以上几点?
当以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) 我遇到了一个问题,即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"错误,这是有道理的,因为我的事务已经从我的服务中提交了.
谢谢!
我正在尝试使用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) 我最近一直在研究JAX-RS,因为我非常喜欢Java平台和REST风格的Web开发.我已经阅读了很多关于使用JAX-RS创建RESTful Web服务的内容,但是是否可以使用JAX-RS创建RESTful网站?我想更具体地说,是否可以使用JAX-RS作为控制器(从服务器检索所需的数据),然后将控制转发给视图引擎以呈现适当的HTML?
我一直在谷歌搜索,但没有找到任何资源,告诉你如何做到这一点.
感谢您的任何见解/帮助.
我正处于需要在运行时确定EntityManager的单元名称的情况.
例如,我想做这样的事情:
@PersistenceContext(unitName = findAppropriateJdbcName())
EntityManager entityManager;
Run Code Online (Sandbox Code Playgroud)
但是,注释不可能实现这一点.
当你不确定单元名称是什么直到运行时,是否可以创建EntityManager?
我正在尝试使用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)
谢谢您的帮助.
在Java Servlet API中,如何确保某人的会话ID不被盗?
例如,如果我有一个活跃的会话,而某人以某种方式获得我的会话ID,他们可以使用它吗?
我正在尝试使用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的第一个请求.对于发生的事情,我真的很困惑.如果有人有任何想法我会非常感谢你的帮助.
java ×5
java-ee ×2
javascript ×2
jpa ×2
jquery ×2
ajax ×1
environment ×1
gson ×1
hibernate ×1
httpsession ×1
java-ee-6 ×1
jax-rs ×1
jpa-2.0 ×1
long-polling ×1
mocking ×1
netty ×1
rest ×1
security ×1
servlets ×1
spring ×1
testing ×1
unit-testing ×1