Spring-注解

103 阅读2分钟

对象的定义

  • @Component:标注这个类是一个组件,该类由IOC容器创建对象并管理
    • @Component("accountDao")=<bean id="accountDao" class="com.itheima.review.dao.impl.AccountDaoImpl">
    • bean的id默认是类名周字母小写,可以通过value属性值修改:@Component(value = "accountDao") 可以简写成 @Component("accountDao")
三层上的注解

@Controller@Service@Repository:是@Component的特殊化,用于更特定的位置(分别用在表示层、业务层、持久层)。

@Repository、@Service、@Controller

以上三个注解标注的类更适合由工具处理或与切面关联(事务处理)。还可以在Spring框架的未来版本中携带额外的语义。

@Component:除了表示层、业务层、持久层外,如果该类对象需要由sping容器管理,使用该注解

对象的存活范围

@Scope

标注在类上,用于指定bean的作用范围,相当于配置文件中的scope属性

对象生命周期

@PostConstruct

标注在方法上,该方法会在bean对象创建之后执行,等同于xml中的 init-method

@PreDestroy

标注在方法,该方法会在bean对象销毁之前执行,等同于xml中的 destroy-method

依赖注入 - 引用类型

@Autowired

@Autowired表示依赖注入,可用标注在方法上(实例方法和构造方法),也可以标注在属性上

当@Autowired标注在属性上的时候,属性对应的set方法可以省略不写

@Autowired 注入流程
  1. 该注解会从IOC容器中先按类型查找bean对象,如果没有该类型的bean,就会报错
  2. 如果有该类型的bean且只有一个,则注入值
  3. 如果该类型的bean > 1 个,则按照属性名称(字段属性名/方法形参名)进行匹配注入,如果属性名匹配不上则报错
@Qualifier

要跟@Autowired联合使用,代表==在按照类型匹配的基础上==,==再按照名称匹配==,两个条件必须同时满足

依赖注入 - 简单类型

@Value

用于简单数据类型的注入,相当于< property name="" value="" >

纯注解

@ComponentScan():注解扫描,写主配置类名上

配置文件提取

@Configuration 标注当前类就是配置类,配置类中的@Bean也会加入IOC容器 @PropertySource("jdbc.properties") 读取配置文件:指定配置文件的位置

Spring整合单元测试

@RunWith(SpringJUnit4ClassRunner.class) 让测试在Spring容器环境下执行

@ContextConfiguration(classes = {SpringConfig.class} ) 通过配置类创建IOC容器

@ContextConfiguration(locations = {"classpath:applicationContext.xml"}) 通过XML配置文件创建IOC容器