Spring注解开发
Spring原始注解
Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文 件可以简化配置,提高开发效率。
注解 | 说明 |
---|---|
实例化Bean | |
@Component | 使用在类上用于实例化Bean |
@Controller | 使用在web层类上用于实例化Bean |
@Service | 使用在service层类上用于实例化Bean |
@Repository | 使用在dao层类上用于实例化Bean |
依赖注入 | |
@Autowired | 使用在字段上用于根据类型依赖注入 |
@Qualifier | 结合@Autowired一起使用用于根据名称进行依赖注入Qualifier(“userDao”) |
@Resource | 相当于@Autowired+@Qualifier,按照名称进行注入@Resource(name=”userDao”) |
其他注入 | |
@Value | 注入普通属性 |
@Value | 标注Bean的作用范围 |
@PostConstruct | 使用在方法上标注该方法是Bean的初始化方法 |
@PreDestroy | 使用在方法上标注该方法是Bean的销毁方法 |
使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean需要 进行扫描以便识别使用注解配置的类、字段和方法。
1 | <!--注解的组件扫描--> |
使用@Compont或@Repository标识UserDaoImpl需要Spring进行实例化。
1 |
|
使用@Compont或@Service标识UserServiceImpl需要Spring进行实例化
使用@Autowired或者@Autowired+@Qulifier或者@Resource进行userDao的注入
1 |
|
使用@Value进行字符串的注入
1 |
|
使用@Scope标注Bean的范围
1 |
|
使用@PostConstruct标注初始化方法
1 |
|
使用@PreDestroy标注销毁方法
1 |
|
Spring新注解
新注解
使用上面的注解还不能全部替代xml配置文件,还需要使用注解替代的配置。
非自定义的Bean的配置:
- 加载properties文件的配置:context:property-placeholder
- 组件扫描的配置:context:component-scan
引入其他文件
注解 | 说明 |
---|---|
@Configuration | 用于指定当前类是一个 Spring 配置类,当创建容器时会从该类上加载注解 |
@ComponentScan | 用于指定 Spring 在初始化容器时要扫描的包。 作用和在 Spring 的 xml 配置文件中 的 <context:component-scan base-package=”com.itheima”/>一样 |
@Bean | 使用在方法上,标注将该方法的返回值存储到 Spring 容器中 |
@PropertySource | 用于加载.properties 文件中的配置 |
@Import | 用于导入其他配置类 |
@Configuration
@ComponentScan
@Import
1 | //标志该类是Spring的核心配置类 |
@PropertySource
@value
1 |
|
@Bean
1 |
|
测试加载核心配置类创建Spring容器
1 | //@ContextConfiguration("classpath:applicationContext.xml") |
Spring整合Junit
整合Junit
原始Junit测试Spring的问题
在测试类中,每个测试方法都有以下两行代码:
1 | ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); |
这两行代码的作用是获取容器,如果不写的话,直接会提示空指针异常。所以又不能轻易删掉
上述问题解决思路
- 让SpringJunit负责创建Spring容器,但是需要将配置文件的名称告诉它
- 将需要进行测试Bean直接在测试类中进行注入
Spring集成Junit步骤
- 导入spring集成Junit的坐标
- 使用@Runwith注解替换原来的运行期
- 使用@ContextConfiguration指定配置文件或配置类
- 使用@Autowired注入需要测试的对象
- 创建测试方法进行测试
导入spring集成Junit的坐标
1 | <dependency> |
使用@Runwith注解替换原来的运行期
1 |
|
使用@ContextConfiguration指定配置文件或配置类
1 |
|
使用@Autowired注入需要测试的对象
1 |
|
创建测试方法进行测试
1 |
|