Spring的applicationContext默认使用无参构造创建对象

 1 public class User {
 2     private String name;
 3   
 4     public User() {
 5         System.out.println("User的无参构造");
 6     }
 7
 8     public String getName() {
 9         return name;
10     }
11
12     public void setName(String name) {
13         this.name = name;
14     }
15
16 }
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xsi:schemaLocation="http://www.springframework.org/schema/beans
 5         https://www.springframework.org/schema/beans/spring-beans.xsd">
 6     <bean id="user" class="com.rzk.pojo.User">
 7         <property name="name" value="小明"/>默认使用无参设置值
 8     </bean>
 9
10
11 </beans>
1 public class Mytext {
2     public static void main(String[] args) {
3         ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
4         User user = (User) context.getBean("user");
5         <!--System.out.println(user.getName());-->
6      application一注册就实例化
7     }
8 }

当我们创建ApplicationContext对象的时候 同时会将 配置文件中配置的bean对象一起创建

(饿汉模式 )这时候无参构造也被加载

上面是使用无参设置值

-------------

下面是有参设置

 1 public class User {
 2     private String name;
 3
 4     public User(String name) {
 5         this.name = name;
 6         System.out.println("User的有参构造");
 7     }
 8
 9     public String getName() {
10         return name;
11     }
12
13     public void setName(String name) {
14         this.name = name;
15     }
16
17 }

直接通过参数名设置值

 1  <?xml version="1.0" encoding="UTF-8"?>
 2  <beans xmlns="http://www.springframework.org/schema/beans"
 3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4         xsi:schemaLocation="http://www.springframework.org/schema/beans
 5          https://www.springframework.org/schema/beans/spring-beans.xsd">
 6      <bean id="user" class="com.rzk.pojo.User">
 7  <!--        <property name="name" value="小明"/>-->
 8          <constructor-arg name="name"  value="小明" />使用有参注入值
 9      </bean>
10  </beans>

-------------

通过下标赋值

 1 public class User {
 2     private String name;
 3     private int age;
 4
 5     public User(String name, int age) {
 6         this.name = name;
 7         this.age = age;
 8         System.out.println("User的有参构造");
 9     }
10
11     public String getName() {
12         return name;
13     }
14
15     public void setName(String name) {
16         this.name = name;
17     }
18
19     public int getAge() {
20         return age;
21     }
22
23     public void setAge(int age) {
24         this.age = age;
25     }
26 }
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xsi:schemaLocation="http://www.springframework.org/schema/beans
 5         https://www.springframework.org/schema/beans/spring-beans.xsd">
 6     <bean id="user" class="com.rzk.pojo.User">
 7         <constructor-arg index="0"  value="小明" />
 8         <constructor-arg index="1" value="12"/>
 9     </bean>
10 </beans>

原文地址:https://www.cnblogs.com/rzkwz/p/12637284.html

时间: 2024-07-30 15:52:30

Spring的applicationContext默认使用无参构造创建对象的相关文章

JAVA面向对象封装(无参构造、有参构造、失血模型、重写toString)方法

//定义一个学生类public class Student {    //成员变量    private String name;    private int age;    private String address;    //无参构造方法    public Student() {        super();    }    //有参构造方法    public Student(String name, int age, String address) {        super

第四周(默认构造函数 无参为1)

/* *copyright(c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:第四周(三角形) *作者:王忠 *完成日期:2015.4.1 *版本号:v1.0 * *问题描述:输入三角形三条边长,求出面积 周长 *输入描述:输入三角形三条边长 *程序输出:输出面积 周长 #include <iostream> #include <cmath> using namespace std; class Triangle { public: Tri

Android(java)学习笔记119:继承中父类没有无参构造

1 /* 2 如果父类没有无参构造方法,那么子类的构造方法会出现什么现象呢? 3 报错. 4 如何解决呢? 5 A:在父类中加一个无参构造方法 6 B:通过使用super关键字去显示的调用父类的带参构造方法 7 C:子类通过this去调用本类的其他构造方法 8 子类中一定要有一个去访问了父类的构造方法,否则父类数据就没有初始化. 9 10 注意事项: 11 this(...)或者super(...)必须出现在第一条语句上. 12 如果不是放在第一条语句上,就可能对父类的数据进行了多次初始化,所以

No default constructor for entity Java无参构造函数

异常 org.hibernate.InstantiationException: No default constructor for entity 当查询的时候返回的实体类是一个对象实例,是hibernate动态通过反射生成的 反射的Class.forName("className").newInstance();需要对应的类提供一个无参构造函数, 出现这种问题是一般都是实体类有一个有参的构造 ,没有无参构造, 下面说一下有参构造 和无参构造 1,每一个类在默认情况下,都会有一个无参

42)子类继承 有参父类 和无参父类

1)  子类继承有参的父类,那么  必须在子类的  构造函数的初始化列表那里,给父类赋值,比如说 父类 Student 的构造函数  是   Student(int  age  ,string  name) 然后我的子类的构造函数 须是: Student3(int  age ,string   name,int   sorce):Student(age,name) {                          } 2)总之,不管你是  有参父类构造函数  还是无参构造函数  那么就有了

要养成良好的编程习惯:就是要加上默认的父类无参的构造方法

Super()表示调用父类的构造方法. Super()也和this一样必须放在第一行. This()用于调用本类的构造方法. 如果没有定义构造方法,那么就会调用父类的无参构造方法,即super(). 要养成良好的编程习惯:就是要加上默认的父类无参的构造方法. 思考:可是如果我们没有定义无参的构造方法,而在程序中构造了有参的构造方法,那么如果方法中没有参数,那么系统还会调用有参的构造方法么?应该不会. 1 package TomText; 2 3 public class TomText_18 {

子类构造函数是否会默认调用父类的无参构造函数

1 package test; 2 3 public class TestB { 4 5 public TestB() { 6 System.out.println("TestB的无参构造函数..."); 7 } 8 9 } 1 package test; 2 3 public class TestA extends TestB { 4 5 public TestA(int i) { 6 System.out.println(i); 7 } 8 9 public static void

Eclipse中的快捷键快速生成常用代码(例如无参、带参构造,set、get方法),以及Java中重要的内存分析(栈、堆、方法区、常量池)

Eclipse中的快捷键快速生成常用代码(例如无参.带参构造,set.get方法),以及Java中重要的内存分析(栈.堆.方法区.常量池) 以上就是Eclipse中的快捷键快速生成常用代码(例如无参.带参构造,set.get方法),以及Java中重要的内存分析(栈.堆.方法区.常量池)的全部内容了,更多内容请关注:CPP学习网_CPP大学 本文固定链接:CPP学习网_CPP大学-Eclipse中的快捷键快速生成常用代码(例如无参.带参构造,set.get方法),以及Java中重要的内存分析(栈.

JavaSE8基础 子类中所有的构造方法默认访问父类中无参构造方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: /*默认的:子类中所有的构造方法默认都会访问父类中无参构造方法*/ //父类 class Father { //无参构造函数 public Father() { System.out.println("父类无参构造函数"); } //有参构造函数 public Father(int num) { S