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类型成员变量赋值

  1. property标签

<bean id=accountService class=com.liu.Service.impl.AccountServiceImpl>

<property name=张三 value=30></property>

</bean>

 

作用: 通过set方法给成员变量赋值

属性说明

Name:指定成员变量的名称

Value:java简单类型成员变量赋值(八种基本数据类型+字符串)

Ref:给其他bean类型成员变量赋值

  1. 普通工厂的方法创建对象(使用某个类中的方法创建对象,并存入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工厂方法

  1. 复杂类型的注入/集合类型的注入标签

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引用通知类beanid

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用于指定beanid当我们不写时,它的默认值是当前类名,且首字母改小写。

@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用于指定注入beanid

@Resource

作用:直接按照beanid注入,它可以独立使用。

属性:

Name用于指定beanid

以上三个注入都只能注入其他bean类型的数据,而基本类型和String类型无法使用上述注解实现,另外,集合类型的注入只能通过xml实现。

@Value

作用:用于注入基本数据类型和String类型的数据。

属性:

Value用于指定数据的值,它可以使用springSPEL(也就是springel表达式)

Spel的写法:${表达式}

用于改变作用范围的

他们的作用就和在bean标签中使用scope属性实现的功能是一样的

@Scope

作用:用于指定bean的作用范围

属性:

Value指定范围的取值。常用值(singletonprototype

和生命周期有关(了解)

他们的作用就和在bean标签中使用init-methoddestroy-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对象存入springioc容器中。

属性:

Name用于指定beanid,当不写时,默认值是当前方法的名称。

细节:当我们使用注解配置时,如果方法有参数,spring框架回去容器中查找有没有可用的bean对象

查找的方式和Autowired注解的作用是一样的。

@Import

作用:用于导入其他的配置类

属性:

Value用于指定其他配置类的字节码

当我们使用import的注解之后,有import注解的类就是父配置类,而导入的都是子配置类。

@Propertysource

作用:用于指定properties文件的位置

属性:

Value指定文件的名称和路径

关键字:classpath,表示类路径下

AOP注解

@pointcut

作用:定义切点

@aspect

作用:定义切面类

@before

作用:前置通知

@after

作用:后置通知

@afterReturning

作用:后置通知,必须切点正确执行

@afterThrowing

作用:异常通知

@arround

作用:环绕通知

posted @ 2021-03-11 17:28  xiaoHu!  阅读(303)  评论(2)    收藏  举报