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

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

那么,问题来了,究竟是应该使用xml还是注解呢?

最佳实践:
1、应用的基本配置用xml,比如:数据源、资源文件等;
2、业务开发用注解,比如:Service中注入bean等;

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

2、SpringBoot简介
那什么是springboot呢?
随着动态语言的流行(Ruby、Groovy、scala、Node.js),java的开发显得格外笨重:繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术集成难度大。
在上述环境之下,Spring Boot应运而生。使用“约定优于配置”(项目中存在大量的配置,此外还内置一个习惯性的配置,让你无须手动进行配置)的理念让你的项目快速运行起来。使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很少的Spring配置。

Spring Boot核心功能
1、独立运行的Spring项目
Spring Boot可以以jar包的形式独立运行,运行一个Spring Boot项目只需通过java -jar xx.jar 来运行。

2、内嵌Servlet容器
Spring Boot 可以选择内嵌Tomcat、Jetty或者Undertow,这样我们无序以war包形式部署项目。
3、提供starter简化Maven配置
Spring提供一系列的start pom 来简化Maven的依赖加载,例如在Maven里面加上这个,会自动加入如下图所示额依赖包。

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


4、自动配置Spring
Spring Boot 会根据在类路径中的jar包、类,尾jar包里的类自动配置Bean,这样会极大地减少我们要使用的配置。
5、准生产的应用监控。
6、无代码生成和XML配置
Spring Boot的神奇之处不是借助于代码生成来实现的,而是通过条件注解来实现的,这是Spring 4.x提供的新特性.
Spring4.x提倡使用Java配置和注解配置组合,而Sring Boot 不需要任何XML配置即可实现Spring的所有配置。

3、Spring的优点
优点:
1.快速构建项目
2.对主流开发框架的无配置集成
3.项目可独立运行,无序外部依赖Servlet
4.提供运行时的应用监控
5.极大的提高了开发、部署效率
6.与云计算天然集成

4、入门案例
第一步:创建工程和导入依赖
pom.xml 如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.RELEASE</version></parent><groupId>cn.itcast.springboot</groupId><artifactId>itcast-springboot</artifactId><version>1.0.0-SNAPSHOT</version><packaging>war</packaging><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.7.RELEASE</version></dependency><!-- 连接池 --><dependency><groupId>com.jolbox</groupId><artifactId>bonecp-spring</artifactId><version>0.8.0.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><!-- 资源文件拷贝插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><configuration><encoding>UTF-8</encoding></configuration></plugin><!-- java编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins><pluginManagement><plugins><!-- 配置Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version></plugin></plugins></pluginManagement></build>
</project>

编写一个User类:

package com.bjsxt.boot.pojo;public class User {private String username;private String password;private Integer age;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User [username=" + username + ", password=" + password + ", age=" + age + "]";}}

编写Spring Boot 配置类:

//通过该注解来表明该类是一个spring的配置,相当于一个xml文件
@Configuration
//配置扫描包
@ComponentScan(basePackages="com.bjsxt.boot")
public class SpringConfig {@Bean//通过该注解来表名是一个Bean对象,相当于xml中的<bean>public UserDao getUserDao(){return new UserDao();}
}

编写一个Dao,这儿我们用一个List模拟一些数据:

public class UserDao {public List<User> queryUserList() {List<User> result = new ArrayList<User>();// 模拟数据库的查询for (int i = 0; i < 10; i++) {User user = new User();user.setUsername("username_" + i);user.setPassword("password_" + i);user.setAge(i + 1);result.add(user);}return result;}
}

编写一个Service:

@Service
public class UserService {@Autowiredprivate UserDao userDao;public List<User> queryUserList(){return this.userDao.queryUserList();}
}

最终需要运行Spring Boot项目,编写如下类:

public class Client {public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);UserService service = context.getBean(UserService.class);List<User> list = service.queryUserList();for (User user : list) {System.out.println(user);}}
}

最终打印结果:

User [username=username_0, password=password_0, age=1]
User [username=username_1, password=password_1, age=2]
User [username=username_2, password=password_2, age=3]
User [username=username_3, password=password_3, age=4]
User [username=username_4, password=password_4, age=5]
User [username=username_5, password=password_5, age=6]
User [username=username_6, password=password_6, age=7]
User [username=username_7, password=password_7, age=8]
User [username=username_8, password=password_8, age=9]
User [username=username_9, password=password_9, age=10]

Spring Boot 的web入门案例:

//控制层
@Controller
//相当于xml
@Configuration
//spring boot 的核心配置 主要目的开启自动配置
@SpringBootApplication
public class WebDemo01 {@RequestMapping("hello")@ResponseBodypublic String hello(){return "hello Spring Boot!";}/*** springBoot 的启动方式* * */public static void main(String[] args) {SpringApplication.run(WebDemo01.class, args);}
}

运行:此处有两种方式运行,第一是通过Maven Build 运行 spring-boot:run
第二种就是直接通过:run application 运行
然后通过浏览器直接访问:http://127.0.0.1/hello 即可访问,因为spring boot 自身继承了web服务器,不需要外部的web容器来运行它。

J2EE开发的颠覆者SpringBoot快速入门!相关推荐

  1. SpringBoot | SpringBoot快速入门

    文章目录 SpringBoot快速入门(一) 1.什么是SpringBoot 2.什么是微服务架构 3.第一个SpringBoot程序 4.SpringBoot自动装配原理 (1)Pom.xml (2 ...

  2. SpringBoot快速入门(IDEA联网版)

    SpringBoot快速入门 目录 SpringBoot快速入门 @[TOC](目录) SpringBoo介绍 1.新建空项目 2.查看maven版本 3.创建新模块 4.springboot联网功能 ...

  3. 【机器学习-数据科学】第二节:ipython开发环境搭建以及pandas快速入门

    ipython开发环境搭建以及pandas快速入门 0.开发环境搭建 技巧 网页版ipython:ipython notebook numpy 1.pandas 快速入门一 导入 创建对象 2. pa ...

  4. java和以太坊交互_java类库web3j开发以太坊智能合约快速入门

    web3j简介 web3j是一个轻量级.高度模块化.响应式.类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成. 可以通过它进行以太坊 ...

  5. appinventor2 MySQL,写给大家看的安卓应用开发书 App Inventor 2快速入门与实战pdf

    没错,你有能力创建自己的安卓应用,而且一点都不难.AppInventor2,让你分分钟成为应用开发者! 本书由浅入深地介绍了强大的可视化编程工具AppInventor2,任何人都可以用它来开发自己的应 ...

  6. SpringBoot快速入门

    Spring Boot 入门 1.SpringBoot简介 Spring是为了解决企业级应用开发的复杂性而创建的,简化开发. Spring是如何简化Java开发的 为了降低Java开发的复杂性,Spr ...

  7. SpringBoot约定大于配置的特性解读 SpringBoot快速入门

    SpringBoot约定大于配置 Spring官方网站本身使用Spring框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Bean依赖关系.随着Spring 3.0的 ...

  8. 基于SpringBoot的SSM整合案例 -- SpringBoot快速入门保姆级教程(四)

    文章目录 前言 1.设计创建数据库表tbl_book 2.创建新的SpringBoot模块,勾选相关依赖 3. 添加SpringBoot创建项目时没有提供的相关坐标 4.根据数据库表创建实体类Book ...

  9. SpringBoot快速入门——helloworld(来自官网)

    SpringBoot官网快速入门指南 首先使用SpringBoot官网快速创建可以创建一个小项目 创建完以后点击下面的Generate可以下载一个zip文件,将文件解压到指定位置. 打开idea,新版 ...

最新文章

  1. Dependency injection in ASP.NET Core
  2. java swing 传值_java swing 窗体之间怎么传值?
  3. 用于数据库测试的DBUnit,Spring和注释
  4. echarts 有引导线和内部文字_上进青年研习社丨设计入门02:平面设计之平面构成中的线...
  5. 华为智慧屏云会议怎么操作_像玩手机一样玩转车机,华为智选车载智慧屏是怎么做到的?...
  6. WinDbg、Symbol Packages、SRVINSTW、DebugView下载地址
  7. node.js 抓取全国区域代码、邮政编码、电话区号
  8. 大漠插件保护盾_易辅客栈第8套 大漠插件命令详解及使用方法
  9. 离散数学笔记--重言式
  10. Windows XP中的命令行界面
  11. 一公司的产品策划职位要求
  12. 鸟与虫(四)pexels搜到的我都想要,
  13. C++求最大与最小值
  14. RB女歌手宇西个人单曲《盛宴》上线 诠释独自疗伤的故事
  15. 控制图简明原理及Plotly实现控制图Python实践
  16. 苹果ios超级签名源码包java版带分发页面支持安卓合并
  17. 你真的理解C语言的灵魂 “ 指针 ” 吗?(初阶篇)
  18. 7-3 学习打卡(12.26)
  19. 原创超简单代码(1.27)
  20. AlertDialog,安卓自带取消确认按钮的弹出框

热门文章

  1. Fio使用和结果分析
  2. 林轩田之机器学习课程笔记( how can machines learn better之three learning principles)(32之16)
  3. mi5s plus android 8.0,小米5s Plus获安卓8.0系统更新:续航能力、速度和安全极大提升...
  4. 无线互联北京培训基地第49期学员李天游
  5. 实践,制作一个高扩展、可视化低代码前端,详实、完整
  6. 烤星 · DeFi 课堂丨如何理解 DeFi 项目中的治理代币?(上)
  7. 小程序发展前景好不好
  8. 【论文相关】SCI查询
  9. 代码质量----PMD、FindBug、checkstyle、sonar这些代码检查工具的区别
  10. 使用lodop打印el-table表格无法显示内容,只显示表头的问题