spring回顾

spring的IOC和AOP

一.概念

IOC:控制反转,实质是一个spring的容器。改变传统手动new创建对象的方式,将创建对象的过程交给spring容器,极大的降低了程序之间的耦合性。

AOP:面向切面编程。将大量重复的,多个业务中均会发生的操作封装提取出来作为一个切面,在程序运行过程中通过织入的方式使得在不改变源程序的条件下达到增强原方法的目的。其前身是OOP(面向对象编程)

二.IOC创建对象及赋值的操作

1.创建bean对象的三种方式

1     1.通过构造方法创建bean对象
2   <bean id="UserService" class="cn.hongyuan.service.UserService" scope="prototype"></bean>
3 
4   2.通过工厂来创建bean对象
5   <bean id="instanceFactory" class="cn.hongyuan.utils.InstanceFactory"></bean>
6   <bean id="UserService" factory-bean="instanceFactory" factory-method="getUserService"></bean>
7 
8   3.通过静态方法来创建对象
9       <bean id="UserService" class="cn.hongyuan.utils.InstanceFactory" factory-method="getUserService"></bean>

2.给bean对象赋值

 1 <!--  依赖注入的三种方式-->
 2 <!--      1.通过构造方法注入-->
 3 <!--      2.通过set方法注入-->
 4 <!--      3.注入集合数据-->
 5     <bean id="UserService" class="cn.hongyuan.service.UserService">
 6 <!--       <constructor-arg name="age" value="23"></constructor-arg>-->
 7 <!--      <constructor-arg name="name" value="zhangsan"></constructor-arg>-->
 8       <property name="age" value="25"></property>
 9       <property name="name" value="lvjianyou"></property>
10       <property name="a">
11         <array>
12           <value>1</value>
13           <value>2</value>
14           <value>3</value>
15         </array>
16       </property>
17       <property name="lits">
18         <list>
19           <value>4</value>
20           <value>5</value>
21           <value>6</value>
22         </list>
23       </property>
24 
25       <property name="map">
26         <map>
27           <entry key="zhangsan" value="13"></entry>
28           <entry key="lisi" value="24"></entry>
29         </map>
30       </property>
31     </bean>

3.spring的最最常用注解

①.component 

其含有三个类似于子类的注解,分别是controller,service,reposity,分别对应软件开发的三层架构。

②Autowired

用于给对象进行自动赋值,如果spring容器中存在有两个相同的对象,那么需要额外增加注解Qualify并指定其ID值

三.AOP的使用

1.注意官方用语

切面

一个特定的功能,是方法需要被增强的部分。

连接点

被拦截到的点,也就是类中的所有方法。spring只支持方法类型的连接点。

切入点

需要被增强的方法。

织入

把增强方法通过动态代理应用到原有方法中去

通知Advice

拦截到连接点以后需要做的事情。

切入点表达式

描述需要增强哪些方法。

书写格式为  访问修饰符 返回值 包名.包名.包名...类名.方法名(参数列表) 

注意:访问修饰符可以省略,返回值可以用通配符 * 来代替。包名可以使用通配符,有几级包就使用几个 * 号

 

posted @ 2020-09-09 19:21  心友  阅读(89)  评论(0)    收藏  举报