Spring及IOC

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)

 

IoC容器

控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法

没有IoC的程序中 , 我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制

控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了

  • 由程序去进行控制创建 --> 由我们自行控制创建对象

  • 主动权交给了调用者,程序不用去管怎么创建,怎么实现了,它只负责提供一个接口

  • 程序员不再去管理对象的创建 , 更多的去关注业务的实现 . 耦合性大大降低

 

spring

  • spring容器中的每一个对象都称为bean

  • //获取spring的上下文对象:

 ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
  • 不用再程序中去改动了 , 要实现不同的操作 , 只需要在xml配置文件中进行修改 , 所谓的IoC,一句话搞定 : 对象由Spring 来创建 , 管理 , 装配 !

Bean配置

  • id 是bean的标识符,要唯一,如果没有配置id,name就是默认标识符

  • 如果配置id,又配置了name,那么name是别名,name可以设置多个别名

  • 如果不配置id和name,可以根据applicationContext.getBean(.class)获取对象

  • class是bean的全限定名=包名+类名

<bean id="hello" name="hello2 h2,h3;h4" class="com.kuang.pojo.Hello">
  <property name="name" value="Spring"/>
</bean>

property

  • value: 该属性不属于bean-id引用,例如对于int和String属性来说,他们都是可以直接注入的,可以不需要实例化,所以通过value就可以注入值

  • ref: 该属性属于bean-id引用,一般是对类型是类的属性进行注入才会用

 

依赖注入DI

  • 依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源

  • 注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配(即注入)

构造器注入

Set方式注入!

扩展注入方式

  • p命名空间注入 :

 导入约束 : xmlns:p="http://www.springframework.org/schema/p"
<!--P(属性: properties)命名空间 , 属性依然要设置set方法-->
<bean id="user" class="com.kuang.pojo.User" p:name="狂神" p:age="18"/>
  • c 命名空间注入 :

 导入约束 : xmlns:c="http://www.springframework.org/schema/c"
<!--C(构造: Constructor)命名空间 , 属性依然要设置set方法
把有参构造器加上,这里也能知道,c 就是所谓的构造器注入-->
<bean id="user" class="com.kuang.pojo.User" c:name="狂神" c:age="18"/>

Bean作用域

  • 单例模式(Spring默认机制)

  • 原型模式:一个bean定义对应多个对象实例,每次从容器中get的时候才会创建一个新对象

 <bean id="account" class="com.foo.DefaultAccount" scope="prototype"/>  
或者
<bean id="account" class="com.foo.DefaultAccount" singleton="false"/>
  • request、session等作用域仅在基于web的应用中使用

posted @ 2023-07-13 16:59  Hmzzz2  阅读(3)  评论(0编辑  收藏  举报