首页后端开发其他后端知识Spring ioc注入的方式有哪些,怎样实现?

Spring ioc注入的方式有哪些,怎样实现?

时间2024-03-28 20:36:03发布访客分类其他后端知识浏览546
导读:这篇文章给大家分享的是Spring ioc注入的方式。小编觉得挺实用的,因此分享给大家做个参考,Spring ioc注入主要有三种方式,文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。本教程操作环境:win...

这篇文章给大家分享的是Spring ioc注入的方式。小编觉得挺实用的,因此分享给大家做个参考,Spring ioc注入主要有三种方式,文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。

本教程操作环境:windows7系统、java8版本、Dell G3电脑。

Spring IOC(依赖注入的三种方式):

1、Setter方法注入

Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。

package com.jpeony.spring.setter;
    
import com.jpeony.spring.common.HelloServiceImpl;
public class HelloWord {
    
private HelloService helloService;

 
    // setter方式注入Bean
    public void setHelloService(HelloService helloService) {
    
        this.helloService = helloService;

    }

 
    @Override
    public void selfIntroduction() {
    
        // 向大家打招呼
        helloService.sayHello("大家好!");

    }

 
}
    
?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声明:
         该bean类似于javaConfig中的@Bean注解;
    
         用于创建bean的类通过class属性来指定,并且需要使用全限定的类名。
         通过id指定bean的ID。如果不显示指定,默认使用class的全限定名进行命名。
         eg:
         com.jpeony.spring.common.HelloServiceImpl#0,其#0是一个计数器的形式,
         用来区分相同类型的其他bean。
         使用自动化命名很方便,但是没有多少实际用处,还是建议自己给bean显示设定ID。
     -->
    
    bean id="helloService" class="com.jpeony.spring.common.HelloServiceImpl"/>
    
 
    !-- setter注入bean -->
    
    bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord">
    
        property name="helloService" ref="helloService"/>
    
    /bean>
    
 
/beans>
    

2、构造方法注入

构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。

package com.jpeony.spring.setter;
    
import com.jpeony.spring.common.HelloServiceImpl;


public class HelloWord {
    
    private HelloService helloService;

 
    // 构造方法注入
    public HelloWord (HelloService helloService) {
    
        this.helloService = helloService;

    }

 
}
    
?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声明:
         该bean类似于javaConfig中的@Bean注解;
    
         用于创建bean的类通过class属性来指定,并且需要使用全限定的类名。
         通过id指定bean的ID。如果不显示指定,默认使用class的全限定名进行命名。
         eg:
         com.jpeony.spring.common.HelloServiceImpl#0,其#0是一个计数器的形式,
         用来区分相同类型的其他bean。
         使用自动化命名很方便,但是没有多少实际用处,还是建议自己给bean显示设定ID。
     -->
    
    bean id="helloService" class="com.jpeony.spring.common.HelloServiceImpl"/>
    
 
    !-- 构造方法注入bean -->
    
    bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord">
    
        constructor-arg>
    ref bean="helloService"/>
    /constructor-arg>
    
    /bean>
    
 
/beans>
    

3、P命名空间注入

package com.jpeony.spring.setter;
    
import com.jpeony.spring.common.HelloServiceImpl;


public class HelloWord {
    
    //名字
    private String name;
    
    //年龄
    private String age;
    
    //方法类
    private HelloService helloService;

 
    public void setName (String name) {
    
        this.name = name;

    }

    
    public void setAge (String age) {
    
        this.age = age;

    }

    
    public void setHelloService(HelloService helloService) {
    
        this.helloService = helloService;

    }

 
    @Override
    public void selfIntroduction() {
    
        // 向大家打招呼
        helloService.sayHello("我叫"+ name + ",今年" + age + "岁,大家好!");

    }

 
}
    
?xml version="1.0" encoding="UTF-8"?>
    
beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       !-- 引入p命名标签 -->
    
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    
    bean id="helloService" class="com.jpeony.spring.common.HelloServiceImpl"/>
    
 
    !-- p标签注入bean -->
    
    bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord" 
     p:name="明明" p:age="24" p:helloService-ref="helloService">
    /bean>
    
 
/beans>
    

P标签注入集合bean

package com.jpeony.spring.setter;
    
import com.jpeony.spring.common.HelloServiceImpl;
    
import java.util.List;


public class HelloWord {
    
    //名字
    private String name;
    
    //年龄
    private String age;
    
    //方法类
    private ListHelloService>
     helloServices;

 
    public void setName (String name) {
    
        this.name = name;

    }

    
    public void setAge (String age) {
    
        this.age = age;

    }
    
    
    public void setHelloServices(ListHelloService>
 helloServices) {
    
        this.helloServices = helloServices;

    }

 
    @Override
    public void selfIntroduction() {
    
        // 向大家打招呼
        helloServices[0].sayHello("我叫"+ name + ",今年" + age + "岁,大家好!");

    }

 
}
    
?xml version="1.0" encoding="UTF-8"?>
    
beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       !-- 引入p命名标签 -->
    
       xmlns:p="http://www.springframework.org/schema/p"
       !-- 引入util命名标签 -->
    
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    
    bean id="helloService" class="com.jpeony.spring.common.HelloServiceImpl"/>
    

    bean id="helloService2" class="com.jpeony.spring.common.HelloServiceImpl">
    
    ...........
    /bean>
    
 
    util:list id="helloServices">
    
        ref bean="helloService"/>
    
        ref bean="helloService2"/>
    
    /util:list>
    

    !-- p标签注入bean -->
    
    bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord" 
     p:name="明明" p:age="24" p:helloServices-ref="helloServices">
    /bean>
    
 
/beans>
    

以上就是关于Spring ioc注入的方式的介绍,上述示例具有一定的参考价值,有需要的朋友可以了解看看,希望对大家学习有帮助,想要了解更多可以继续浏览网络其他相关的文章。

文本转载自PHP中文网

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Spring ioc注入的方式有哪些,怎样实现?
本文地址: https://pptw.com/jishu/655183.html
Eclipse中怎么新建项目,操作是什么? HTML中如何实现跳转页尾,方法是什么?

游客 回复需填写必要信息