Spring注解
使用注解配置 Spring 入门
-需要理解为什么使用注解配置 Spring(重点)
--如何使用注解完成 Spring 的配置的(重点)
--Spring 与 Junit 的整合
学习基于注解的 IoC 配置,大家脑海里首先得有一个认知,即 Spring 框架使用注解
配置和 xml 配置要实现的功能都是一样的,都是要降低程序间的耦合。只是配置的形式
不一样。
关于实际的开发中到底使用 xml 还是注解,每家公司有着不同的使用习惯。所以这
两种配置方式我们都需要掌握。
1. 配置文件+注解(公共的东西使用配置文件,如框架整合)
2. 纯注解(Spring Boot)
基于注解配置的方式也已经逐渐代替 xml。这个是不可逆的潮流!!!!所以我们
必须要掌握使用注解的方式配置 Spring。
总结:
1. 使用注解配置 Spring,注解的作用就是用于替代 XML 配置文件的。
--XML 配置文件,非编程语言语法,所以无法调试
--使用注解配置的代码,更加容易定位问题
1.3. 配置步骤
注意:Eclipse 需要先安装了 STS 插件,或者使用 STS 开发工具创建项目。
1.3.1. 第一步:拷贝必备 jar 包到工程的 lib 目录。
注意:在基于注解的配置中,我们还要多拷贝一个 aop 的 jar 包。如下图:
1.3. 配置步骤
注意:Eclipse 需要先安装了 STS 插件,或者使用 STS 开发工具创建项目。
1.3.1. 第一步:拷贝必备 jar 包到工程的 lib 目录。
注意:在基于注解的配置中,我们还要多拷贝一个 aop 的 jar 包。如下图:
Spring 常用注解说明
用于对象的注解
我们将用于被扫描创建对象的注解,统称为组件注解。
组件注解包括:@Component,@Controller,@Service,@Repository,。
问题:从功能上着四个组件注解有什么区别?
答:功能上没有任何区别,只是概念上不一样!!
组件注解的功能都是标识类为注解的组件类,启动 Spring 框架的程序时,声明将这些组
件类注入到 Spring 容器里面。意味着,只有加了这四个注解任何一个注解的类,在程序
启动的时候,Spring 就通过配置文件指定的路径将该路径下的所有带组件注解的类创建
对象并且放在容器里面。
功能类似原来配置文件的<bean>标签
问题:明明一个@Component 注解就可以满足了扫描的需要,为什么要有四个呢?
答:其实 Spring 第一版注解的实现(spring 2.5),就是使用一个@Component。从 3.0
以后,作者认为根据分层的需要,把它拆成了四个。为了可以让开发人员,可见即可得,
一看到注解,立即知道类的性质。所以分成了四个
@Controller:用于声明表示层的组件注解
@Service:用于声明服务层的组件注解
@Repository:用于声明持久层的组件注解
@Component:用于声明三层以外的组件注解
. @Autowired 注解
@Autowired 注解:用于给引用注入容器的对象。
属性:
required:指定注入的对象是否允许为空,如果 required=true。表示不可以为空
使用@Autowired 注入的三种情况
@Qualifier 注解
@Qualifier 注解:用于指定注入的对象名,使用@Autowired 注入对象时,@Autowired
没有指定对象名的属性,只能通过@Qualifier 字段容器中对象名
属性
value:指定注入 Spring 容器中对应对象名的对象给引用。
@Resource 注解
@Resource 注解是 Spring 框架支持 Sun 官方制定的 JSR-250 标准注入对象的实现。
JSR-250 就是 Sun 公司制定,对注入的对象的标准。
@Resource 功能等同 @Autowired + @Qualifier ,等同配置文件标签 <proprty name=”...”
ref=”...”>
@Resource 注解:用于给引用注入容器的对象,可以通过 name 属性指定对象名
问题:在现实开发中,没有强制要求是一@Autowired 或者@Resource,两个都可以使用。
但是因为@Autowired 是 Spring 自带的机制。所以建议使用@Autowired。