@Componet注解
- 作用 :把资源交给spring管理。相当于在xml中配置了一个bean
- 属性 :指定bean的ID,如果不指定值,默认是当前类名首字母小写
##@Controller @Service @Repository
他们三个注解都是针对一个的衍生注解,他们的作用及属性都是一模一样的。
他们只不过是提供了更加明确的语义化。
###@Controller:一般用于表现层的注解
###@Service: 一般用于业务层的注解
###@Repository: 一般用于持久层的注解
注意:此处测试时,要把扫描的包定义为cn.itcast,不然的其它包的注解就不能识别了
@Value
- 作用 : 注入基本类型数据和String类型数据
- 属性 : value 用于指定值
@Autowired
- 自动按照类型注入。当使用注解注入属性时,set方法可以省略。只能注入其它bean类。当有多个类型匹配时,使用要注入的对象变量名称作为bean的ID,在spring容器查找,找到了也可以注入成功。找不到就报错。
- 测试发现,UserServiceImpl中注入的还是第一个UserDaoImpl,因为当有多个bean都满足的情况下,优先注入bean的id与属性的名字一样的bean;想指定注入UserDaoImpl2,需要使用@Qualifier注解根据名字来注入
@Qualifier
- 作用 :在自动按照类型注入的基础上,再按照bean的ID注入。它给字段注入时不能单独使用,必须和@Autowired一起使用;但是给方法注入时可以单独使用
- 属性 :指定bean的ID
@Resource
- 作用 :直接按照bean的ID注入。它只能其它bean类型
- 属性 :name指定bean的ID
@Resource(name="beanid")
@Scope
- 作用 :指定bean的作用范围
- 属性 :value 指定范围的值 取值:singleton(单例)prototype(多例)request session globalsession
@PostConstruct
- 加在方法上,指定bean对象创建好之后,调用该方法初始化对象,类似于xml的init-method方法。修改UserServiceImpl类,在其中增加一个init方法,在该方法上指定@PostConstruct注解
@PreDestory
- 加在方法上,指定bean销毁之前,调用该方法,类似于xml的destory-method方法。修改UserServiceImpl类,在该类中增加一个destroy方法,在该方法上加@PreDestroy注解
XML和注解比较
- 注解的优势 :配置简单,维护方便。(我们得到了类,就相当于找到了配置)
- XML的优势 :修改时,不用改源码,不涉及重新编译和部署
Spring整合JUnit
首先需要引入spring test依赖
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class TestIOC {
@Autowired
private UserService userService;
@Test
public void test1(){
userService.saveUser();
}
}
- @RunWith注解:这个是指定使用的单元测试执行类,这里就指定的是SpringJUnit4ClassRunner.class;
- @ContextConfiguration注解:这个指定spring配置文件所在的路径,可以同时指定多个文件;