Spring boot 之啓動學習Hello world

以前spring開發需要配置一大堆的xml,後臺spring加入了annotaion,使得xml配置簡化了很多,當然還是有些配置需要使用xml,比如申明component scan等。

Spring開了一個新的model spring boot,主要思想是降低spring的入門,使得新手可以以最快的速度讓程序在spring框架下跑起來。

一、Spring Boot啓動學習案例

1.新建一個Maven Java 工程

使用IDE(Eclipse,MyEclipse)工具新建一個Maven工程,可以是Maven Java Project,也可以是Maven Web Project,隨便取一個工程名稱。我使用的是eclipse

2.在pom.xml文件中添加Spring Boot Maven依賴

(1)添加依賴管理。spring-boot-starter-parent,引入以後在申明其它dependency的時候就不需要version了
 

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

(2)Maven Web。因爲我們開發的是web工程,所以需要在pom.xml中引入spring-boot-starter-web,spring官方解釋說spring-boot-start-web包含了spring webmvc和tomcat等web開發的特性

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

(3) Maven Run Application。如果我們要直接Main啓動spring,那麼以下plugin必須要添加,否則是無法啓動的。如果使用maven 的spring-boot:run的話是不需要此配置的。spring boot加上這個插件,纔可以使用Java -jar命令來啓動jar包,並且有了這個插件,打的包裏面纔會有maven依賴的jar包和spring boot的啓動類,所以打的jar包也就比較大,而且MANIFEST.MF文件裏面也會有啓動類的信息。但是如果不加這個插件,則打的包裏面就只有class文件, 沒有依賴的Jar包,MANIFEST.MF文件裏面也沒有啓動類的信息,所以如果不加這個插件就不能獨立啓動。注意:在用idea調試的時候加不加插件都可以啓動,看不出來不同,所以必須要獨立啓動jar包纔可以看出來。而且如果用了spring boot但是不需要獨立啓動,就不要加這個插件,否則spring boot會因爲找不到啓動類而導致報錯。

<build>
     <plugins>  
        <plugin>  
             <groupId>org.springframework.boot</groupId>  
             <artifactId>spring-boot-maven-plugin </artifactId>  
        </plugin>  
     </plugins>
  </build>

3.編寫啓動類

真正的程序開始啦,我們需要一個啓動類,然後在啓動類申明讓spring boot自動給我們配置spring需要的配置,比如:@SpringBootApplication,爲了可以儘快讓程序跑起來,我們簡單寫一個通過瀏覽器訪問hello world字樣的例子:

@RestController
@SpringBootApplication
public class App {
	
	 public static void main(String[] args) {
		 SpringApplication.run(App.class, args);
	 }
	 
	 @RequestMapping("/")
	 public String hello() {
		return "hello springboot!!!!!!";
	 }
	
	 
}

其中@SpringBootApplication申明讓spring boot自動給程序進行必要的配置,等價於以默認屬性使用@Configuration,@EnableAutoConfiguration和@ComponentScan

@RestController返回json字符串的數據,直接可以編寫RESTFul的接口,等價於@Controller + @ResponseBody。但使用@RestController這個註解,就不能返回jsp、html頁面,視圖解析器無法解析jsp、html頁面,這時需要使用@Controller註解。

以上代碼的寫法也可以寫成兩個類,即啓動器@SpringBootApplication和@RestController或@Controller分開的方式。效果是一樣的。如:

@SpringBootApplication  
public class App {  
              public static void main(String[] args) {  
                 SpringApplication.run(App.class, args);  
       }  
}  
@RestController// 標記爲:restful  
public class HelloController {  
     
    @RequestMapping("/")  
    public String hello(){  
       return "Hello world!";  
    }  
}  

4.運行程序

有兩種運行方式:

第一種:右鍵Run As -> Java Application。打開瀏覽器輸入地址:http://127.0.0.1:8080/ 就可以看到Hello world!了。

第二種:右鍵project – Run as – Maven build – 在Goals裏輸入spring-boot:run ,然後Apply,最後點擊Run。

 
	 @RequestMapping("/byZero")
	 public int zeroException(){
		 return 100/0;
	 }
	 
	 @RequestMapping("/UserDo")
	 public UserDo userDo(){
		 UserDo user = new UserDo();
		 user.setId(2);
		 user.setName("mengxh");
		 return user;
	 }

 

 

二、springboot 數據庫連接

application.properties配置

########################################################
###datasource
########################################################
spring.datasource.url = jdbc:mysql://localhost:3309/springboot?characterEncoding=utf8&useSSL=true
spring.datasource.username = root
spring.datasource.password = AKE124
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10

########################################################  
### Java Persistence Api  
########################################################  
# Specify the DBMS
spring.jpa.database = MYSQL
# Show or not log for each sql query  
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)  
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

pom.xml中加入依賴

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

實體類UserDo


@Entity
@Table(name="user")
public class UserDo {
	@Id @GeneratedValue
	private Integer id;
	private String name;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	
}

UserRepository

package com.mxh.test.app.dao;

import org.springframework.data.repository.CrudRepository;

import com.mxh.test.app.bean.UserDo;

public interface UserRepository extends CrudRepository<UserDo, Integer> {

}

UserService

package com.mxh.test.app.server;

import javax.annotation.Resource;
import javax.transaction.Transactional;

import org.springframework.stereotype.Service;

import com.mxh.test.app.bean.UserDo;
import com.mxh.test.app.dao.UserRepository;
@Service
public class UserService {
	
	@Resource
	private UserRepository userRepository;
	
	@Transactional
	public void saveUser(UserDo user){
		userRepository.save(user);
	}
}

UserController

package com.mxh.test.app.controller;

import javax.annotation.Resource;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.mxh.test.app.bean.UserDo;
import com.mxh.test.app.server.UserService;

@RestController
@RequestMapping("/User")
public class UserController {
	@Resource
	private UserService userService;
	
	@RequestMapping("/saveUser")
	public String saveUser(){
		UserDo user = new UserDo();
		user.setName("zzz");
		userService.saveUser(user);
		return "userSave success!!";
	}
}

運行查看http://localhost:8080/User/saveUser即可

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