day01
@PostConstruct 注解
会在启动时,所有依赖都已经注入之后,会调用这个方法 (一般用于在你的业务逻辑执行前,Spring的依赖注入执行后,添加一段业务逻辑)
比如:你想在依赖注入后,你执行一个业务之前,还想调用某个方法或者进行某种运算以便你的业务使用,就可以使用这个注解
@PostConstruct void xxxx(){}
@PreDestroy注解
在关闭时,在销毁Bean实例之前,会调用这个方法,例如关流或者在销毁前要关闭某些东西,在这里处理会比较方便(有助于释放资源和清理)
@PreDestroy void xxxx(){}
@Stereotype注解
说明:
是 Spring框架的注解
@Service业务类
@Repository数据访问类
@Controller 和 @RestController 是 web类 (SpringMVC)
@Configuration java配置
而以上这5种注解,其实底层都是@Component注解 之所以一样的功能要叫不同的名字,就是为了方便分层
而这些注解,统称为 @Stereotype注解
@Meta(自定义注解)
使用@Target描述注解存在的位置 ElementType.TYPE 应用于类的元素 ElementType.METHOD 应用于方法级 ElementType.FIELD 应用于字段或属性(成员变量) ElementType.ANNOTATION_TYPE 应用于注解类型 ElementType.CONSTRUCTOR 应用于构造函数 ElementType.LOCAL_VARIABLE 应用于局部变量 ElementType.PACKAGE 应用于包声明 ElementType.PARAMETER 应用于方法的参数 使用@Retention注解描述这个自定义注解的生命周期(被保留的时间的长短) SOURCE 在源文件中有效(即源文件保留) CLASS 在class文件中有效(即class保留) RUNTIME 在运行时有效(即运行时保留)
注解补充
之所以有的注解,例如@Override重写注解,可以写可以不写,效果一样,但是有的注解必须写, 就因为这个Meta
总结:
定义Spring Bean的方式:
显示的:使用@Bean方法
隐式的:使用@Component 和组件扫描 ( @componentScan("") )
大部分应用程序中使用 自己的写的类使用隐式的 其他的类使用显式的
进行初始化和清理
使用:@PostConstruct 和 @PreDestroy
@Autowired
说明:
将使用IOC保存在容器中的Bean对象注入某个属性或者字段中
用法:
可以使用在构造方法上,并且有几个参数就可以注入几个参数,可以注入多个参数(推荐使用在构造方法上) 必须存在唯一的匹配类型的依赖
可以使用在方法上,
可以使用在字段上
注意:不能使用在类上!
自动装配/自动布线 也叫依赖注入 相当于别名
规则:
查找与所需类型匹配的唯一Bean
如果提供了@Qulifer则尝试根据名称查找匹配的Bean