一、 了解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配置文件,而且结构更加的清晰。