最近我在很少的项目中看到很多代码使用流来过滤对象,比如:
library.stream()
.map(book -> book.getAuthor())
.filter(author -> author.getAge() >= 50)
.map(Author::getSurname)
.map(String::toUpperCase)
.distinct()
.limit(15)
.collect(toList()));
Run Code Online (Sandbox Code Playgroud)
使用它而不是直接HQL/SQL查询到数据库返回已经过滤的结果是否有任何好处.
第二种方法不是更快吗?
试图重构一些代码.我看到一些创建DTO对象的类正在服务层中传递,后来由@RestController返回.据我所知,最好只在控制器中构建数据传输对象并将它们传递给视图,尤其是当我们使用WrapperDTO<T>
get和set值之类的东西时.当我们使用复杂对象或简单数据类型构建WrapperDTO时,可能存在差异.所有的oppinions将非常感激.
我正在查看我在工作区中的一些旧例子.由于没有@Autowired,我无法看到自动装配是如何完成的.Spring boot + facebook默认配置.
@Controller
@RequestMapping("/")
public class HelloController {
private Facebook facebook;
private ConnectionRepository connectionRepository;
public HelloController(Facebook facebook, ConnectionRepository connectionRepository) {
this.facebook = facebook;
this.connectionRepository = connectionRepository;
}
@GetMapping
public String helloFacebook(Model model) {
System.out.println("we are here!!!");
if (connectionRepository.findPrimaryConnection(Facebook.class) == null) {
return "redirect:/connect/facebook";
}
PagedList<Post> feed = facebook.feedOperations().getFeed();
model.addAttribute("feed", feed);
return "hello";
}
}
Run Code Online (Sandbox Code Playgroud)
它完美无缺,但这些bean如何在没有@Autowired的情况下自动装配?它们是作为字段还是在构造函数中自动装配?
我试过类似的东西
Thread
.getAllStackTraces()
.keySet()
.stream()
.map(
$->{
System.out.println
($.getStackTrace());
return $;
});
Run Code Online (Sandbox Code Playgroud)
我觉得这不是最好的方法.还有其他方法吗? 最简单的方法是什么?使用Stream API.(需要打印整个堆栈跟踪)
java ×4
java-8 ×2
spring ×2
algorithm ×1
autowired ×1
collections ×1
dto ×1
hibernate ×1
java-stream ×1
spring-mvc ×1