外贸网站建设 推广,淮北工程建设公司,wordpress 分类排序,交换友情链接的途径有哪些目录 一、什么是注入#xff08;Injection#xff09; 1.1 为什么要注入 二、注入的基本使用 三、Spring注入原理分析 一、什么是注入#xff08;Injection#xff09;
注入就是通过Spring的配置文件#xff0c;为所创建对象的成员变量进行赋值
1.1 为什么要注入
书接上… 目录 一、什么是注入Injection 1.1 为什么要注入 二、注入的基本使用 三、Spring注入原理分析 一、什么是注入Injection
注入就是通过Spring的配置文件为所创建对象的成员变量进行赋值
1.1 为什么要注入
书接上回学习了Spring的配置文件之后获取类对象就不再使用new对象的方式了取而代之的是使用Spring中的配置文件来获取对象。但是在创建对象的过程中又发现了一个问题这里以之前的代码为例修改用户名和密码就会涉及到修改代码这里就会出现之前所说的耦合。 对于这种问题要怎么去解决呢在这里Spring也给出了解决方案那就是注入所以由此也得出了注入的好处解耦合
二、注入的基本使用
1首先为了测试创建一个Person类并且一定要写上setter方法因为Spring底层就是通过调用setter方法为成员变量赋值的这个后面再细说现在先了解基本的使用
public class Person {private String name;private int 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 };}
}2在配置文件中创建好关于Person类的bean标签类路径一定要正确 3接下来测试获取Person类对象传统的方式是直接用person对象调用setter方法但是会产生耦合
public void test2() {// 通过Spring提供的接口获取到类对象ApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml);Person person (Person) ctx.getBean(person);// 传统的方式是直接用person对象调用setter方法但是会产生耦合// person.setName(李四);// person.setAge(20);
}
4Spring中提供了在bean标签中使用property标签为对应的属性赋值此时利用value标签就为对应的属性注入好值了
bean idperson classcom.gl.demo.model.Person
!-- 这里name中的值一定要对应到类中的属性名称可不能错--property namenamevalue王五/value/propertyproperty nameagevalue21/value/property
/bean
此时在测试方法中即便不使用person对象调用setter方法也可以为person对象中的属性赋值了
public void test3() {// 通过Spring提供的接口获取到类对象ApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml);Person person (Person) ctx.getBean(person);// 传统的方式是直接用person对象调用setter方法但是会产生耦合// person.setName(李四);// person.setAge(20);System.out.println(person);
}
此时我们可以发现打印的内容就是标签中的王五而不再是李四了由此发现注入已经是成功了并且如果我们想要修改王五的信息也不用去修改代码了直接修改配置文件即可这样就将耦合解除了 三、Spring注入原理分析
这里利用这个一个Account类来分析Spring注入的基本原理 当bean标签创建好了对象之后第一个property标签就会调用对应属性的setName方法第二个property标签开始调用对应的setPassword方法这些调用都是在Spring中完成的不需要我们自己去调用了进行了解耦。