SpringBoot框架的應用、原理及搭建


一、前言

本文主要從框架應用、框架原理、框架搭建來講述對SpringBoot框架的理解。
應用案例:實驗室數據構造,卡口車輛通過記錄表數據構造

二、SpringBoot框架的應用

1、創建實體Entity類,獲取卡口車輛通過記錄表實體對象

該步驟參考文檔《IDEA中Hibernate的引入與使用》中章節2.配置數據庫和3.生產Hiberante的實體類及配置文件,使用Spring框架無需手動操作配置文件,只需按操作生成實體類即可。
創建的實體類如下所示:

2、創建數據操作Dao類,用於卡口車輛通過記錄數據的保存,及與其他表相關操作的查詢

1)Dao類引入Spring注解@Repository,用於標注數據訪問組件,即DAO組件;
2)該類繼承JpaRepository,帶兩個參數,第一個參數為實體對象,例:TClgjClkktgxxDay,第二個參數是該實體對象Id類型,例:Long
3)引入Spring注解@Query實現查詢功能,value內容輸入sql語句,指定nativeQuery=true即使用原生的sql語句查詢。List<Object[]>為返回的數據格式,getKkjbxxData()為方法內容。
原生sql中涉及參數化使用?1代表第一個參數,方法對應帶入參數即可。

實體Id類型

3、創建service類,用於實現數據組裝及插入

1)引入Spring注解@Component,作用:把普通pojo實例化到spring容器中,相當於配置文件中的 ,若未取名(只寫@Component未設置括號內容),bean的默認名字是類名首字母小寫
例:
注解@Service未設置bean名字

main是靜態方法無法獲取到這個實例的屬性,從容器中獲取到該bean的寫法如下:
FxfzxyrServiceImpl fxfzxyrService = (FxfzxyrServiceImpl) SpringBeanUtil.getBean("fxfzxyrServiceImpl");
若有設置bean名字則按bean名字填寫。
2)引入Spring注解@Autowired,作用:注入Dao類
3)由於使用JDBC的批量提交方法,故需要寫sql,sql的values后面對應的是實體對象定義的字段名,sql語句后面List 則是批量提交的list對象。

批量提交方法如下:

4、創建測試類,執行測試程序

1)@RunWith:指定SpringRunner類來運行
2)@SpringBootTest:配置文件的讀取
3)@Autowired:注入service類
4)@Test:測試方法

綜上所述,我們已經了解到springboot框架在數據構造中的應用操作。接下來了解下SpringBoot框架的原理。

三、SpringBoot框架的原理

1、啟動原理

1)場景應用測試類中指定從Start類啟動(可配置),啟動類主要包含以下配置
@Configuration:配置Spring並啟動Spring容器
@SpringBootAplication:繼承@Configuration注解,加載配置文件
@EnableJpaRepositories:用來掃描和發現指定包及其子包中的Repository定義,Spring Boot只會掃描啟動類當前包和以下的包 ,例:啟動類的包是在com.forezp.helloworld下面,然后就只會掃描com.forezp.helloworld或者com.forezp.helloworld.下面的包。
@EntityScan:用來掃描和發現指定包及其子包中的Entity定義,Spring Boot只會掃描啟動類當前包和以下的包 ,例:啟動類的包是在com.forezp.helloworld下面,然后就只會掃描com.forezp.helloworld或者com.forezp.helloworld.
下面的包。
@ComponentScan:用來掃描和發現指定包及其子包中的Component定義,自動裝配到spring的bean容器中,Spring Boot只會掃描啟動類當前包和以下的包 ,例:啟動類的包是在com.forezp.helloworld下面,然后就只會掃描com.forezp.helloworld或者com.forezp.helloworld.*下面的包。

  1. @PostConstruct
    被@PostConstruct修飾的方法會在服務器加載Servlet的時候運行,並且只會被服務器調用一次,類似於Serclet的inti()方法。被@PostConstruct修飾的方法會在構造函數之后,init()方法之前運行。

3)@PropertySource加載局部配置文件

/**
 * 表碼表配置
 */
@Configuration
@PropertySource("classpath:tables.properties")
@ConfigurationProperties(prefix = "table")
public class DictConfig {
    private static Map<String,String> bm = new HashMap<>();
    public static Map<String, String> getBm() {
        return bm;
    }
    public void setBm(Map<String, String> bm) {
        this.bm = bm;
    }
}

2、SpringBoot配置文件application.properties

配置數據庫信息,容器端口信息(默認使用Tomcat作為內嵌的Servlet容器,通過pom文件可以修改成其他容器如jetty)等其他

1)容器端口號設置
server.port=8080
2)上下文路徑設置
server.contex-path=/DataLab
3)配置文件切換
spring.profiles.active=dev 則讀取的配置文件是application-dev.properties
4)多配置文件
配置多個配置文件,分類存放配置信息
spring.profiles.active=server1,server2

3、pom中引入springboot相關的依賴包

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</version>
</parent>

<!-- Add typical dependencies for a web application -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>

4、SpringBoot打成可執行jar包,需要引入插件,並指定主函數入口

如下圖所示:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <mainClass>com.dragonsoft.testlab.TestSpringJMY</mainClass>
        <executable>true</executable>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

四、SpringBoot框架的搭建

1、搭建方法1

1)File>New>Project,New Project界面選擇Spring Initializr

2)選擇Spring Initializr,Project SDK選擇安裝的JDK,點擊Next

3)group:選擇包路徑,例如:com.xxx.example;Artifact:填寫項目名稱,例如:demo;,其他的不用管,點擊Next

4)選擇SpringBoot版本
選擇2.1.6,Web選擇Spring Web Starter,完成后點擊【Next】

5)project name:項目名稱;project location :項目路徑,點擊Finish

6)選擇創建一個新的空間 New Window
7)刪除沒有的文件 .mvn、mvnw、mvnw.cmd
至此一個SpringBoot框架搭建完成。

2、搭建方法2(推薦)

1)File->new,選擇maven,創建一個空項目,直接next

2)填寫工程名,點擊Next

3)填寫Project Name 和location,點擊Finish

4)在pom文件中引入SpringBoot相關依賴

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

5)在resource目錄下新建一個application.properties文件
配置tomcat端口

server.port=8080 server.tomcat.uri-encoding=utf-8

6)在application.properties中配置數據庫連接信息

spring.datasource.driverClassName=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@192.168.6.18:1521:orcl
spring.datasource.username=csbsys
spring.datasource.password=dragon

7)在application.properties中配置Spring Data JPA

spring.jpa.database = oracle
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.Oracle10gDialect
spring.jpa.show-sql = true
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy

8)設計Controller層(controller),Service層(service),Dao層(dao),創建配置類包(config),創建實體類包(entity),創建組件類包(component),創建公共類包(util)

9)配置項目啟動類Application

@Configuration
@SpringBootApplication(exclude = {MongoAutoConfiguration.class,MongoDataAutoConfiguration.class})
@EnableJpaRepositories(basePackages = {"com.dragonsoft.dataManage.*"})
@EntityScan(value={"com.dragonsoft.dataManage.*"})
@ComponentScan(value = {"com.dragonsoft.dataManage.*"})
public class Application {
    public static void main(String[] args) throws Exception {
        //啟動springboot
        ApplicationContext ac = SpringApplication.run(Application.class,args);
        SpringBeanUtil.setApplicationContext(ac);
}

10)啟動項目(運行啟動類Application)
頁面訪問地址tomcat配置的端口


免責聲明!

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



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