Spring之二

注解

  • @Component:用于实例化对象,相当于配置文件中的< bean id="" class=""/>,它支持一个属性vallue,相当于配置文件中的id,如果不写,默认值为类名首字母小写。

以下三个注解与Component功能完全一样,只不过这三个比较有语义化。

  • @Controller:一般标注在表现层的类上。
  • @Service:一般标注在业务层的类上。
  • @Repository:一般标注在持久层的类上。

推荐使用这三个,当一个类不好归属于这三层时,再使用@Component。

  • @Scope:用于指定bean的作用范围(单例和多例),相当于xml中的< bean scope=""/>。
  • @PostConstruct和@PreDestroy:这两个注解标注在方法上,分别在对象的创建之后和销毁之前执行标注的方法。相当于xml的< bean init-method=“init” destroy-method=“destroy”/>。

注解之依赖注入

@AutoWired:这个注解表示依赖注入,它可以标注在属性或方法上。
标注在属性或方法上:
Spring会在IOC(反转控制)容器中按照被标注的属性的类型或标注方法参数的类型进行查找

  • 如果找不到,会报错。
  • 如果找到了,且正好有一个,就会进行依赖注入。
  • 如果找到了,但有好多个,它会再按照属性名进行查找,如果匹配上就注入,如果匹配不上就报错。

注意: 当标注在属性上时,set方法可以省略。

@Qualifier:可以跟@AutoWired一起使用,代表在按照类型匹配的基础上,在按照名称匹配。

@Resource:该注解由Java提供,且1.9以后废弃了
Spring会在IOC容器中先按照属性名称进行寻找

  • 如果找到了,就进行依赖注入。
  • 如果找不到,再按照类型进行匹配。
  • 如果正好匹配到一个,就注入。
  • 如果匹配到多个,就报错。

注意:@Resource(name = “UserDao”)如果直接使用name指定名称,它就只会按照名称匹配。

@Value:用于bean的对象属性注入,相当于< property name="" value=""/>

其他注解

@ComponentScan(“包名”):该注解一般标注于需要读取的配置类上,作用:包扫描,扫描包中所有类中带有Spring注解的类、属性、方法。

@PropertySource(“配置文件”):该注解标注于类上,用于引入其他的properties配置文件。

@Import(类名.class):该注解标注于类上,用于在一个配置类中导入其他类的内容。

@Configuration:被此注解标注的类,会被Spring认为是配置类。

@Bean:将标注方法的返回值对象放到容器中,还可以使用@Bean(id)来声明id,如果不写,默认值则是当前方法名且首字母小写。

番外

在单元测试时,点击run时,底层工作其实是一个运行器,默认是ParentRunner,这个运行器是Junit提供的,当没有

ApplicationContext act = new ClassPathXmlApplicationContext(配置文件);

时,Junit的运行器就不认识Spring的环境,也就是意味着,无法在测试类中从Spring的容器中获取bean对象,那么,Spring就提供了一个运行器,可以认识Spring环境,也就可以从容器中获取对象。

在测试类上加上@RunWith(SpringJunit4ClassRunner.class)// 该注解是由Junit提供的,可以切换运行器
切换到Spring的运行器后,再加上@ContextConfiguration(classes = 配置类.class)就可以在测试方法中获取到Spring容器中bean对象了。
注:以上两个注解同ApplicationContext act = new ClassPathXmlApplicationContext(配置文件);作用一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JustDoSelf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值