springIOC与Aop简介

本文介绍了Spring框架中的核心特性——IOC(控制反转)和AOP(面向切面编程)。IOC通过Spring容器管理对象的创建和依赖注入,降低了组件间的耦合。DI(依赖注入)则是在创建对象时注入其依赖,实现组件的解耦。文章详细讲解了配置对象、依赖注入的各种方式,包括使用XML配置和注解配置。对于AOP,它旨在将分散在系统中的公共功能集中处理,通过代理机制实现代码增强,无需修改原有代码即可添加新功能。
摘要由CSDN通过智能技术生成

Spring框架

  • IOC(控制反转)/DI(依赖注入)
  1. 概念:
    1. IOC:将对象的创建过程转移给spring容器去完成,分离关注点
    2. DI:创建对象实例时,同时给此对象注入所依赖的属性,将组件的构建和使用分开
  2. 所需jar文件:

限制版本配置方式:

  1. spring配置对象:

<bean id=”” class=”” scope=”” lazy-init=”” init-method=”” destroy=””></bean>

注:scope的值有两种:

singleton单例 整个容器中只有一个对象实例 ,每次总是访问同一个对象(默认是单例)

prototype原型  每次获取bean都产生一个新的对象(效率降低)

Lazy-init属性的值有两种:

true:延迟初始化,在用到对象的时候才会创建对象

false:默认值,不延迟创建,启动时候就会创建对象

  1. 加载spring配置文件两种方式:
    1. 利用FileSystemXmlApplicationContext从绝对路径获取文件

ApplicationContext context1 = new FileSystemXmlApplicationContext("D://ssm-workspace//Spring_Ioc//resources//spring.xml");

(2)利用ClassPathXmlApplicationContext资源目录下获取spring文件

ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");

注:资源目录:Maven项目resources、web项目src

  1. 依赖注入的方式:
    1. <property name=”” value=””></property>  name属性名、value属性值
    2. <property name=”” ref=””></property>  ref引入其他对象
    3. 构造方法注入值:<constructor-arg name=”” value=””></constructor-arg>
    4. p命名空间注入值:
      • 头文件注入

xmlns:p="http://www.springframework.org/schema/p"

<bean id=”” class=”” p:属性=”” p:属性-ref=””></bean>

(5)spel注入:<property name=”” value=”#{对象名.属性名}”></property>

(6)list:<property><list><value></value>...<value></value></list></property>

(7)map:<property>

<entry>

<key><value></value></key>

<value></value>

</entry>

</property>

(8)、<property name="info">

                           <props>

                                    <prop key="学号">50222</prop>

                                    <prop key="sex">5</prop>

                           </props>

         </property>

  1. 注解配置方式
    1. 所需jar文件:

(2)给某个类创建对象的注解:

注:在类名上方加上@Component注解后,意为将UserController让spring管理,相当于:

<bean id=”userController” class=”com.qianf.controller.UserController”></bean>

特别注意,每个类都有默认无参构造方法。如果此类写了有参构造方法,需手动生成无参构造方法;如果没有写有参构造方法,此类会有默认无参构造方法,可以不写

(3)在spring文件中添加:扫描此包下有注解的类并创建此类的对象

<!--扫描包设置-->

    <context:component-scan base-package="com.qianf.controller"/>

注:如果想用注解方式让spring来管理对象,必须在spring.xml文件中配置此扫描设置,扫描某个包下所有类,哪个类上写了@Component,spring就会管理哪个类

(4)给此对象的属性赋值

(5)@Value(“”)注解得作用是给普通变量类型赋值

(6)如果类属性中出现其他类对象,需要利用@Autowired(自动装配)注解,并且自动装配 得类也要交给spring管理才能自动装配

自动扫描就需要在扫描此类所在得包才能得到

<context:component-scan base-package="com.qianf.controller,com.qianf.service"/>

(7)@Qualifier(“对象名”),标记具体用哪一个接口实现类

如果上述UserService是一个接口,并且有两个接口实现类:

UserServiceImpl1,UserServiceImpl2,需要用@Qualifier来标记,此处接口用哪个实现类

(8)@Resource(“接口实现类名”) ==@Autowired+@Qualifier(“接口实现类名”)

 

        

  • AOP:Aspect Oriented Programming 面向切面编程
    1. Aop目标:让我们可以专心做事:
      1. 将复杂得需求分解出不同方面,将散布在系统中得公共功能集中解决
      2. 采用代理机制组装起来运行,在不改变原程序得基础上对代码进行增强处理,增加新功能
    2. Aop相关术语:
      1. 增强处理(Advice):

      1. 切入点(Pointcut):

      1. 连接点(Join Point):
      2. 切面(Aspect):
      3. 目标对象(Target Object):
      4. AOP代理(AOP proxy):
      5. 织入(Weaving):

 

  • 注解:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值