springboot-day01-引入基礎

1. 今日大綱

一、 瞭解Spring的發展java

二、 掌握Springjava配置方式web

三、 學習Spring Bootspring

四、 使用Spring Boot完成CRUD數據庫

2. Spring的發展

2.1. Spring1.x 時代

Spring1.x時代,都是經過xml文件配置bean,隨着項目的不斷擴大,須要將xml配置分放到不一樣的配置文件中,須要頻繁的在java類和xml配置文件中切換。apache

2.2. Spring2.x時代

隨着JDK 1.5帶來的註解支持,Spring2.x可使用註解對Bean進行申明和注入,大大的減小了xml配置文件,同時也大大簡化了項目的開發。springboot

 

那麼,在實際生產中,到底是應該使用xml仍是註解呢?服務器

 

最佳實踐:mvc

一、 應用的基本配置用xml,好比:數據源、資源文件、服務器的連接配置等;app

二、 業務開發用註解,好比:Service中注入bean、controller中注入bean等;maven

2.3. Spring3.xSpring4.x

Spring3.x開始提供了Java配置方式,使用Java配置方式能夠更好的理解你配置的Bean,如今咱們就處於這個時代,而且Spring4.xSpring boot都推薦使用java配置的方式。

3. SpringJava配置方式

Java配置是Spring4.x推薦的配置方式,能夠徹底替代xml配置。

3.1. @Configuration @Bean

SpringJava配置方式是經過 @Configuration @Bean 這兩個註解實現的:

1@Configuration 做用於類上,至關於一個xml配置文件;

2@Bean 做用於方法上,至關於xml配置中的<bean>

3.2. 案例

案例演示了經過Java配置的方式進行配置Spring,而且實現了Spring IOC功能。

 

3.2.1.基於intellij idea建立web maven項目

  建立過程略,建立完成後的項目結構以下圖

3.2.2. 導入依賴

  在pom.xml中添加依賴

 

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 3   <modelVersion>4.0.0</modelVersion>
 4   <groupId>com.day01.springboot.demo</groupId>
 5   <artifactId>day01_springboot_demo</artifactId>
 6   <packaging>war</packaging>
 7   <version>1.0-SNAPSHOT</version>
 8   <name>day01_springboot_demo Maven Webapp</name>
 9   <url>http://maven.apache.org</url>
10   <dependencies>
11  <!--   引入springmvc包-->
12     <dependency>
13       <groupId>org.springframework</groupId>
14       <artifactId>spring-webmvc</artifactId>
15       <version>4.3.7.RELEASE</version>
16     </dependency>
17 
18     <dependency>
19       <groupId>junit</groupId>
20       <artifactId>junit</artifactId>
21       <version>3.8.1</version>
22       <scope>test</scope>
23     </dependency>
24   </dependencies>
25   <build>
26     <finalName>day01_springboot_demo</finalName>
27   </build>
28 </project>

 

 

 

 3.2.3建立web項目結構如圖

3.2.4.在model中建立User.java對象

 1 package com.day01.springboot.demo.model;
 2 
 3 /**
 4  * Created by Administrator on 2017/12/19.
 5  */
 6 public class User {
 7     private Integer id;
 8     private String userName;
 9     private String password;
10 
11     public Integer getId() {
12         return id;
13     }
14 
15     public void setId(Integer id) {
16         this.id = id;
17     }
18 
19     public String getUserName() {
20         return userName;
21     }
22 
23     public void setUserName(String userName) {
24         this.userName = userName;
25     }
26 
27     public String getPassword() {
28         return password;
29     }
30 
31     public void setPassword(String password) {
32         this.password = password;
33     }
34 }
User.java

 

3.2.5. 編寫UserDao 用於模擬與數據庫的交互

 

 1 package com.day01.springboot.demo.dao;
 2 
 3 import com.day01.springboot.demo.model.User;
 4 
 5 import java.util.ArrayList;
 6 import java.util.List;
 7 
 8 /**
 9  * Created by Administrator on 2017/12/19.
10  */
11 public class UserDao {
12     public List<User> queryUserList(){
13         List<User> result = new ArrayList<User>();
14         // 模擬數據庫的查詢
15         for (int i = 0; i < 10; i++) {
16             User user = new User();
17             user.setId(i);
18             user.setUserName("知識帝-"+i);
19             user.setPassword("admin-"+i);
20             result.add(user);
21         }
22         return result;
23     }
24 }
UserDao.java

 

3.2.6.編寫UserService 用於實現User數據操做業務邏輯

 1 package com.day01.springboot.demo.service;
 2 
 3 import com.day01.springboot.demo.dao.UserDao;
 4 import com.day01.springboot.demo.model.User;
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.stereotype.Service;
 7 
 8 import java.util.List;
 9 
10 /**
11  * Created by Administrator on 2017/12/19.
12  */
13 @Service
14 public class UserService {
15     @Autowired // 注入Spring容器中的bean對象
16     private UserDao userDAO;
17 
18     public List<User> queryUserList() {
19         // 調用userDao中的方法進行查詢
20         return userDAO.queryUserList();
21     }
22 }
UserService

3.2.7. 編寫SpringConfig 用於實例化Spring容器

 1 package com.day01.springboot.demo;
 2 
 3 import com.day01.springboot.demo.dao.UserDao;
 4 import org.springframework.context.annotation.Bean;
 5 import org.springframework.context.annotation.ComponentScan;
 6 import org.springframework.context.annotation.Configuration;
 7 
 8 /**
 9  * Created by Administrator on 2017/12/19.
10  */
11 @Configuration //經過該註解來代表該類是一個Spring的配置,至關於一個xml文件
12 @ComponentScan(basePackages = "com.day01.springboot.demo") //配置掃描包
13 public class SpringConfig {
14 
15     @Bean // 經過該註解來代表是一個Bean對象,至關於xml中的<bean>
16     public UserDao getUserDAO(){
17         return new UserDao(); // 直接new對象作演示
18     }
19 }
SpringConfig.java

3.2.8. 編寫測試方法 用於啓動Spring容器

 1 package com.day01.springboot.demo;
 2 
 3 import com.day01.springboot.demo.model.User;
 4 import com.day01.springboot.demo.service.UserService;
 5 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 6 
 7 import java.util.List;
 8 
 9 /**
10  * Created by Administrator on 2017/12/19.
11  */
12 public class Main {
13     public static void main(String[] args) {
14         // 經過Java配置來實例化Spring容器
15         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
16         // 在Spring容器中獲取Bean對象
17         UserService userService = context.getBean(UserService.class);
18         // 調用對象中的方法
19         List<User> list = userService.queryUserList();
20         for (User user : list) {
21             System.out.println(user.getId()+" , "+user.getUserName() + ", " + user.getPassword() );
22         }
23         // 銷燬該容器
24         context.destroy();
25     }
26 }
Main.java

 3.2.9.測試結果

0 , 知識帝-0, admin-0
1 , 知識帝-1, admin-1
2 , 知識帝-2, admin-2
3 , 知識帝-3, admin-3
4 , 知識帝-4, admin-4
5 , 知識帝-5, admin-5
6 , 知識帝-6, admin-6
7 , 知識帝-7, admin-7
8 , 知識帝-8, admin-8
9 , 知識帝-9, admin-9

該結果表示,咱們雖然沒有配置任何xml文件,但也能夠設置於獲取bean.由此能夠得出結論:

使用Java代碼就完美的替代xml配置文件,而且結構更加的清晰。

相關文章
相關標籤/搜索