Spring中怎么注入Set方法
Spring中怎么注入Set方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
Set 方法注入
新建一个空的 maven项目。
导入依赖
properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!--这里是java 版本号--> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <!--这里是方便版本控制--> <spring.version>5.3.1</spring.version> <lombok.version>1.18.20</lombok.version> <junit.version>4.12</junit.version></properties><dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency></dependencies>
工程项目结构
新建包 com.crush.pojo
新建Java类Student
@Data // set、get 方法@AllArgsConstructor // 全参构造@NoArgsConstructor // 无参构造public class Student { private Long number; private String name; private String school;}
resource 下 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.xsd"> <!--第一种方式 set 方式注入 1、有set方法才可以注入 2、默认是单例模式 singleton --> <bean id="student" class="com.crush.pojo.Student" scope="singleton"> <!--值可以跟在在标签后面 也可以 写在标签内部--> <property name="number"> <value>1</value> </property> <property name="name" value="wyh"/> <property name="school" value="hngy"/> </bean> <!--这个id 就是 applicationContext.getBean("【bean-id】", Student.class); 此处id 大多数时候命名规则就是 类名的第一个字母改为小写 class:Student bean id一般就为: student --> <bean id="ssss" class="com.crush.pojo.Student" scope="singleton"> <!--值可以跟在在标签后面 也可以 写在标签内部--> <property name="number"> <value>1</value> </property> <property name="name" value="wyh"/> <property name="school" value="hngy"/> </bean></beans>
写一个测试类
public class Test { @org.junit.Test public void test(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml"); // 第一种方式 获取ioc 容器中的Student 强制类型转换 Student student = (Student) applicationContext.getBean("student"); // 第二种方式 直接在后面写明类的标签。 Student student1 = applicationContext.getBean("student", Student.class); // student.setName("cccc"); 给其中一个修改 就会全部修改 可以自己打开测试下 System.out.println(student); System.out.println(student1); // 这里结果为true // 解释:因为Spring 默认构造出来的对象 默认是单例的。 无论获取多少次 ,都是单例的。 System.out.println(student==student1); } @org.junit.Test public void test2(){ //这里的路径 也可以 用绝对路径 ApplicationContext applicationContext = new FileSystemXmlApplicationContext("class="lazy" data-src\\main\\resources\\beans.xml"); Student student = applicationContext.getBean("student", Student.class); System.out.println(student); }}
小小思考
为什么 new ClassPathXmlApplicationContext(“beans.xml”); 要用ApplicationContext 来接收,而不用ClassPathXmlApplicationContext 接收呢?
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
解释:
按照面向接口编程的思想,声明变量应该是接口类型的,然后创建一个该接口的实现类的实例赋值给该变量。 ApplicationContext是接口,ClassPathXmlApplicationContext是它的一个实现类。所以你就看到了 ApplicationContext ac = new ClassPathXmlApplicationContext(…)
关于Spring中怎么注入Set方法问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341