第一個spring boot項目入門

1.創建一個基於maven的空的java項目
file–>new–>maven
在這裏插入圖片描述
填寫項目信息
在這裏插入圖片描述
創建好項目後的工程目錄結構:
在這裏插入圖片描述
接下來我們就需要構建我們的項目結構啦!在java下新建一些項目需要的包,和以前的ssm框架不同的地方是,我們新建了一個configuration包,這個包主要用於存放項目的配置類。就像ssm框架下我們要寫很多xml配置文件來配置spring、spring-mvc、mybatis一樣,spring boot也需要配置spring以及相關的dao層接口路徑等,但spring boot的好處在於我們不用去寫那些複雜的配置文件,而是用java類+註解的方式去配置。
在這裏插入圖片描述
接下來,我們就先來寫一個最簡單的demo,也是官方提供的一個最簡單的例子,寫一個SimpleController類,運行主函數,在瀏覽器中顯示“hello world!”
SimpleController類代碼:

package com.wang.web.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@EnableAutoConfiguration
public class SimpleController {
    @RequestMapping("/")
    @ResponseBody
    String home(){
        return "Hello World!";
    }
    public static  void  main(String[] args) throws Exception {
        SpringApplication.run(SimpleController.class,args);
    }
}

在運行main函數之前呢,我們還需要配置tomcat端口,這裏spring boot強大的地方又體現出來了,spring boot裏內嵌了tomcat插件,因此我們不用像以前用ssm框架一樣還要去在idea裏配置tomcat服務器。在resources下新建一個application.properties在裏面配置我們的端口信息

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

現在就可以運行main函數啦,在地址欄輸入localhost:8888,就可以看到“hello world!”啦!
在這裏插入圖片描述
2.跑一個spring boot 小demo,主要實現在地址欄加上name信息,能夠查詢數據庫中的信息,顯示出該name用戶的所有信息(id,name,password)
先要再添加一些項目運行需要的依賴,例如:MySQL連接驅動 以及Spring Data JPA,thymeleaf模板引擎。在pom.xml裏添加如下:

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.39</version>
        </dependency>
  
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>1.4.0.RELEASE</version>
        </dependency>

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

因爲需要用到數據庫,所以我們需要在application.properties裏配置數據庫信息。

#配置數據庫信息
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=980321

接下來需要配置Spring Data JPA。
Spring Data JPA : 致力於減少數據訪問層 (DAO) 的開發量, 開發者唯一要做的就只是聲明持久層的接口,其他都交給 Spring Data JPA 來幫你完成!

#配置Spring Data JPA
#數據庫類型爲mysql
spring.jpa.database=MYSQL
#日誌信息打印具體執行的SQL語句
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
# 表更新策略、java類到數據庫字段的映射規則
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

寫一個Admin實體類

package com.wang.web.entity;

import javax.persistence.*;
//這裏用到了Hibernate自動生成數據庫表策略,會在數據庫的admin表中自動生成id、name、password字段名
@Entity
@Table(name = "admin")
public class Admin {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private String password;

    public Admin() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

接下來需要寫接口來實現對數據的操作
新建AdminRepositoty.java接口文件

package com.wang.web.repository;

import com.wang.web.entity.Admin;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

@Repository
public interface AdminRepository extends JpaRepository<Admin,Long> {

    @Query("select t from Admin t where t.name = :name")
    Admin findAdminByName(@Param("name") String name);
}

編寫service層業務代碼,新建AdminService類:

package com.wang.web.service;

import com.wang.web.entity.Admin;
import com.wang.web.repository.AdminRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class AdminService {
    @Autowired
    private AdminRepository adminRepository;

    public Admin findAdminByName(String name) {
        Admin admin = null;
        try {
            admin = adminRepository.findAdminByName(name);
        }catch (Exception e){}
        return admin;
    }
}

然後就是編寫controller層啦,新建AdminController類,提供兩個接口,/admin/index 返回頁面,/admin/show返回數據。

package com.wang.web.controller;

import com.wang.web.entity.Admin;
import com.wang.web.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping(value = "/admin")
public class AdminController {
    @Autowired
    private AdminService adminService;

    @RequestMapping(value = "/index")
    public String index() {
        return "admin/index";
    }

    @RequestMapping(value = "/show")
    @ResponseBody
    public String show(@RequestParam(value = "name")String name){
        Admin admin = adminService.findAdminByName(name);
        if (null!=admin){
            return admin.getId()+"/"+admin.getName()+"/"+admin.getPassword();
        }
        else return "null";
    }
}

因爲在controller寫的頁面返回,所以需要在application.properties中配置頁面信息

#配置視圖層
spring.mvc.view.prefix=classpath:/templates/
spring.mvc.view.suffix=.html

在resource目錄下新建templates目錄,在templates目錄下新建admin目錄,在admin目錄下新建一個測試頁面,index.html,用於測試頁面訪問。

<!DOCTYPE html>
<html lang="en">
<head>
    <!--最開始這樣寫<meta charset="UTF-8">,報錯org.xml.sax.SAXParseException: 元素類型 "meta" 必須由匹配的結束標記 "</meta>" 終止。-->
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>
<h1>測試</h1>
</body>
</html>

接下來我們需要配置JPA,在configuration包下新建一個JpaConfiguration類,編寫項目配置信息

package com.wang.web.configuration;

import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.transaction.annotation.EnableTransactionManagement;

//JPA配置類
    @Order(Ordered.HIGHEST_PRECEDENCE)
    @Configuration
    @EnableTransactionManagement(proxyTargetClass = true)
    @EnableJpaRepositories(basePackages = "com.wang.web.repository")
    @EntityScan(basePackages = "com.wang.web.entity")
    public class JpaConfiguration {
        @Bean
        PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor(){
            return new PersistenceExceptionTranslationPostProcessor();
        }
    }

最後編寫項目進入點,新建Enter類

package com.wang.web.configuration;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

//項目啓動入口,配置包根路徑
@SpringBootApplication
@ComponentScan(basePackages = "com.wang.web")
public class Enter {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Enter.class, args);
    }
}

接下來運行main函數,在地址欄訪問localhost:8000/admin/index(這裏我把前面設置的端口改成了8000),訪問結果
在這裏插入圖片描述
地址欄訪問:locahost:8000/admin/show?name=admin,顯示數據
在這裏插入圖片描述
以上學習內容來自:IDEA下從零搭建spring boot項目

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章