> 文章列表 > 4.6---Spring框架之Spring的注解(复习版本)

4.6---Spring框架之Spring的注解(复习版本)

4.6---Spring框架之Spring的注解(复习版本)

1.什么是注解

注解本身是没有功能的,注解是一种元数据,元数据即解释数据的数据,也就是所谓的配置

使用注解唯一需要注意的就是,必须开启注解的支持:

<context:component-scan base-package="com.guo"></context:component-scan>
<context:annotation-config/>

2.如何自定义注解?

  1. 创建一个自定义注解:与创建接口类似,但自定义注解需要使用 @interface
  2. 添加元注解信息,比如 @Target、@Retention、@Document、@Inherited 等
  3. 创建注解方法,但注解方法不能带有参数
  4. 注解方法返回值为基本类型、String、Enums、Annotation 或其数组
  5. 注解可以有默认值
@Target(FIELD)
@Retention(RUNTIME)
@Documented
public @interface CarName {String value() default "";
}

3.常见的注解:

1.Java 原生的 @Overried
原生 Java 中,还提供了元 Annotation(元注解),他主要是用来修饰注解的,比如 @Target、@Retention、@Document、@Inherited 等。

1.@Target:标识注解可以修饰哪些地方,比如方法、成员变量、包等
2.@Retention(保持):什么时候使用注解:SOURCE(编译阶段就丢弃) / CLASS(类加载时丢弃) / RUNTIME(始终不会丢弃)
3.@Document:注解是否会包含在 javadoc 中
4.@Inherited:定义该注解与子类的关系,子类是否能使用

2.Spring的常用注解

1、给容器中注入组件

包扫描+组件标注注解:

@Component:泛指各种组件

@Controller:控制层

@Service:业务层

@Repository:数据访问层

2、注入bean的注解

@Autowired:由bean提供

@Autowired可以作用在变量、setter方法、构造函数上;
有个属性为required,可以配置为false;

@Inject:@Inject用法和@Autowired一样

3.Java配置类相关注解

@Configuration:声明当前类为配置类;

@Bean:注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式;

@ComponentScan;用于对Component进行扫描;

4.@Bean的属性支持注解

① Singleton

(单例,一个Spring容器中只有一个bean实例,默认模式),

② Protetype

(每次调用新建一个bean),

③ Request

(web项目中,给每个http request新建一个bean),

④ Session

(web项目中,给每个http session新建一个bean),

⑤ GlobalSession

(给每一个 global http session新建一个Bean实例)