1. 今日大纲

1、 了解Spring的发展

2、 掌握Spring的java配置方式

3、 学习Spring Boot

4、 使用Spring Boot完成CRUD

2. Spring的发展

2.1. Spring1.x 时代

在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。

2.2. Spring2.x时代

随着JDK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行申明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发。

那么,在实际生产中,究竟是应该使用xml还是注解呢?

最佳实践:

1、 应用的基本配置用xml,比如:数据源、资源文件、服务器的链接配置等;

2、 业务开发用注解,比如:Service中注入bean、controller中注入bean等;

2.3. Spring3.x到Spring4.x

从Spring3.x开始提供了Java配置方式,使用Java配置方式可以更好的理解你配置的Bean,现在我们就处于这个时代,并且Spring4.x和Spring boot都推荐使用java配置的方式。

3. Spring的Java配置方式

Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置。

3.1. @Configuration @Bean

Spring的Java配置方式是通过 @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配置文件,并且结构更加的清晰。

转载于:https://www.cnblogs.com/newAndHui/p/8058527.html

springboot-day01-引入基础相关推荐

  1. 轩小陌的Python笔记:day01 计算机基础和环境搭建

    day01 计算机基础和环境搭建 课程目标:了解计算机的基础知识并完成python的环境搭建 课程概要: 计算机基础 编程的本质 Python的介绍 Python环境的搭建 1.计算机基础 1.1基本 ...

  2. day01 计算机基础和环境搭建

    day01 计算机基础和环境搭建 课程目标:让大家了解计算机基础知识并完成python的环境搭建 课程概要: 计算机基础 编程的本质 python的介绍 python环境的搭建 1.计算机基础 1.1 ...

  3. yue-library是一个基于SpringBoot封装的基础库

    yue-library是一个基于SpringBoot封装的基础库

  4. SpringBoot无法引入@RunWith注解解决方法

    SpringBoot无法引入@RunWith注解解决方法 1.首先检查是否添加好了Test的Starter依赖 <dependency><groupId>org.springf ...

  5. Springboot项目引入Bootstrap后,图标不能正常显示,报:Failed to decode downloaded font

    springboot项目引入bootstrap后,报:Failed to decode downloaded font,图标不能正常显示 在pom文件中,添加如下配置 <plugin>&l ...

  6. day01 - java基础语法

    day01 - java基础语法 1. Java概述 1.1 Java语言发展史(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国S ...

  7. Java springboot项目引入腾讯云COS实现上传

    Java springboot项目引入腾讯云COS实现上传 pom.xml 配置类CosConfig.java 上传工具类CosClientUtil.java pom.xml <!--腾讯云上传 ...

  8. SpringBoot@Schedule入门基础

    SpringBoot@Schedule入门基础 前言 Schedule是一个任务调度器,SpringBoot中可定时触发执行定时任务. 一.基本概念 在SpringBoot中,使用 @Schedule ...

  9. 木字楠后台管理系统开发(1):SpringBoot项目初始化并引入基础文件

  10. springboot dubbo引入包_spring boot 集成 dubbo 企业完整版

    一.什么是Spring Boot ? 现阶段的 Spring Boot 可谓是太火了,为什么呢?因为使用方便.配置简洁.上手快速,那么它是什么?从官网上我们可以看到,它是 Spring 开源组织下的一 ...

最新文章

  1. 【hexo】搭建个人bolg日志 day1
  2. sqlserver在linux数据备份,SQLServer数据库之sqlserver for linux自动备份数据库脚本
  3. 神经网络 并行预测_研究人员研究了为什么神经网络可以有效地进行预测
  4. java上传文件文件保存后损坏_Laravel存储文件在上传时会损坏
  5. 【SSL协议】SSL协议详解
  6. Android中贝塞尔曲线的绘制方法
  7. oracle中 rownum与rowid的理
  8. 信息学奥赛之数学一本通_部分地区中考加分,又一批中学公布中考认可信息学特长生!...
  9. anaconda安装好tensorflow后,无法在jupyter notebook上使用的解决方法
  10. 荣耀Magic 3更多细节曝光:全系挖孔屏+最高100W快充
  11. office2010下载
  12. 手机安装python3.5_CentOS 7安装Python3.5
  13. CCF NOI1060 雷同检测
  14. JavaScript-关于变量
  15. c语言如何直接获得键盘反应,c语言获得键盘的按键
  16. 对有父子关系的层级数据项,递归实现绑定到ListControl进行树状列表化的分层输出...
  17. Windows操作系统免费下载地址(itellyou)
  18. 升级wireshark支持openflow13抓包
  19. php iis7.5_浅析iis7.5安装配置php环境
  20. P3456 [POI2007]GRZ-Ridges and Valleys(bfs)

热门文章

  1. 一支口红用了5年_用了7年微信才知道!原来微信隐藏5大实用功能,比app更好用...
  2. linux 修改密码和端口号_WINDOWS/LINUX系统修改管理员密码方法
  3. shell逻辑运算符优先级_逻辑运算符有那些?
  4. vue 自定义指令_vue 自定义指令
  5. AcWing 1843. 圆形牛棚(暴力+枚举)
  6. 智乃的树旋转(easy version)(思维+暴力)
  7. 计算机的用户软件在哪,电脑自带录屏软件在哪?这里教你怎么找
  8. 夜间模式(模仿喜马拉雅FM)
  9. 时序数据库InfluxDB 2.0 alpha 发布:主推新的Flux查询语言,TICK栈将成为整体
  10. Hive学习之路 (十九)Hive的数据倾斜