/** 创建对象注解
- 一.用来声明JavaBean对象的注解有四个 对应于配置文件中的Bean标签
- 1.@Component 都可以使用
- 2.@Controller 最好在表现层
3.@Service 最好在业务层
4.@Repository 最好在持久层
其中四个都可以声明JavaBean对象,当扫描对应包下的注解时,会将被这四个注解注解的类,创建对象,并添加到Spring的容器中
Value:声明在容器中的key
*/
/** 二.数据注入注解
- AutoWired注解
- AutoWired:当Spring容器中有与声明在属性上的数据类型相同的对象,会自动注入
- 出现位置:可以是变量上,可以是方法上
- set方法不是必须的
- AutoWired注解的执行流程
- 1.比较容器中对象的数据类型和要注入的属性的数据类型
- 2.如果容器中只有一个对象类型与注入对象类型相同,则将该对象注入
- 3.如果有多个相同,如果不指定是哪一个对象要被注入,就会报错
*/
/** 数据注入注解
- @Qualifier:根据存储在Spring容器中的名称进行注入(需配合AutoWired使用)
- 1.它在类中不能单独注入,要配合AutoWired进行使用,否则注入对象为空,注入失败
- 2.它可以在方法中单独使用,指定要注入对象的名称
- value:注入对象在容器中的key
- @Resource:指定name="Spring容器的key值"进行注入对象
- 以上两个只能注入JavaBean类的对象,无法注入基本数据类型的数据。且集合类型的数据只能通过xml进行注入
- @Value:能够注入基本类型数据,通过Spring的El表达式来注入
- 例如 @Value("#{wang}")
private String username;
当创建对象时,就会给username属性注入wang的值
*/
/** 三 生命周期注解
- @Scope注解 指定生命周期
- 默认是singleton单例
- 当指定为prototype为多例
- 单例的声明周期:
- 1.出生,容器创建时创建
- 2.存活,容器存在对象存在
- 3.死亡,容器销毁对象销毁
- 与容器同寿
- 多例的生命周期:
- 1.出生,动态的创建,按需创建
- 2.存活,对象工作时存活(引用不为空)
- 3.死亡, 引用为空由JVM自动进行垃圾清理,Spring不管垃圾清理
*/
/*
- 四.配置信息有关 注解
- @Configuration
- 作用:指定当前类是一个配置类
- @ComponentScan
- 作用:指定在初始化配置时,需要扫描哪些包。
- 与 <context:component-scan base-package=“com.itheima”></context:component-scan>作用相同
- @import注解
- 作用:可以直接导入分配置类,分配置类不需要再指定注解了
- 属性:value:指定其他配置类的字节码,当我们使用import的注解后,有import注解的就是父配置类,而导入的都是子配置类
**/
/**
- 五.方法注入有关 注解
- @Bean
- 作用:把当前方法返回值对象注入到Spring容器中
- Value指定注入对象的id
- 默认是方法的名称
- 当我们使用注解方法时,如果方法有参数,Spring框架会去查找是否有对应的Bean对象
- 查找的方式和@Autowired一致
- 即:数据类型相同且容器中只有一个查找成功,否则失败
- 如果有多个,需要指定在容器中的id 通过@Qualifier注解的id名称来进行查找
/
六.Spring整合junit注解
/* - Spring集成Junit
- @RunWith(类名)
- 作用:类继承Runner类 替换junit的运行类,在调用主函数的时候会根据配置文件初始化容器
- @ContextCon
- 属性 1.classes 如果以注解方式配置,classes=配置类.class
-
2.locations 如果以xml方式配置 locations:classpath类路径下的/文件名.xml
*/