SpringBoot框架
springboot是spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。在以往我们通过SpringMVC+Spring+Mybatis框架进行开发的时候,我们需要配置web.xml,spring配置,mybatis配置,然后整合在一起,而springboot抛弃了繁琐的xml配置过程,采用大量默认的配置来简化我们的spring开发过程。SpringBoot化繁为简,使开发变得更加的简单迅速。
约定大于配置
约定大于配置,也可以叫做约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,指在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。
Spring Boot正是在这样的一个背景下被抽象出来的开发框架,它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的Spring Boot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。
配置maven
下载maven
maven的conf文件夹下有setting.xml文件,打开后将本地仓库路径修改为自己的仓库路径,保存后退出。
打开设置->构建、执行、部署->构建工具->Maven
修改maven主路径、用户设置文件、本地仓库
点击应用后确定
搭建springboot项目
语言选择java
系统选择maven
点击创建
创建项目后的项目结构
在pom.xml中导入依赖
依赖从下方网址获取
Maven Repository: Search/Browse/Explore (mvnrepository.com)
添加到<dependencies></dependencies>标签中
点击下载依赖
或
下载完依赖以后,在main文件夹的java文件夹下创建包,示例中是org.example包,在该包下创建application类,用于启动项目
添加@SpringBootApplication注释
调用SpringApplication.run()方法
参数是application类的类对象和args
启动项目,出现图中所示后,证明项目配置成功
倒数第二行表示所用端口为8080
8080有时会显示被占用
此时需要修改端口号
在resources文件夹下创建application.yml文件
如图输入指定修改端口号重启即可
SpringIOC(控制反转)
用于管理项目中java bean的生命周期
在项目运行阶段,程序中需要很多的对象来完成整体的业务,SpringIOC把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。
SpringIOC负责创建对象,管理对象,装配对象,配置对象,并且管理这些对象的整个生命周期。由IOC容器管理的那些组成应用程序的对象我们就叫它Bean,Bean就是由Spring容器初始化,装配及管理的对象
Springboot提供了很多注解标注类用于实现IOC
@Controller @RestController(访问层)
@Service(业务类) @Repository(Dao数据访问)
@Component(其他功能类) @Bean
在类前使用以上注释便可以实现控制反转
其中@Service不能代替@Controller
DI(Dependancy Injection依赖注入)
IOC和和DI描述的是同一件事情,只不过角度不一样
在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件
当类A需要类B的对象时,仅需要在类A中声明类A依赖类B即可
而不需要通过代码主动获取类B的对象
使用@Autowirerd注释
SpringBean的作用域
1.singleton 单例模式 一个对象 默认使用单例模式
2.prototype 原型模式 每次需要都来一个新的对象
3.request web项目中请求作用域 每次request都会创建一个新的对象
4.session 每次会话都会创建一个新的对象
5.GlobalSession 全局的
SpringBean的生命周期
1.根据配置情况调用Bean构造方法或工厂方法实例化Bean
2.利用依赖注入完成Bean中所有属性值的配置注入
3.如果Bean实现了BeanNameAware接口,则Spring调用Bean的setBeanName()方法传入当前Bean的id值
4.如果Bean实现了BeanFactoryAware接口,则Spring调用setBeanFactory()方法传入当前工厂实例的引用
5.当一个Bean实现了ApplicationContextAware接口并在Spring容器中被实例化时,Spring容器会自动调用该Bean的setApplicationContext方法,并将应用程序上下文ApplicationContext作为参数传递进来
6.BeanPostProcessor是Spring框架中的一个重要接口,它允许开发者在Spring容器创建和初始化bean的过程中,对bean进行自定义处理。这包括 在bean实例化之后,属性设置之前(postProcessBeforeInitialization方法),以及在bean初始化之后(postProcessAfterInitialization方法)执行自定义逻辑。Spring容器在创建和初始化每一个bean时,都会调用CustomBeanProcessor中的两个方法,允许进行自定义处理。
在第六步执行的是postProcessBeforeInitialization方法
7.InitializingBean是Spring框架中的一个接口,它定义了一个afterPropertiesSet方法。当Spring容器创建bean的所有属性都被设置完成后,会调用这个方法。
8.如果在配置文件中通过initMethod属性制定了初始化方法,则调用该初始化方法
initMethod指定的方法必须是void类型,并且不接受任何参数
9.如果BeanPostProcessor和Bean关联,则Spring将调用该接口的初始化方法,postProcessAfterInitialization()。此时,Bean已经可以被应用系统使用了。