Spring框架也是刚刚接触,什么IOC控制反转啊,不太清楚,就连一个配置文件都搞的很是糊涂

先说说我遇到的问题吧。最近在看Spring+rabbitmq但是rabbit一个生成者总是配不好,看到网上各种生产者的配置,抄袭这家,看看那一篇文章,很是混乱。感觉要么就是对方写的过于深刻,要么就是我不了解博主的心啊。

今天我们我们在程序中有通过配置文件注入获取到一个bean ,那么如何获取到一个bean。其实获取到一个bean我们可以简单的理解为我们创建对象不采用new的方式,而是通过getBean来初始化一个对象。如何通过getBean来初始化一个对象。我们首先创建一个实体类Person:

package com.wdg.domain;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}}

创建了这样的一个实体类之后,我们要不通过new的方式来创建一个对象,既然用到的Spring,那么我们就要用到Spring这个框架。那么该如何做。

1.我们创建一个spring-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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="person" class="com.wdg.domain.Person"><property name="name" value="张三" /><property name="age" value="18" /></bean>
</beans>

我们可以看到的是在这个配置文件里面我们添加了一个bean ,那么我们在代码里面就可以使用这个配置文件来初始化一个对象

    public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-beans.xml");Person person = (Person) ctx.getBean("person");System.out.println(person);}

我们可以看到的是代码里面并没有new一个Person,而是通过getBean("person")来初始化一个bean。里面的参数是我们在配置文文件中bean的id

最后输出的结果为:Person [name=张三, age=18]

2.可以看到的是bean里面的属性相当于我们进行初始化话的时候对调用到的构造函数。那么我们在配置文件中如果不写属性:如下:

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="person" class="com.wdg.domain.Person"></bean>
</beans>

运行上面的一串java代码,输出:Person [name=null, age=0]

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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="person" class="com.wdg.domain.Person"><property name="name" value="李四" /></bean>
</beans>

输出:Person [name=李四, age=0]

通过上面的三点我们可以知道的是我们在bean之间的属性是通过类里面的getter和setter来进行给属性进行赋值,而不是利用类里面的构造函数,这也就是说明我们可以写属性的时候,可以给任意几个进行赋值。

上面是我们修改配置文件知道了里面的我们在代码里面可以通过加载配置文件用getBean这个方法来创建一个对象。并且里面的属性值是利用类里面的set方法来给类的属性进行赋值的。

今天我们的讲解到这个地方就结束了,下一片文章我们将继续学习Spring注入的一些知识。如果感觉好,就扫一下红包吧

希望对你有所帮助

spring注入----反射模式相关推荐

  1. Spring依赖注入的模式和类型

    依赖注入类型 依赖注入类型 配置元数据举例 Setter 方法 <proeprty name="user" ref="userBean"/> 构造器 ...

  2. Spring注入---实例工厂

    在前面的两篇文章中我们介绍了Spring通过反射的机制注入,和静态的工厂两种方式的注入,在这一篇文章中我们用实例工厂的注入发放来实现创建对象 首先我们还是需要有一个实体类: package com.w ...

  3. 如何使用 Spring 实现策略模式+工厂模式

    欢迎关注方志朋的博客,回复"666"获面试宝典 一.策略模式 策略模式定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换 1.策略模式主要角色 主要角色如下: 封装角色( ...

  4. Spring注入---静态工厂

    在上一篇的博客中我们说Spring注入的一种方式---反射注入.今天我们继续来看一下Spring注入的另外的一种方式---静态的工厂 其实我们的注入,是利用到了配置的文件,当然这种方式的注入有优点也有 ...

  5. spring注入私有字段_Spring字段依赖注入示例

    spring注入私有字段 了解如何编写Spring Field Injection示例 . 字段注入是Spring框架 依赖注入的一种 . 在本教程中,我们将编写几个类,并看一看现场注入工程. 有关S ...

  6. 依赖注入(di)模式_Java依赖注入– DI设计模式示例教程

    依赖注入(di)模式 Java Dependency Injection design pattern allows us to remove the hard-coded dependencies ...

  7. Spring注入:配置注入(set注入和构造器注入)与注解注入

    注入简介 Spring注入可以理解为是对一个对象进行初始化,也就是省去new的这个步骤,类似于工厂模式一样,通过一个工厂制造出这个对象,如果遇到修改,只需要改一处就行了.实现spring注入一般有两种 ...

  8. 策略模式及Spring整合策略模式

    策略模式 抽象策略类 interface SortService{int[] sort(int arr[]);} 具体策略类 class InsertionSortServiceImpl implem ...

  9. Spring框架学习教程,详解Spring注入bean的几种方式

    首先,要学习Spring中的Bean的注入方式,就要先了解什么是依赖注入. 依赖注入是指:让调用类对某一接口的实现类的实现类的依赖关系由第三方注入,以此来消除调用类对某一接口实现类的依赖. Sprin ...

最新文章

  1. Mysql数据库主从及主主复制配置演示
  2. Spring Boot中使用RabbitMQ
  3. 在Eclipse中导入dtd和xsd文件,使XML自动提示
  4. maven打jar包pom配置
  5. 税收java_String 类中的 isEmpty() 是判断字符串是否为空的,如果为空返回 true ,不为空返回 false 。 (1.0分)_学小易找答案...
  6. Java文档阅读笔记-Spring Boot JDBC
  7. 商城系统 DBShop V3.0 Beta 发布
  8. RF+Excel实现数据驱动接口自动化
  9. 局域网不同网段远程桌面_自动化已非原来的自动化:看虚拟局域网技术应用到罗克韦尔的DCS...
  10. 7-13 统计工龄 (20分)
  11. ManoMotion⭐二、Unity手势识别插件简介,及效果录屏
  12. 硬盘柱面损坏怎么办_硬盘扇区损坏怎么办
  13. 关于java中的魔幻数字47你知道么
  14. Springboot返回数据形式
  15. 国际信息研究学会专家杜彪:汉字识别是如何走上机器学习领域巅峰的?
  16. 《沈剑架构师训练营》第6章 - 缓存架构
  17. java设计模式--装饰器模式
  18. v-model的实现原理
  19. FindBugs NN_NAKED_NOTIFY
  20. 程序员,被代码耽误的段子手

热门文章

  1. (转)ZeroMQ的模式-Requset-Reply
  2. 【连载】【黑金动力社区原创力作】《液晶驱动与GUI 基础教程》 --序言(一)
  3. 运维提升首选技能KubernetesPrometheus,你了解多少?(文末福利)
  4. 警惕 Spring Boot Actuator 引发的安全问题
  5. 华为笔记本写代码真爽,包邮送一台!
  6. 如果MySQL磁盘满了,会发生什么?
  7. 你知道Redis可以实现延迟队列吗?
  8. QPS、TPS、RT、并发数、吞吐量理解和性能优化深入思考
  9. 推荐一位高性能服务开发专家!是他让我从专科,蜕变为年薪百万后端开发!...
  10. 为什么阿里P8、P9技术大牛反复强调“结构化思维”?