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

1、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 List<HelloService> helloServices; public void setName (String name) {
this.name = name;
} public void setAge (String age) {
this.age = age;
} public void setHelloServices(List<HelloService> 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(依赖注入的常用数据类型):

1、注入直接量(基本数据类型、字符串)

<bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord">
<property name="name" value="明明"></property>
<property name="age" value="24"></property>
</bean>

2、引用其他Bean组件(面向接口编程)

    使用ref属性:

    <bean id="helloService" class="com.jpeony.spring.common.HelloServiceImpl"/>

    <bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord">
<property name="helloService" ref="helloService"></property>
</bean>

使用ref标签:

<bean id="helloService" class="com.jpeony.spring.common.HelloServiceImpl"/>

    <bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord">
<property name="helloService">
<ref bean="helloService" />
</property>
</bean>

    使用P命名空间:

     <!-- 头文件加上这句 -->
xmlns:p="http://www.springframework.org/schema/p" <bean id="helloService" class="com.jpeony.spring.common.HelloServiceImpl"/> <bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord" p:helloService-ref="helloService"></bean>

3、使用内部Bean

    <bean id="HelloWord" class="com.jpeony.spring.setter.HelloWord">
<property name="helloService">
<bean class="com.jpeony.spring.common.HelloServiceImpl" />
</property>
</bean>

4、集合类型的属性

// 对应的getter setter
public class ALLCollection {
private List listElement;
private String[] arrayElement;
private Set setElement;
private Map mapElement;
private Properties propsElement; public void setListElement (List listElement) {
this.listElement = listElement;
} public List getListElement () {
return listElement;
} public void setArrayElement (String[] arrayElement) {
this.arrayElement= arrayElement;
} public String[] getArrayElement () {
return arrayElement;
} public void setSetElement (Set setElement) {
this.setElement= setElement;
} public Set getSetElement () {
return setElement;
} public void setMapElement (Map mapElement) {
this.mapElement= mapElement;
} public Map getMaptElement () {
return mapElement;
} public void setPropsElement (Properties propsElement) {
this.propsElement= propsElement;
} public Properties getpropsElement () {
return propsElement;
} }
<bean id="collection" class="com.zxf.DO.ALLCollection">
<property name="listElement">
<list>
<value>list苹果</value>
<value>list香蕉</value>
</list>
</property>
<property name="arrayElement">
<array>
<value>array苹果</value>
<value>array香蕉</value>
</array>
</property>
<property name="setElement">
<set>
<value>set苹果</value>
<value>set香蕉</value>
</set>
</property>
<property name="mapElement">
<map>
<entry>
<key><value>map1</value></key>
<value>map苹果</value>
</entry>
<entry>
<key><value>map2</value></key>
<value>map香蕉</value>
</entry>
</map>
</property>
<property name="propsElement">
<props>
<prop key="prop1">prop苹果</prop>
<prop key="porp2">prop香蕉</prop>
</props>
</property>
</bean>

文章整合至:https://blog.csdn.net/joe18576558921/article/details/80973385、https://www.cnblogs.com/DDiamondd/p/11398678.html

Spring:Spring-IOC三种注入方式、注入不同数据类型的更多相关文章

  1. spring Bean的三种配置方式

    Spring Bean有三种配置方式: 传统的XML配置方式 基于注解的配置 基于类的Java Config 添加spring的maven repository <dependency> ...

  2. Spring boot 集成三种定时任务方式

    三种定时任务方式分别为 org.springframework.scheduling.annotation.Scheduled java.util.concurrent.ScheduledExecut ...

  3. Spring boot 集成三种拦截方式

    三种拦截方式分别为: javax.servlet.Filter org.springframework.web.servlet.HandlerInterceptor org.aspectj.lang. ...

  4. spring bean的三种管理方式·

    1.无参构造函数 1.xml文件配置内容 <!--无参构造函数--> <bean id="bean1" class="com.imooc.ioc.dem ...

  5. Spring Security Encryption三种加密方式

    Encryption One-way encryption       单项加密,客户端将要传递的值先加密(使用特定的加密方法),将原值和加密好的值传递过去,服务器端将原始数据也进行一次加密(两者加密 ...

  6. spring ioc三种注入方式

    spring ioc三种注入方式 IOC ,全称 (Inverse Of Control) ,中文意思为:控制反转 什么是控制反转? 控制反转是一种将组件依赖关系的创建和管理置于程序外部的技术. 由容 ...

  7. [转载]Spring下IOC容器和DI(依赖注入) @Bean及@Autowired

    Spring下IOC容器和DI(依赖注入) @Bean及@Autowired自动装配 bean是什么 bean在spring中可以理解为一个对象.理解这个对象需要换一种角度,即可将spring看做一门 ...

  8. spring注解之@Import注解的三种使用方式

    目录 1.@Import注解须知 2.@Import的三种用法 3.@Import注解的三种使用方式总结 @ 1.@Import注解须知 1.@Import只能用在类上 ,@Import通过快速导入的 ...

  9. spring配置datasource三种方式

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp34 spring配置datasource三种方式 1.使用org.spri ...

  10. Spring Boot将Mybatis返回结果转为驼峰的三种实现方式

    本文不再更新,可能存在内容过时的情况,实时更新请访问原地址:Spring Boot将Mybatis返回结果转为驼峰的三种实现方式: 我们通常获取Mybatis返回的数据结果时想要将字段以驼峰的形式返回 ...

随机推荐

  1. 040.Python进程和Join

    一  进程相关介绍 1.1 进程的概念(process) 进程就是正在运行的程序,它是操作系统中,资源分配的最小单位 资源分配:分配的是cpu和内存等物理资源 进程号是程的唯标识 同-个程序执行两次之 ...

  2. MyBaits 全局配置文件(mybatis-config.xml)

    什么是 MyBatis 全局配置文件 MyBatis 全局配置文件包含影响 MyBatis 框架正常使用的功能设置和属性信息. 它的作用好比手机里的设置图标,点击这个图标就可以帮助我们查看手机的属性信 ...

  3. JQuery.Gantt开发指南(转)

    说明 日前需要用到甘特图,以下转载内容源自网络. • 概述 1.JQuery.Gantt是一个开源的基于JQuery库的用于实现甘特图效果的可扩展功能的JS组件库. •前端页面 o 资源引用 首先我们 ...

  4. ExpressionHelp2

    public static class ExpressionHelp { private static Expression<T> Combine<T>(this Expres ...

  5. SpringMVC学习笔记-REST风格请求实现

    RESTful概念及功能 RESTful的概念:RESTful是 一种资源定位及资源操作的风格,其本身既不是标准也不是协议,而是一种设计风格,可以使得软件整体层次更加分明.代码更加简洁,并且有利于实现 ...

  6. 韩小韩 API接口

    官方网址:https://api.vvhan.com/ 天气API接口: https://api.vvhan.com/api/weather Bing每日图片API接口: https://api.vv ...

  7. 本地软件仓库配置及NFS安装

    [root@localhost ~]# mount /dev/cdrom /mnt mount: /dev/sr0 is write-protected, mounting read-only [ro ...

  8. jquery 改变标签样式

    jQuery改变标签的样式一般有3种 预置好class,然后通过jQuery改变元素的class名,使用的是addClass.removeClass 直接改变元素的css属性值,这种是通过添加styl ...

  9. windows使用attrib来简单隐藏文件

    效果如下: 详细命令说明: ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] [+O | -O] [+I | -I] [+X | -X] [+P | -P] ...

  10. 北汽极狐ARCFOX与华为合作

    北汽极狐ARCFOX与华为合作 全球首款激光雷达量产车 2021年,是激光雷达"上车"的元年. 曾经价格高不可攀,只能用于Robotaxi.无人车测试的激光雷达,终于彻底具备商业化 ...