Spring入门系列之Ioc控制反转注入原理

x33g5p2x  于2021-03-14 发布在 Spring  
字(2.0k)|赞(0)|评价(0)|浏览(133)

在spring中IOC控制反转是spring的一个重点内容下面我们通过一个简单的案例简单阐述一下springIOC的应用,这其中包括ID和name两种注入方法和基本属性的注入方法等标注在注释中:

1、 新建Java项目并且加入Jar包:
这一步我们首先要新建一个java项目然后导入相关的Jar包支持。在这里我说明一下要导入的Jar包:
分别是:

A、 Spring.jar内部包含控制反转的内容
B、 Commons-logging.jar是我们用来输出日志用的

2、 编写程序得到BeanFactory容器中的java对象
A、 编写要IOC的Java类

//类很简单。只有一个方法用来测试即可  
    public void addUser(){  
        System.out.println("============");  
    }  

B、 编写beans.xml文件

<?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-2.5.xsd">  
    <bean id="userAction" class="com.spring.action.UserAction" />  
</beans>

C、 编写测试类JunitTestCase

@Test  
    public void test01(){  
        //得到容器对象  
        BeanFactory applicationContext = new ClassPathXmlApplicationContext("beans.xml");  
        //得到配置的bean  
        UserAction user = (UserAction) applicationContext.getBean("userAction");  
        调用相关的方法  
        user.addUser();  
    } 

输出结果:
============

Setter注入:原理同上。只不过是我们不new类里面的属性。而是只将他声明出来。然后将容器里面的值配置通过反射赋值过去即可:

在下面的类里面userService属性并没有new出来。但是它有一个set方法。赋值的方法也就是配置文件中指定的:
Java文件

public class UserAction {  
      
    private UserService userService;  
  
    public void setUserService(UserService userService) {  
        this.userService = userService;  
    }  
      
    public void addUser(){  
        userService.HelloWorld();  
    }  
}

Xml配置文件:

<bean id="userService" class="com.spring.service.UserServiceImpl">  
    <property name="userDao" ref="userDao"></property>  
</bean>  
  
<!—下面的ID可以换成name最大的区别就是name可以有特殊字符,而ID不可以有-->  
<bean id="userAction" class="com.spring.action.UserAction">  
    <property name="userService" ref="userService">  
        <!—基本属性的注入方式-->  
        <value>helloworld</value>  
</property>  
</bean>  

这里我们首先第一个指定了userService的bean。然后将这个bean按照property指定到了Action的属性值里面。也就是将值赋了过去。

另外注入的方式分为3种。Setter、constructor、Interface。
我们经常用的也就是Setter了。这里也就只介绍setter方法。

相关文章