一、 瞭解Spring的發展java
二、 掌握Spring的java配置方式web
三、 學習Spring Bootspring
四、 使用Spring Boot完成CRUD數據庫
在Spring1.x時代,都是經過xml文件配置bean,隨着項目的不斷擴大,須要將xml配置分放到不一樣的配置文件中,須要頻繁的在java類和xml配置文件中切換。apache
隨着JDK 1.5帶來的註解支持,Spring2.x可使用註解對Bean進行申明和注入,大大的減小了xml配置文件,同時也大大簡化了項目的開發。springboot
那麼,在實際生產中,到底是應該使用xml仍是註解呢?服務器
最佳實踐:mvc
一、 應用的基本配置用xml,好比:數據源、資源文件、服務器的連接配置等;app
二、 業務開發用註解,好比:Service中注入bean、controller中注入bean等;maven
從Spring3.x開始提供了Java配置方式,使用Java配置方式能夠更好的理解你配置的Bean,如今咱們就處於這個時代,而且Spring4.x和Spring boot都推薦使用java配置的方式。
Java配置是Spring4.x推薦的配置方式,能夠徹底替代xml配置。
Spring的Java配置方式是經過 @Configuration 和 @Bean 這兩個註解實現的:
1、@Configuration 做用於類上,至關於一個xml配置文件;
2、@Bean 做用於方法上,至關於xml配置中的<bean>;
該案例演示了經過Java配置的方式進行配置Spring,而且實現了Spring IOC功能。
建立過程略,建立完成後的項目結構以下圖
在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>
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 }
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 }
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 }
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 }
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 }
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配置文件,而且結構更加的清晰。