04_注解实现及属性注入

张创琦

  1. annotation 注解
  1. 注解标识在类上,表示对象由Spring容器创建,value属性表示创建的id值,value可以省略,默认是类名的首字母小写.
  2. Repository更习惯用于Dao层, Service习惯用于Service层, Controller习惯用于Controller层, 都可以添加value属性

@Resource 自动注入

相关注解单词

  1. @Resource //JDK所带的注解 //JDK版本高于1.6, 默认按名称自动装配, 但是名称没有相符的话就按类型自动装配
  2. @Repository("teamDao") //更适用于Dao
  3. @Service("teamService") //更适用于Service
  4. @Controller("Controller") //更适用于Controller
  5. @Repository("team") //更适用于Bean

xml相关配置

annotation.xml 配置

1 将 xmlns 复制一份,加上 :context,

2 网址添加两个

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://www.springframework.org/schema/context
  7. http://www.springframework.org/schema/context/spring-context.xsd">

1 属性注入 | 多个包的扫描

  1. <!-- 告知Spring要扫描的包,这些包以及子包当中的类如果添加了@Component注解,这些添加了注解的包就交给了Spring容器创建对象 -->
  2. <!-- 在Beans中添加命名空间 -->

方法1:

  1. <!-- 多个包的扫描:方法1:直接使用多个context:component-scan来进行标明 -->
  2. <context:component-scan base-package="com.cq.dao"></context:component-scan>
  3. <context:component-scan base-package="com.cq.service"></context:component-scan>
  4. <context:component-scan base-package="com.cq.controller"></context:component-scan>

方法2: 推荐

  1. <!-- 多个包的扫描:方法2:在base-package中直接声明要扫描的多个包, 逗号分号分开均可 -->
  2. <context:component-scan base-package="com.cq.dao, com.cq.service, com.cq.controller"></context:component-scan>

方法3:

虽然简洁,但是容易多扫描到其它不用的包

  1. <!-- 多个包的扫描:方法3:在base-package中直接声明要扫描的多个包的父包 -->
  2. <context:component-scan base-package="com.cq"></context:component-scan>

2 注解实现

注解可以加在属性上,也可以加在set方法上。

示例:

  1. @Component
  2. public class Animal {
  3. //Value也可以写在set方法上面
  4. @Value("狗")
  5. private String type;
  6. private String variety;
  7. @Value("柴犬")
  8. public void setVariety(String variety) {
  9. this.variety = variety;
  10. }

其它的直接添加在标头添加注解即可。

在Service和Controller中需要添加autowired注解来完成自动注入。

  1. @Autowired
  2. private AnimalService animalService;
  1. @Autowired //自动装配,默认按照类型装配
  2. //required属性, =true的话,必须有animalDao类型,没有就直接报错,
  3. // =false的话有同类型的话就用,没有的话就报空指针异常
  4. @Qualifier("animalDao") //Qualifier可保证按名称自动搭配, Bean包中添加注解时存在对象名称的添加
  5. private AnimalDao animalDao; //不能new对象