spring标签和注解
Spring的标签
IOC/DI
1.bean标签
作用: 配置javaBean,让spring容器创建管理.默认调用类中无参数的构造方法创建对象.
属性说明
Id:bean的唯一标识名称
Class:类的全限定名称
Scope:设置bean的作用范围
取值:
sigleton:单例.默认值
prototype:多例.
request:web项目中,将对象存入request域中.
session:web项目中,将对象存入session域中.
globalssession:web项目中,应用在集群环境,如果没有集群环境,相当于session.init-method指定类中初始化方法的名称,在构造方法执行完毕后立即执行.destroy-method指定类中销毁方法的名称,在销毁spring容器前执行.factory-method指定实例工厂方法factory-bean指定实例2.constructor-arg标签
|
<bean id=”accountService” class=”com.liu.Service.impl.AccountServiceImpl”> <constructor-arg index="0" type="int" name="id" value="20"></constructor-arg> <constructor-arg index="1" type="java.lang.String" name="name" value="张三"> </constructor-arg></bean> |
作用: 通过构造方法给成员变量赋值
属性说明
Index:指定成员变量在构造方法参数列表中的索引
Name:指定成员变量在构造方法参数列表中的名称
Type:指定成员变量的类型
Value:给java简单类型成员变量赋值(八种基本数据类型+字符串)
Ref:给其他bean类型成员变量赋值
- property标签
|
<bean id=”accountService” class=”com.liu.Service.impl.AccountServiceImpl”> <property name=”张三” value=”30”></property> </bean> |
作用: 通过set方法给成员变量赋值
属性说明
Name:指定成员变量的名称
Value:给java简单类型成员变量赋值(八种基本数据类型+字符串)
Ref:给其他bean类型成员变量赋值
- 普通工厂的方法创建对象(使用某个类中的方法创建对象,并存入spring容器)
|
<bean id=”instanceFactory” class=”com.liu.factory.instanceFactory”></bean> <bean id=”accountService” factory-bean=”instanceFactory” factory-method=”getAccount Service”></bean> |
属性
Factory-bean:工厂id名
Factory-method:工厂方法
- 复杂类型的注入/集合类型的注入标签
Set
|
<property name="sets"> <set> <value>1</value> <value>2</value> <value>3</value> <value>4</value> </set> </property> |
List
|
<property name="list"> <list> <value>1</value> <value>2</value> <value>3</value> </list> </property> |
Array
|
<property name="strs" > <array> <value>1</value> <value>2</value><value>3</value> </array> </property> |
Map
|
<property name="map"> <map> <entry key="a" value="b" > </entry> <entry key="c" value="d" > </entry> </map> </property> |
Props
|
<property name="demo"> <props> <prop key="key">value</prop> <prop key="key1">value1</prop> </props> </property> |
AOP
1.aop:config标签
作用: 声明aop配置
2.aop:aspect标签
作用: 配置切面
属性说明
Id:唯一标识切面的名称
Ref:引用通知类bean的id
3.aop:pointcut标签
作用: 配置切入点表达式
属性说明
Id:唯一标识切入点表达式名称
Expression:定义切入点表达式
4.aop:before标签
作用: 配置前置通知
属性说明
Method:指定通知方法名称
Pointcut:定义切入点表达式
pointcut-ref:引用切入点表达式的id
5.aop:after-returning标签
作用: 配置后置通知
属性说明
Method:指定通知方法名称
Pointcut:定义切入点表达式
pointcut-ref:引用切入点表达式的id
6.aop:after-throwing标签
作用: 配置异常通知
属性说明
method:指定通知方法名称
Pointcut:定义切入点表达式
pointcut-ref:引用切入点表达式的id
7.aop:after标签
作用: 配置最终通知
属性说明
Method:指定通知方法名称
Pointcut:定义切入点表达式
pointcut-ref:引用切入点表达式的id
8.aop:around标签
作用: 配置环绕通知
属性说明
Method:指定通知方法名称
Pointcut:定义切入点表达式
pointcut-ref:引用切入点表达式的id
9.aop:aspectj-autoproxy标签
作用: 启用对注解aop的支持
Spring的注解
用于创建对象的
他们的作用就和在xml配置文件编写一个<bean>标签实现的功能是一样的
@Component
作用:用于把当前类对象存入spring容器中
属性:
@Value:用于指定bean的id当我们不写时,它的默认值是当前类名,且首字母改小写。
@Controller:一般用在表现层
@Service:一般用在业务层
@Repository:一般用在持久层
以上三个注解他们的作用和属性与component是一模一样。
他们三个是spring框架为我们提供明确的三层,使用注解,使我们的三层对象更加清晰。
在bean.xml中配置
告知spring在创建容器时要扫描包,配置所需要的标签不是在beans的约束中,而是一个名称为context名称空间和约束中
|
<context:component-scanbase-package=”com.liu”></context:component-scan> |
用于注入数据的
他们的作用就和在xml配置中的bean标签中写一个<property>标签的作用是一样的。
@Autowird
作用:自动按照类型注入,只要容器中有唯一的一个bean对象类型和要注入的变量类型匹配,就可以注入成功。
如果ioc容器中没有任何bean的类型和要注入的变量类型匹配,则报错。
如果ioc容器中有多个类型匹配时。
出现位置:可以是变量上,也可以是方法上。
细节:在使用注解注入时,set方法就不是必须的了。
@Qualifier
作用:在按照类中注入的基础之上再按照名称注入,它在给类成员注入时不能单独使用。但是在给方法参数注入时可以
属性:
Value:用于指定注入bean的id
@Resource
作用:直接按照bean的id注入,它可以独立使用。
属性:
Name:用于指定bean的id
以上三个注入都只能注入其他bean类型的数据,而基本类型和String类型无法使用上述注解实现,另外,集合类型的注入只能通过xml实现。
@Value
作用:用于注入基本数据类型和String类型的数据。
属性:
Value:用于指定数据的值,它可以使用spring中SPEL(也就是spring的el表达式)
Spel的写法:${表达式}
用于改变作用范围的
他们的作用就和在bean标签中使用scope属性实现的功能是一样的
@Scope
作用:用于指定bean的作用范围
属性:
Value:指定范围的取值。常用值(singleton、prototype)
和生命周期有关(了解)
他们的作用就和在bean标签中使用init-method和destroy-methode的作用是一样的。
@PreDestory
作用:用于指定销毁方法。
@Postconstruct
作用:用于指定初始化方法。
SpringConfiguration.java
该类是一个配置类,它的作用和bean.xml是一样的。
Spring中的新注解
@Configuration
作用:指定当前类是一个配置类。
细节:当配置类作为AnnotationconfigApplicationcontext对象创建的参数时,该注解可以不写
@Componentscon
作用:用于通过注解指定spring在创建容器时要扫描的包。
属性:
Value:它和basepackages的作用是一样的,都是用于指定创建容器时要扫描的包
我们使用此注解就等同于在xml中配置了
<context:component-scan base-package=”com.liu”></context:component-scan>
@Bean
作用:用于把当前方法的返回值作为bean对象存入spring的ioc容器中。
属性:
Name:用于指定bean的id,当不写时,默认值是当前方法的名称。
细节:当我们使用注解配置时,如果方法有参数,spring框架回去容器中查找有没有可用的bean对象
查找的方式和Autowired注解的作用是一样的。
@Import
作用:用于导入其他的配置类
属性:
Value:用于指定其他配置类的字节码
当我们使用import的注解之后,有import注解的类就是父配置类,而导入的都是子配置类。
@Propertysource
作用:用于指定properties文件的位置
属性:
Value:指定文件的名称和路径
关键字:classpath,表示类路径下
AOP注解
@pointcut
作用:定义切点
@aspect
作用:定义切面类
@before
作用:前置通知
@after
作用:后置通知
@afterReturning
作用:后置通知,必须切点正确执行
@afterThrowing
作用:异常通知
@arround
作用:环绕通知

浙公网安备 33010602011771号