Spring原始注解

Spring原始注解主要是替代<Bean>的配置

注解 说明
@Component 使用在类上用于实例化Bean
@Controller 使用在web层类上用于实例化Bean
@Service 使用在service层类上用于实例化Bean
@Repository 使用在dao层类上用于实例化Bean
@Autowired 使用在字段上用于根据类型依赖注入
@Qualifier 结合@Autowried一起使用于根据名称进行依赖注入
@Resource 相当于@Autowried+@Qualifier,按照名称进行注入
@Value 注入普通属性
@Scope 标注Bean的作用范围
@PostConstruct 使用在方法上标注该方法是Bean的初始化方法
@PreDestroy 使用在方法上标注该方法是Bean的销毁方法

注意:

使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean需要进行扫描以便识别使用注解配置的类、字段和方法。

1
2
<!-- 注解的组件扫描 -->
<context:component-scan base-package="com.heng"></context:component-scan>

Spring新注解

使用上面的Spring原始注解还不能完全替代xml文件,还需要使用注解替代的配置如下:

  • 非自定义的Bean的配置:<bean>
  • 加载properties文件的配置:<context:property-placeholder>
  • 组件扫描的配置:<context:component-scan>
  • 引入其他文件:<import>
注解 说明
@Configuartion 用于指定当前类是一个Spring配置类,当创建容器时会从该类上加载注解
@ComponentScan 用于指定Spring在初始化容器时要扫描的包
作用和在Spring的xml配置文件中的<context:component-scan base-package=”com.heng”/>一样
@Bean 使用在方法上,标注将该方法的返回值存储到Spring容器中
@PropertySource 用于加载.properties文件中的配置
@Import 用于导入其他配置类

Spring集成Junit

原始Junit测试Spring的问题

在测试类中,每个测试方法都有一下两行代码:

1
2
ApplocationContext app = new ClassPathXmlApplicationContext("bean.xml");
IAccountService ac = app.getBean("accountService",IAccountService.class);

这两行代码的作用是获取容器,如果不写的话,直接会提示空指针异常。所以又不能轻易删掉。

解决办法:

  • 让SpringJunit负责创建Spring容器,但是需要将配置文件的名称告诉它。
  • 将需要进行测试Bean直接在测试类中进行注入。

Spring继承Junit步骤:

①:导入Spring继承Junit的坐标。

②:使用@Runwith注解替换原来的运行期。

③:使用@ContextConfiguration指定配置文件或配置类。

④:使用@Autowired注入需要测试的对象。

⑤:创建测试方法进行测试。