IOC容器的基本实现,是Spring内部的使用接口,不提供开发人员进行使用。
区别:(加载配置文件时不创建对象,在获取对象(使用时)才创建对象)
BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员使用。
区别:(加载配置文件时就会把配置文件对象进行创建)
创建对应的bean.xml
文件中使用bean
标签,标签里添加对应的属性,即可实现对象的创建。
创建对象的时候也是默认执行无参构造器完成对象创建。
x 1<!--配置User对象创建-->2<bean id="user" class="com.wnaoii.User"/>
在Bean标签中有许多属性,这里介绍下常用属性
使用set
方法注入
常规方式
public class Book {
// 创建属性
private String bname;
// 属性对应的set方法
public void setBname(String bname) {
this.bname = bname;
}
public static void main(String[] args) {
// 建对象
Book book = new Book();
// 注入值
book.setBname("xiaoming");
System.out.println(book.bname);
}
}
xml配置文件方式
写好xml配置文件
<!--配置User对象创建-->
<bean id="book" class="com.wnaoii.Book">
<!--
在bean标签中使用property完成属性注入
name:类里属性的名字
value:需要注入的值
-->
<property name="bname" value="xiaoming"></property>
</bean>
调用xml配置文件
public class TestSpring5 {
@Test
public void testAdd() {
// 1.加载spring配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
// 2.获取配置创建的对象
Book book = context.getBean("book",Book.class); // getBean中”book“为xml配置的对象,Book.class表示转换的类型
book.pringtName();
System.out.println(book);
}
}
有参构造注入
常规方式
public class Book {
// 创建属性
private String bname;
public Book() {
}
// 有参构造
public Book(String bname) {
this.bname = bname;
}
public static void main(String[] args) {
// 建对象,有参构造注入值
Book book = new Book("xiaogang");
System.out.println(book.bname);
}
}
xml配置文件方式
创建类,定义属性,创建对应的有参构造器
public class orders {
private String oname;
private String address;
// 无参构造不写也行?
public orders() {
}
// 有参构造
public orders(String oname, String address) {
this.oname = oname;
this.address = address;
}
}
配置好xml配置文件里的Bean标签
<!--
在bean标签中使用constructor-arg完成属性注入
name:类里属性的名字
value:需要注入的值
-->
<bean id="orders" class="com.wnaoii.Orders">
<constructor-arg name="oname" value="手机"></constructor-arg>
<constructor-arg name="address" value="中国"></constructor-arg>
</bean>
测试类中测试
public class TestSpring5 {
@Test
public void testOrders() {
// 1.加载spring配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
// 2.获取配置创建的对象
Orders orders = context.getBean("orders", Orders.class);
orders.testOrders();
System.out.println(orders);
}
}
P名称空间注入(了解)
原文:https://www.cnblogs.com/WNAOII/p/15252841.html