spring注解开发
使用注解之前要在配置文件中设置对包的扫描,以及context约束
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="com.xp"></context:component-scan>
</beans>
四类注解:
用于创建对象的(xml中的)
- @Component
- 使用位置:需要交给spring的类上面
- 作用: 用于把当前类对象存入spring容器
- 属性: value用于指定bean中的id,不指定时,默认值是当前类名,且首字母改小写
- @Controller 一般用于表现层
- @Service 一般用于业务层
- @Repository 一般用于持久层
- 这四个注解的作用和属性是一模一样的,其目的是使我们的三层对象更加清晰.
用于注入数据的(xml中的)
-
@Autowired
-
使用位置:类成员上,方法上
-
作用:按照类型注入依赖,只要容器中有唯一一个bean对象类型和要注入的变量类型匹配(其派生类也能匹配),spring就会把这个bean注入给它
-
说明:如果IOC容器中没有任何bean的类型和要注入的变量类型匹配,则报错,
如果有多个bean对象类型匹配,那么就会把变量的名称和这多个匹配的bean的id进行进一步筛选
如果有多个bean对象类型匹配,然而其中又没有一个bean的id与变量的名称相匹配时,则报错
-
-
@Qualifer
- 使用位置:使用在类成员上,当使用在类成员上的时候必须和@Autowired配合使用.使用在方法上可以独立使用
- 作用: 在按照bean对象类型注入的基础上,再按照名称注入,即@Autowired第一次匹配到多个时,就可以用这个注解指定id
- 属性:value:用于指定注入bean的id
- 使用位置:使用在类成员上,当使用在类成员上的时候必须和@Autowired配合使用.使用在方法上可以独立使用
-
@Resource
- 使用位置:类成员上
- 作用:直接按照bean的id注入,可以直接使用
- 属性:name 用于指定bean的id
-
======以上三种注解都只能注入其他bean类型的数据,而基本类型和String类型无法使用上述注解注入,另外,集合类型只能通过XML注入=
-
@Value
- 使用位置:类成员上
- 作用: 用于注入基本类型和String类型
- 属性:value 用于指定数据的值,它可以使用spring中的SpEL(spring的EL表达式) SpEL写法: ${表达式}
用于改变作用范围的(xml中的scope属性)
- @Scope
- 作用:用于指定bean的作用范围
- 属性: value 指定范围的取值,常用值: singleton(单例),prototype(多例)
- 作用:用于指定bean的作用范围
和生命周期相关的(int-method和destroy-method)
- @PostConstruct
- 使用位置: 方法上
- 作用:用于指定初始化方法
- @PreDestroy
- 使用位置: 方法上
- 作用: 用于指定销毁方法