springboot的java打印票據


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>

avator

配置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;
    }

avator

  • 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基礎信息初始化配置完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM