我的app配置:Tomcat 8,Spring,Spring MVC,Hibernate.
在Eclipse中,我创建了Tomcat Server,并将我的应用程序添加到资源中.JSP,JS,CSS和JAVA类热部署就像这样工作.
在IntelliJ中,我配置了Tomcat 8 Server.在部署选项卡中我添加了myapp:war exploded
.我启用On 'update' action
了Update classes and resources
,也启用了On frame deactivation: Update classes and resources
.JSP,JS,CSS热插拔就是这样的.Java类没有.
我也检查过了 Settings > Build, exection, deployment > Compiler > Make project automatically
PS.我知道我可以使用JRebel,但在Eclipse热部署中没有JRebel.为什么它在IntelliJ中不起作用?
Executors
Java 工厂使用无界的待处理任务队列。例如,对于接受任务没有限制的Executors.newFixedThreadPool
用途new LinkedBlockingQueue
。
public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}
Run Code Online (Sandbox Code Playgroud)
当新任务到达并且没有可用线程时,它会进入队列。任务可以无限期地添加到队列中,从而导致OutOfMemoryError
.
实际上使用这种方法的场景是什么?为什么 Java 创建者不使用有界队列?我无法想象无界比有界更好的场景,但我可能会遗漏一些东西。有人可以提供一个体面的解释吗?最好的事物!
一些代码:
public class Player {
Team team;
String name;
}
public class Team {
List<Player> players;
}
public class Demo {
@Inject
TeamDAO teamDAO;
@Inject
PlayerDAO playerDAO;
List<String> findTeamMatesNames(String playerName) {
Optional<Player> player = Optional.ofNullable(playerDAO.get(playerName));
return player.flatMap(p -> teamDAO.findPlayers(p.team))
.map(p -> p.name)
.orElse(Collections.emptyList());
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能这样做?在flatMap方法中我收到错误"类型不匹配:无法从列表转换为可选"
我的目标是:
如果存在可选项,我想根据此可选对象属性获取项目列表
如果不存在可选项,我想返回空列表
我可以在标准 Java 应用程序中轻松设置 Jetty 处理程序,如下所示:
public class Main {
public static void main(String[] args) throws Exception {
Main main = new Main();
main.start();
}
private void start() throws Exception {
Server server = new Server(9999);
server.setHandler(new Handler());
server.start();
server.join();
}
}
class Handler extends AbstractHandler {
@Override
public void handle(final String target, final Request baseRequest, final HttpServletRequest request, final HttpServletResponse response) throws IOException, ServletException {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
如何以与带有嵌入式 Jetty 的 Spring Boot 类似的方式设置 Handler?当我尝试使用EmbeddedServletContainerCustomizer
bean 时,我遇到了 …
有没有办法将HTML表单架构保存到JSON?
例如,当我有这样的事情
<form>
First name:<br>
<input type="text" name="firstname">
<br>
Last name:<br>
<input type="text" name="lastname">
</form>
Run Code Online (Sandbox Code Playgroud)
我怎么能达到这样的目的:
[
{
field: 'input',
type: 'text',
name: 'firstname'
},
{
field: 'input',
type: 'text',
name: 'lastname'
},
]
Run Code Online (Sandbox Code Playgroud)
我不是说它必须是如上所述的精确输出,但我如何能够实现类似的东西呢?
有什么更好的电话
names.stream().forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
比
names.stream().forEach(n -> System.out.println(n));
Run Code Online (Sandbox Code Playgroud)
尽管事实上您必须编写更少的代码?在Java 8中引入方法引用还有其他优点吗?
如何在Spring(Boot)Integration Tests中以惯用方式覆盖bean?
到目前为止,我的源代码配置如下:
@Configuration
class ApplicationConfiguration {
@Bean
CarsRepository carsRepository() {
// return some real sql db
}
}
Run Code Online (Sandbox Code Playgroud)
并进行如下测试:
@SpringBootTest
class ApplicationISpec extends Specification {
@Configuration
@Import(Application.class)
static class TestConfig {
@Bean
@Primary
CarsRepository testsCarsRepository() {
// return some in-memory repository
}
}
def "it can do stuff with cars"() {
// do some REST requests to application and verify it works
// there is no need to make real calls to real DB
}
}
Run Code Online (Sandbox Code Playgroud)
首先,测试bean testsCarsRepository
方法必须与原始方法不同(这并不明显,也没有警告/错误)。但是最后一个问题是:在集成测试中用Spring覆盖bean的惯用方式是什么? …