Spring Boot02

1.项目业务初步实现及测试

业务实现基于 SpringBoot脚手架,并不是框架java

①步建立一个DefaultCache类,存储到src/main/java目录,而后交给spring管理
package com.cy.pj.common.cache;

@Component

public class DefaultCache {}

@Component是Spring中用于描述Bean类的一个注解。用于告诉Spring这个类的实例由Spring建立,当此对象由Spring建立和管理时,默认会将对象存储到池(Bean池)中。spring

②步 添加sringboot 测试类,进行bean的获取及测试,要放在src/test/java目录
package com.cy.pj.common.cache;

@SpringBootTest

public class DefaultCacheTests {

@Autowired

private DefaultCache defaultCache;

@Test

public void testCache() {

System.out.println(defaultCache);
}
}

@SpringBootTest 注解用于告诉spring框架,此测试类交给spring管理。
@Autowired注解描述属性时,用于告诉spring框架要为此属性注入一个值?(至于注入规则,后面课程慢慢增强)框架

③步代码设计及运行分析

image.png
描述了DefaultCacheTests类与DefaultCache类的关系,两个类经过指定注解(@SpringBootTest,@Component)进行了描述,其意图是告诉spring框架这个两个类的实例的建立由Spring负责,而且由Spring框架基于@Autowired注解的描述完成DefaultCacheTests实例中有关DefaultCache类型的值的注入(DI)。测试

第④步:为对象设计做用域,设置延迟加载,设置生命周期方法(了解)。spa

在Spring框架中,Spring为由它建立和管理的对象,设计了一些特性,例如做用域,延迟加载,生命周期方法等,基于这些特性实现对Bean对象的管理。prototype

package com.cy.pj.common.pool;
@Component
@Scope("singleton")

@Lazy

public class ObjectPool {

public ObjectPool() {

 System.out.println("ObjectPool()");

}

@PostConstruct

public void init() {

System.out.println("init()");

}

@PreDestroy

public void destory() {

System.out.println("destory");

}

}
  • @Lazy注解用于描述类,其目的是告诉spring框架此类支持延迟加载,一般会配合单例做用域使用。
  • @Scope 是Spring中用于定义Bean对象做用域的一个注解,其经常使用的值有

singleton(整个内存有一份Bean实例,此实例什么时候建立与类的延迟加载特性配置有关,此实例建立之后,生命周期会由spring框架管理),prototype(每次获取都会建立新实例,此实例会在须要时建立与lazy特性无关,这个实例建立之后,不会交给spring管理,spring能够对其初始化,但不负责销毁。)等。设计

  • @PostConstruct 注解用于描述bean对象生命周期方法中的初始化方法,此方法会在对象的构造方法以后执行(是对象建立之后的初始化)。
  • @PreDestroy 注解用于描述Bean对象生命周期方法中的销毁方法,此方法会在对象销毁以前执行(看成用域为prototype时,此方法不会执行)。
⑤步经过测试类测试做用域,延迟加载,生命周期方法

image.png

Spring框架管理Bean对象有什么优点吗

Spring 是一个资源整合框架(Framework),经过spring可将不少资源(本身写的对象或第三方提供的对象,例如链接池等)整合在一块儿,而后进行科学应用,以便更好的对外提供服务.code

image.png
思考:对象

  1. @Autowired注解应用规则?
  2. @Qualifier注解的做用是什么?

@Autowired由spring框架定义,用于描述类中属性或相关方法(例如构造方法)。Spring框架在项目运行时假如发现由他管理的Bean对象中有使用@Autowired注解描述的属性或方法,能够按照指定规则为属性赋值(DI)。其基本规则是:首先要检测容器中是否有与属性或方法参数类型相匹配的对象,假若有而且只有一个则直接注入。其次,假如检测到有多个,还会按照@Autowired描述的属性或方法参数名查找是否有名字匹配的对象,有则直接注入,没有则抛出异常。最后,假如咱们有明确要求,必需要注入类型为指定类型,名字为指定名字的对象还可使用@Qualifier注解对其属性或参数进行描述(此注解必须配合@Autowired注解使用)。blog

Spring Boot小结

  • Spring boot 是什么? (框架,也能够当作是框架脚手架,作了架子工要作的事情-搭建项目基础骨架的工做人员)
  • Spring boot 核心优点?(启动依赖,自动配置-开箱即用,健康检查-系统监控)
  • Spring boot 项目的建立方式?( https://start.spring.io)
  • Spring boot项目启动时,Bean的初始化过程是怎样的?(查找,加载,读和存储配置,建立和存储实例对象)
  • Spring boot 项目启动时,Bean对象的依赖注入过程是怎样的?(标记,查找,注入)
  • Spring 框架中的Bean对象有什么特性?(延迟加载,做用域,生命周期方法)
  • Spring 框架中单例(singleton)做用域对象特色,应用场景(频繁用)?
  • Spring 框架中多例(prototype)做用域对象特色,应用场景(稀少用)?
  • Spring管理bean对象时有什么优点?(为bean赋予了更加高级的特性,懒加载,单例做用域,生命周期方法)
相关文章
相关标签/搜索