1.构造方法注入
依然用上篇文章的案例(但是在user类中加了toString,有参构造与无参构造)
ClassPathXmlApplicationContext con = new ClassPathXmlApplicationContext("applicationContext.xml");
//从spring容器中获取实例
User u1 = (User) con.getBean("user");
User u2 = con.getBean("user", User.class);
User u3 = con.getBean(User.class);
System.out.println("u1="+u1);
System.out.println("u2="+u2);
System.out.println("u3="+u3);
在容器中输入变量的名字和值,容器就会自动给变量赋值
2.set方法注入
顾名思义,就是通过set方法注入,我们可以在set方法中打印一句话,看看是否会执行
public void setUsername(String username) {
this.username = username;
System.out.println("-----------------------");
}
ClassPathXmlApplicationContext con = new ClassPathXmlApplicationContext("applicationContext.xml");
User u4 = (User) con.getBean("user2");
User u5=con.getBean("user2",User.class);
System.out.println("u4="+u4);
System.out.println("u5="+u5);
3.p命名空间注入,本质上还是调用set方法
ClassPathXmlApplicationContext con = new ClassPathXmlApplicationContext("applicationContext.xml");
User u6 = (User) con.getBean("user3");
User u7=con.getBean("user3",User.class);
System.out.println("u4="+u6);
System.out.println("u5="+u7);
从打印中我们可以看出,这三次方法每次运行都活调用无参构造,而set和p命名空间方式注入都会调用set方法
第一次使用p命名空间的时候回报出错误
需要引入命名空间
xmlns:p="http://www.springframework.org/schema/p"
本文章仅是本人的理解,思路来源于B站 江南一点雨 的视频链接奉上
SSM 实战 100集_哔哩哔哩_bilibili



