容器
Spring有两大高级容器使用
BeanFactory
ApplicationContext
大多数开发者都以ApplicationContext来当工厂容器,ApplicationContext是BeanFactory的子类,相比父类BeanFactory,更受大众喜爱。
使用方法
ApplicationContext常用的三个接口实现类
FileSystemXmlApplicationContext
ClassPathXmlApplicationContext
WebXmlApplicationContext
FileSystemXmlApplicationContext
需要提供完整的xml文件路径
ApplicationContext context = new FileSystemXmlApplicationContext("textContentBean.xml");
ClassPathXmlApplicationContext
只需要提供相对路径的xml文件 一般在resource下
ApplicationContext content = new ClassPathXmlApplicationContext("textContentBean.xml");
WebXmlApplicationContext
一般在Servlet的生产环境下使用
ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext );
bean介绍
Spring是通过读取Xml数据找到bean来进行注入以及其他相关操作,不了解没关系,我们在resource下创建一个userBean的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">
</beans>
创建bean
<bean class="cn.marinda.resturants.User" name="userBean"></bean>
使用bean标签来进行创建,class指向当前包下的类,name值为bean值
public class User {
private String User;
private int age;
private String Address;
public int getAge() {
return age;
}
public String getAddress() {
return Address;
}
public void setAge(int age) {
this.age = age;
}
public void setUser(String user) {
User = user;
}
public void setAddress(String address) {
Address = address;
}
public String getUser() {
return User;
}
@Override
public String toString() {
return "User{" +
"User='" + User + '\'' +
", age=" + age +
", Address='" + Address + '\'' +
'}';
}
Main方法
我们使用ClassPathXmlApplicationContext实现类来进行操作
public static void main(String[] args) {
//创建ClassPathXmlApplicationContext
ApplicationContext context = new ClassPathXmlApplicationContext("userBean.xml");
//通过容器找xml中的bean的name
User user = (User) context.getBean("userBean");
//打印
System.out.println(user.toString());
}
bean注入方式
在User里我们已经封装好数据的get set方法,接下来我们开始bean的注入
给bean注入数据
property
constructor-arg
字段注入
property 字段注入标签 参数有name、value、ref
构造方法注入
constructor-arg 构造方法注入标签 参数有name、value、ref
我们将使用property 标签来进行字段注入
<?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">
<bean class="cn.marinda.resturants.User" name="userBean">
<property name="user" value="小明" ></property>
<property name="age" value="16" ></property>
<property name="address" value="狗熊岭" ></property>
</bean>
</beans>
控制台结果
User{User='小明', age=16, Address='狗熊岭'}