#每天三个技术问题# 3/29/2018

今天的问题

1)Java 9只用base模块,打包带JRE的可运行文件,有多大?

2)Linux的启动级别有哪些?systemd和init分别是怎么支持的?

3)HTML中的用途?

昨天的问题:

1)dagger是否有内部的可编程API可以使用?

2)Java9 的module-info.java是否可以通过Annoation生成?

3)process.env.NODE_ENV是一个标准么?

dagger是否有内部的可编程API可以使用?

Dagger是一个完全静态的Java和Android编译时IOC框架。 区别于Spring, Dagger的编译时IOC框架,是在编译时通过Annotation Processor生成好相关代码,可以减少运行时错误和反射创建对象的开销。

Dagger最开始是由Square开发的,现在由Google维护。Crazy Bob以前在Google开发了Guice(音蛛丝),虽然没拼过Spring,但产生JSR330。他后来到Square当CTO,又有了Dagger项目。

因为是编译时框架,dagger只有有限的API,复杂逻辑都在Annotation processor里了,所以并没有内部的可编API使用。

示例代码:

#每天三个技术问题# 3/29/2018_第1张图片

生成的代码:

#每天三个技术问题# 3/29/2018_第2张图片

Dagger配合Java 9的Module来限制Bean的可见性,应该还是不错的!

Java9 的module-info.java是否可以通过Annotation生成?

目测是可以通过@ModuleInfo生成module-info.java的。Annotation Processing API,可以生成源文件,支持package-info.java,同理支持module-info.java。

process.env.NODE_ENV是一个标准么?

NODE_ENV是express框架带火的一个环境变量,用于区分是当前运行程序是devlopment还是production,很多框架在用,但并不是标准。

你可能感兴趣的:(#每天三个技术问题# 3/29/2018)