Spring学习总结二

Spring最重要的当然是注解开发啦~接下来就是要通过注解来替代在xml文件中的Bean标签,来简化我们的开发步骤。在第二次总结中,我们要掌握这些注解。
一:Spring原始注解
| 注解 | 说明 |
|---|---|
| @Component | 使用在类上用于实例化Bean。把资源让 spring 来管理。相当于在 xml 中配置一个 bean |
| @Controller | 使用在web层类上用于实例化Bean |
| @Service | 使用在service层类上用于实例化Bean |
| @Repository | 使用在dao层类上用于实例化Bean |
| @Autowired | 使用在字段上用于根据类型依赖注入。自动按照类型注入。当使用注解注入属性时,set 方法可以省略。它只能注入其他 bean 类型。当有多个类型匹配时,使用要注入的对象变量名称作为 bean 的 id,在 spring 容器查找,找到了也可以注入成功。找不到就报错。 |
| @Qualifier | 结合@Autowired一起使用用于根据名称进行依赖注入。在自动按照类型注入的基础之上,再按照 Bean 的 id 注入。它在给字段注入时不能独立使用,必须和@Autowire 一起使用;但是给方法参数注入时,可以独立使用。 |
| @Resource | 相当于@Autowired+@Qualifier,按照名称进行注入JDK9版本之后就无法使用了 |
| @Value | 注入基本数据类型和 String 类型数据的 |
| @Scope | 标注Bean的作用范围 |
| @PostConstruct | 使用在方法上标注该方法是Bean的初始化方法 |
| @PreDestroy | 使用在方法上标注该方法是Bean的销毁方法 |
我们还使用刚才总结一的案例,把总结一的案例的bean使用注解给替换掉。
先注解dao层的Bean::envelope_with_arrow:UserDaoImpl
1 | package com.liu.dao.Impl; |
再注解service层的Bean:e-mail:UserServiceImpl
1 | package com.liu.service.Impl; |
是不是以为,这就行了?我们来运行web层的程序来测试一下:

what???
为啥报错了???
这???
查!!!给我查!!!
经过一段百度时间
嗖嘎!!!
——戏精上线
*注意:
使用注解开发时,需要在配置文件中配置组件扫描。作用是指定哪个包及其子包下的Bean需要进行扫描以便识别注解配置的类、字段和方法。
还是先创建Spring的核心配置文件,在配置文件中加入:
1 | <!--配置注解扫描--> |
注解详解:
1.@Autowired:
按照数据类型从Spring容器中进行匹配的 ,但是需要注意:这个可以单独使用,但是,当容器中出现多个UserDao就会找不到到底是哪一个UserDao。
1 | package com.liu.service.Impl; |
2.@Qualifier(“userDao”) :
是按照id值从容器中进行匹配的 但是主要此处@Qualifier和@Autowired一起使用
1 | package com.liu.service.Impl; |
3.@Resource
相当于@Autowired+@Qualifier
1 | package com.liu.dao.Impl; |
4.@Value
注入基本数据类型和 String 类型数据的
1 | package com.liu.service.Impl; |
what?
就这??
我直接初始化不好吗???
1 | private String driver=driver; |
还搞个注解????
既然它现在还存在,必定有它存在的道理。我们用另一种方式来打开新世界的大门。
我们知道我们在学习数据库连接池的时候,可以把driver,user,password,url都给抽取出来,抽到一个properties文件中。那么问题来啦,Spring能不能把这个properties存到容器中呢?当然能!
在Spring核心配置文件中加入
1 | <!--引入properties配置文件--> |
然后使用${}
1 |
|
是不是打开了新世界的大门,哈哈。到时候配置dao层的时候就可以这样来配置url、user、password、driver。不过应该不会用到,因为mybatis也可以实现。
5.@Scope
6.@PostConstruct
7.@PreDestroy
这三个注解就不再详细介绍了。@Scope就是标注Bean的作用范围,有两个常用值。
@PostConstruct :设置初始化方法
@PreDestroy:设置销毁方法
二:Spring新注解
1.为什么要学习新注解

2.新注解有哪些

3.新注解的详细说明
<1>:@Configuration
该注解是让该类成为Spring的核心配置类
我们创建一个类,然后把该类当作Spring的核心配置类时,就需要使用@Configuration
使用方法:
1 |
|
<2>:@ComponentScan
用来指定Spring初始化扫描的包
使用方法:
1 | //该注解是让该类成为Spring的核心配置类 |
<3>:@PropertySource
用来加载外部配置文件
使用方法:
1 | //该注解是让该类成为Spring的核心配置类 |
<4>:@Bean
使用在方法上,讲返回值存储在Spring容器中
使用方法:
1 | //该注解是让该类成为Spring的核心配置类 |
4.如何使用这个核心配置类呢?
使用AnnotationConfigApplicationContext(SpringConfig.class);来使用这个核心配置类。
1 | public class UserWeb { |
三:Spring集成junit开发
1.为什么要集成junit开发呢?
为了方便~~
而且到时候为了学习SpringBoot打下良好的基础

2.集成步骤

3.步骤详解
<1>在pom.xml中导入坐标
建议大家自行去Maven中央仓库去自行导取
1 | <!-- https://mvnrepository.com/artifact/org.springframework/spring-test --> |
这里要注意:pom.xml必须也要有junit的坐标哦!!!
<2>使用@Runwith注解
首先创建一个包,包内建一个类
1 |
|
<3>使用@ContextConfiguration注解
1 |
|
<4>使用@Autowired注入要测试的对象
1 |
|
<5>创建测试方法进行测试
1 |
|