小编str*_*ash的帖子

在使用数据库时,为什么要使用Java 8 Stream API而不是直接的hibernate/sql查询

最近我在很少的项目中看到很多代码使用流来过滤对象,比如:

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查询到数据库返回已经过滤的结果是否有任何好处.

第二种方法不是更快吗?

java hibernate java-8 java-stream

20
推荐指数
5
解决办法
6146
查看次数

数据传输对象DTO在何处构建

试图重构一些代码.我看到一些创建DTO对象的类正在服务层中传递,后来由@RestController返回.据我所知,最好只在控制器中构建数据传输对象并将它们传递给视图,尤其是当我们使用WrapperDTO<T>get和set值之类的东西时.当我们使用复杂对象或简单数据类型构建WrapperDTO时,可能存在差异.所有的oppinions将非常感激.

java spring spring-mvc dto

4
推荐指数
2
解决办法
4122
查看次数

没有注释的自动装配@Autowired

我正在查看我在工作区中的一些旧例子.由于没有@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的情况下自动装配?它们是作为字段还是在构造函数中自动装配?

java spring autowired

3
推荐指数
1
解决办法
1625
查看次数

如何使用Java 8 stream api打印线程列表

我试过类似的东西

  Thread
        .getAllStackTraces()
        .keySet()
        .stream()
        .map(
                $->{
                    System.out.println
                    ($.getStackTrace());
                    return $;
                    });
Run Code Online (Sandbox Code Playgroud)

我觉得这不是最好的方法.还有其他方法吗? 最简单的方法是什么?使用Stream API.(需要打印整个堆栈跟踪)

java algorithm collections java-8

-1
推荐指数
1
解决办法
445
查看次数