传统构建应用程序
传统的项目构建是需要Spring中提供众多的子项目来构建Spring应用程序,Spring Framework提供核心功能,其他的负责数据获取消息传递等等,其他的子项目都依赖于Spring Framework,整合成一个完整的项目
随着业务需求的复杂化,大型化,传统的方式已经不再满足,比如,
- 导入依赖繁琐:需要手动引入依赖,并且jar包互相有冲突
- 项目配置繁琐:还需要写大量相应的配置文件.xml,在applicationContext.xml中要声明大量的bean对象,因为使用Spring这些对象,要先声明在使用
SSM框架
SSM框架作为传统的构建应用程序框架,Spring + Spring MVC + MyBatis是传统 Java Web 开发的经典组合框架。
Spring Framework是Spring中最核心基础的部分。
IOC(控制反转)
下面展示了代码编写过程中耦合度偏高的状况,因为来了新的数据,而要修改bookDao的对象,就要重新编写代码,重新测试,重新确定逻辑,非常麻烦,所以我们使用对象是,尽量不要主动new创建对象,要转换为外部提供对象,保证低耦合度
而IOC的思想就是使用对象时,有主动new创建对象转换为由外部提供对象,此过程中对象创建控制权有程序转移到外部,整个过程的目的就是充分解耦
spring提供了一个容器,成为IOC容器,充当IOC思想中的外部,用于管理对象的创建和初始化的过程
而由IOC容器创建和管理的对象成为Bean
DI(依赖注入):在容器中简历bean和bean之间的依赖关系的过程,比如,dao层要依赖于service层实现save方法,而两个bean都在IOC容器中,所以IOC容器就为两个bean创建了依赖关系
IOC实例分析
1.导入Spring的坐标Spring-context之后再去 配置文件
2.创建Spring配置文件applicationContext.xml,在文件中配置Bean,告诉IOC容器哪些Bean是要管理的
3.初始化并获取IOC容器,并告诉IOC容器相关的配置信息在applicationContext.xml文件中
4.获取bean,并运行方法
DI案例分析
5.
6.即可以创建Dao的对象
7.在配置文件中描述Service于Dao层的关系
Bean
bean的作用范围说明了bean默认是单例模式,即同一个Bean对象创建出来的Dao指向同一地址,避免每管理一个bean都创建新的对象,浪费大量内存
Bean的实例化的三种方式
无参构造方法
Spring创建bean的时候,调用的的是无参构造方法
静态工厂构造方法
早期的工程中,就会使用静态工厂实例化Bean,首先创建一个工厂类,然后再配置中让bean指向工厂对象,再备注使工厂对象创造的方法
实例工厂实例化bean
首先创造实例工厂,这里与前面静态工厂不同的是有没有static修饰符,并且在运行方法的时候,实例工厂要先创建对象,再运行。其次再配置方面,首先创建一个bean指向该工厂类,再创建一个bean,指向该工厂bean要涉及的方法,就会很麻烦,如果方法名很多,则要创建不同的工厂bean指向不同的房方法
使用FactorBean实例化bean
这是实例工厂的变种,只需要创建出相应的统一的Factorybean方法,在该方法中用于创建不同的方法bean就行
SpringBoot
与传统构建项目相比,Springboot就是Spring的一个子项目,用于快速构建应用程序,有以下特点
起步依赖:sb提供一个起步依赖,整合了一个功能所需要的其他依赖,一节更比六节强!
自动配置:遵循约定大于配置原则,boot程序启动后,一些bean对象会自动注入到IOC容器中,不用手动声明
其他特性
Bean扫描
扫描主要有两种方式
- 标签:
- 注解:
!!@ComponentScan的扫描范围是所在的包及其子包
为什么启动类只有一个注解?因为它相当于三个注解
--》
Bean注册
有以下四种衍生方式注入到IOC容器中
注册第三方
可是,与要想注册的对象来自于第三方(不是自定义的),是无法用@Component即衍生注解声明Bean的,就衍生出一下两种方式声明第三方对象
@Bean:要想将第三方对象注入到IOC容器中,就要在该方法创建新对象的时候,加上@Bean对象,将方法的返回值交给IOC容器管理,成为IOC容器的管理对象,
另外,如果要采用@Bean方法注册,不建议在启动类中,在配置类中集中注册
@Import:只需要@Import(xxx.class)就可以将xxx类中的bean对象自动注入的IOC容器中,开发中更多的是导入配置类和ImportSelector接口实现类
Bean的注册条件
bean只有在封装数据的时候才有意义,所以注入的bean必须在下面三种常用方式下才算有意义
总结:Bean在SSM和SpringBoot的不同
整合Mybatis
1.导入mybatis起步依赖,boot会自动注入bean对象到IOC容器
2.在.yml的文件中写数据库相关的配置,包括数据库的驱动,数据库的连接,数据库的用户名和密码等配置
3.