业务实现基于 SpringBoot脚手架,并不是框架java
package com.cy.pj.common.cache; @Component public class DefaultCache {}
@Component是Spring中用于描述Bean类的一个注解。用于告诉Spring这个类的实例由Spring建立,当此对象由Spring建立和管理时,默认会将对象存储到池(Bean池)中。spring
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框架要为此属性注入一个值?(至于注入规则,后面课程慢慢增强)框架
描述了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"); } }
singleton(整个内存有一份Bean实例,此实例什么时候建立与类的延迟加载特性配置有关,此实例建立之后,生命周期会由spring框架管理),prototype(每次获取都会建立新实例,此实例会在须要时建立与lazy特性无关,这个实例建立之后,不会交给spring管理,spring能够对其初始化,但不负责销毁。)等。设计
Spring 是一个资源整合框架(Framework),经过spring可将不少资源(本身写的对象或第三方提供的对象,例如链接池等)整合在一块儿,而后进行科学应用,以便更好的对外提供服务.code
思考:对象
@Autowired由spring框架定义,用于描述类中属性或相关方法(例如构造方法)。Spring框架在项目运行时假如发现由他管理的Bean对象中有使用@Autowired注解描述的属性或方法,能够按照指定规则为属性赋值(DI)。其基本规则是:首先要检测容器中是否有与属性或方法参数类型相匹配的对象,假若有而且只有一个则直接注入。其次,假如检测到有多个,还会按照@Autowired描述的属性或方法参数名查找是否有名字匹配的对象,有则直接注入,没有则抛出异常。最后,假如咱们有明确要求,必需要注入类型为指定类型,名字为指定名字的对象还可使用@Qualifier注解对其属性或参数进行描述(此注解必须配合@Autowired注解使用)。blog