1. 程式人生 > >使用idea搭建springboot

使用idea搭建springboot

參照https://blog.csdn.net/u013248535/article/details/55100979/

 1.首先利用idea建立一個空的maven專案

    空的maven專案結構如圖

 2.在pom.xml檔案中引入springboot的必要依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.cp</groupId>
    <artifactId>springboot-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

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

         </dependencies>

3.在名為java目錄下建立controller資料夾,在controller資料夾下新建一個簡單的測試類SampleController

 

@Controller
@EnableAutoConfiguration
public class SampleController {
    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(SampleController.class, args);
    }
}
 

4 執行這個main函式,在瀏覽器上開啟http://localhost:8080/ ,就會看到頁面上打印出hello word!

與我之前所熟悉的ssm框架的啟動模式不同的是,ssm框架需要安裝tomcat,將專案的war包放到tomcat上,啟動tomcat伺服器才可以完成部署。springboot的框架,他有一個入口main函式,在main函式中呼叫SpringApplication的run()方法,這個方法中應該集成了tomcat,將tomcat作為外掛融入,使使用者以最原始的java執行的方法(main方法)啟動專案

5 在上面的基礎上搭建簡單的mvc的web應用 

在java包下建立entity、repository、service資料夾分別存放實體類、Dao層實體方法介面和業務層實現類

entity:

@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer id;
    public String name;
    public String age;

    public Integer getId() {
        return id;
    }

    public User setId(Integer id) {
        this.id = id;
        return this;
    }

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

    public User setAge(String age) {
        this.age = age;
        return this;
    }
}
repository:
public interface UserRepository extends JpaRepository<User,Integer> {
    @Query("select t from User t where t.name = :name")
    User findBYUserName(@Param("name") String name);

}

service:

 

@Service
public class UserService {
    @Autowired
    private UserRepository userRepositoty;

    public User findUserByName(String name){
        User user = null;
        try{
            user = userRepositoty.findBYUserName(name);
        }catch (Exception e){}
        return user;
    }

}

controller

@Controller
public class UserController
{
    @Autowired
    private UserService userService;

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

    @RequestMapping(value = "/user/show",method = RequestMethod.GET)
    @ResponseBody
    public String show(@RequestParam(value = "name")String name){
        User user = userService.findUserByName(name);
        if(null != user)
            return user.getId()+"/"+user.getName();
        else return "null";
    }


}

 

地址 http://localhost:8080/user/index  旨在實現頁面的跳轉,html頁面實現

地址 http://localhost:8080/user/show  旨在實現查詢資料並顯示到頁面實現

 

6 在resource包下建立application.propetites檔案,配置伺服器釋出埠和編碼,資料庫連線,JPA和檢視層控制

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

#MySQL
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123

#Spring Data JPA
spring.jpa.database=MYSQL
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

#檢視層控制
spring.mvc.view.prefix=classpath:/templates/
spring.mvc.view.suffix=.html
spring.mvc.static-path-pattern=/static/**

 

7 在pom.xml中引入所需要的相關依賴(MySQL連線驅動 以及Spring Data JPA,thymeleaf模板引擎)

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.39</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>1.4.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>1.5.1.RELEASE</version>
</dependency>

 

8 在resource包下建立templates和static,分別存放html頁面和指令碼檔案

 9 在java包下建立configuration包存放配置類配置掃描包的位置,包括入口類

 

Entry:

@SpringBootApplication
@ComponentScan(basePackages = "com.cp")
class Entry {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Entry.class, args);
    }
}

 

JpaConfiguration : 

@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@EnableJpaRepositories(basePackages = "com.cp.repository")
@EntityScan(basePackages = "com.cp.entity")
public class JpaConfiguration {
    @Bean
    PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor(){
        return new PersistenceExceptionTranslationPostProcessor();
    }
}

在測試的時候出現了,找不到/user/mapping的錯誤,目前我沒有找到原因,只是修改了包的結構,在java包下新增加了com和cp包,更改了configuration的包的引用才可以