Java打印的幾個步驟
- 1構建springboot框架
- 2引入log日志
- 3構建java打印xml文件
- 4解析xml配置文件
- 5java打印
由於需要,現在要實現一個java打印的程序。我們開始第一步構建springboot項目。
第一步
打開idea,new 一個Project,選擇Spring initializr 初始化一個springboot項目。在pom文件中按下alt + insert 選擇Dependency使用idea的引入maven依賴。如下:
<!--基礎依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--httpClient連接-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<!--gogle的Zxing生成二維碼-->
<!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.zxing/javase -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.3</version>
</dependency>
<!--判斷非空等的工具依賴-->
<dependency>
<groupId>me.javy</groupId>
<artifactId>javy-helper</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--使用pojo解析xml文件所用-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
配置httpClient
1.httpClient連接可以遠程訪問服務器,獲取數據,有時需要。所以這里也配一下。下面我們進行httpClient配置。在config包下建一個httpClient和httpCLientService,一個是構建對象一個是連接服務。
在properties中寫入httpclient的基礎配置:
#http配置服務
#最大連接數
http.maxTotal = 100
#並發數
http.defaultMaxPerRoute = 20
#創建連接的最長時間
http.connectTimeout=1000
#從連接池中獲取到連接的最長時間
http.connectionRequestTimeout=500
#數據傳輸的最長時間
http.socketTimeout=10000
#提交請求前測試連接是否可用
http.staleConnectionCheckEnabled=true
2.在httpClient往容器中注入Bean屬性,采用注解@Value來實現如下:
@Configuration
public class HttpClient {
@Value("${http.maxTotal:1}")
private Integer maxTotal;
@Value("${http.defaultMaxPerRoute:1}")
private Integer defaultMaxPerRoute;
@Value("${http.connectTimeout:1}")
private Integer connectTimeout;
@Value("${http.connectionRequestTimeout:1}")
private Integer connectionRequestTimeout;
@Value("${http.socketTimeout:1}")
private Integer socketTimeout;
@Value("${http.staleConnectionCheckEnabled:true}")
private boolean staleConnectionCheckEnabled;
}
- 1.下面我們首先實列化一個連接池管理器,設置最大連接數,並發連接數。
@Bean(name = "httpClientConnectionManager")
public PoolingHttpClientConnectionManager getHttpClientConnectionManager(){
PoolingHttpClientConnectionManager httpClientConnectionManager = new PoolingHttpClientConnectionManager();
//最大連接數
httpClientConnectionManager.setMaxTotal(maxTotal);
//並發數
httpClientConnectionManager.setDefaultMaxPerRoute(defaultMaxPerRoute);
return httpClientConnectionManager;
}
- 2.實列化連接池,設置連接池管理器。我們需要用到spring的@Qualifier,其意為合格者,用於區分注解實例,參數名為我們的連接池管理器注解名稱。
@Bean(name = "httpClientBuilder")
public HttpClientBuilder getHttpClientBuilder(@Qualifier("httpClientConnectionManager")PoolingHttpClientConnectionManager httpClientConnectionManager){
//HttpClientBuilder中的構造方法被protected修飾,所以這里不能直接使用new來實例化一個HttpClientBuilder,可以使用HttpClientBuilder提供的靜態方法create()來獲取HttpClientBuilder對象
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
httpClientBuilder.setConnectionManager(httpClientConnectionManager);
return httpClientBuilder;
}
- 3.注入連接池,獲取client對象
@Bean
public CloseableHttpClient getCloseableHttpClient(@Qualifier("httpClientBuilder") HttpClientBuilder httpClientBuilder){
return httpClientBuilder.build();
}
- 4.Builder是requestConfig中的一個內部類,通過requestConfig的custom方法獲取builder的對象,設置builder的連接信息。
@Bean(name = "builder")
public RequestConfig.Builder getBuilder(){
RequestConfig.Builder builder = RequestConfig.custom();
return builder.setConnectTimeout(connectTimeout)//創建連接的最長時間
.setConnectionRequestTimeout(connectionRequestTimeout)//從連接池中獲取的連接最長時間
.setSocketTimeout(socketTimeout)//數據傳輸的最長時間
.setStaleConnectionCheckEnabled(staleConnectionCheckEnabled);//提交請求前測試連接是否可用
}
- 5.用builder構建一個requestConfig對象
@Bean
public RequestConfig getRequestConfig(@Qualifier("builder") RequestConfig.Builder builder){
return builder.build();
}
到此httpclient基礎信息初始化配置完成。