控制反转(IOC)

宋新知
2023-12-01

一.什么是Spring

(两个最大特性:控制反转(IOC)和面向切面编程(AOP))

1.spring是一个轻量级的非入侵的框架或容器更好理解

2.轻量级就是小,mybatis也是轻量级应用

3.非入侵是指引入他不会对你的程序造成什么影响反而会使你的代码更加简单

4.支持事务的处理 和 对框架的整合

二.首先是控制反转

控制反转是一种设计思想,ioc是控制反转的缩写,DI是实现控制反转的一种方法。

控制反转是一种通过描述(XML或注解)并通过第三方生产或获取特定对象的方式。

在Spring中实现控制反转的是IOC容器,其实现方法是DI(依赖注入)。

用配置文件将Bean交给spring管理。

无参构造

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="Hello" class="pojo.Hello">
        <property name="str" value="我爱你"/>
    </bean>
    <bean id="UserImpl" class="dao.UserImpl"/>
    <bean id="UserMysqlImpl" class="dao.UserMysqlImpl"/>
    <bean id="UserServiceImpl" class="service.UserServiceImpl">
        <property name="userdao" ref="UserMysqlImpl"/>
    </bean>
</beans>

IOC创建对象的方式为使用无参构造创造对象(默认实现)

假如使用有参构造

1.使用下标赋值(有参构造下标选中第一个参数)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="Hello" class="pojo.Hello">
        <constructor-arg index="0" value="我你"/>
    </bean>
</beans>

2.使用参数类型赋值但重复类型无法使用(不建议使用)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">    
    <bean id="Hello" class="pojo.Hello">
        <constructor-arg type="java.lang.String" value="是"/>
    </bean>
</beans>

3.使用参数的名字赋值

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="Hello" class="pojo.Hello">
        <constructor-arg name="str" value="aowi"/>
    </bean>
</beans>

总结:在配置文件加载的时候,容器里的bean都已经初始化完成了

 类似资料: