Spring框架简介
官网 : https://spring.io
Spring是一个开源框架,为了解决项目的复杂开发过程而 创建的 整合了多方第三方软件
大大提高了开发效率,可维护性等问题.(低耦合)
IOC/DI 控制反转和依赖注入
添加依赖 spring-context
创建配置类 用@Configuration 将类交给spring 管理 使用@Bean声明Bean组件
进行测试 利用AnnotationConfigApplicationContext 创建IOC容器
getBean("beanID",类型)
JavaBean
javabean是为了规范java类的定义规则, 使程序规范一致
1.需要定义包package
2.有无参构造器
3.需要实现序列化接口
4.包含使用getXxx setXxx 声明的Bean属性xxx
Bean属性(Bean Property) 就是指getXxx setXxx 方法
对象属性(Object Field) 是指对象的实例数量
spring为了方便使用也支持对不标准的对象进行给管理
spring管理的对象时JavaBean对象 所以也称 为 javaBean容器/Bean容器/spring容器/IOC容器
Bean管理
Bean的作用域
singleton(单例的):在应用软件运行期间某个类型的对象只有一个 .无论什么时候取都是同一个对象(默认是单例的)
prototype(原型): 在应用运行期间有多个同类型的对象存在,每次从容器中获取的对象都是新的
可通过 @Scope("prototype")设置
对象的生命周期管理
对象从创建到销毁的过程 我们称为对象的生命周期
java提供了两个生命周期的方法 @PostConstruct 创建对象后执行
@PreDestroy 容器关闭销毁对象时执行
需要导入依赖 java.annotation-api
第二种: 在@Bean注解管理bean时 在属性initMethod+方法名(对象创建后执行)
destroyMethod+方法名(关闭容器时执行)
如果为prototype(原型) 每次都会创建新的对象 spring为了避免内存泄漏 不会缓存对象的引用 所以spring关闭的时候就无法处理对象的销毁方法了
慵懒初始化
为了提高性能, 我们将很少用的bean 在需要的时候在进行加载(慵懒初始化)
注解为 @Lazy
可以与@Component 一起使用 也可以与@Bean一起使用
@Import导入配置
spring提供了多配制功能 利用@Import注解可以同时使用多个配置类
分模块开发,分层开发都会用到 分模块开发是 甲乙两员工都在修改配置 这时就需要有人进行解决冲突 合并配置文件 开发效率下降 问题也多
两个人各自写 自己的配置文件 用Import进行合并
@Configuration
@Impor(a.clss,B.class)