一、setter注入(教材248-249)
1、创建名为“11-1”的动态web项目,首先创建用户的JavaBean,代码如下:
package com.mr.user;
public class User {
private String name;//用户姓名
private Integer age;//年龄
private String sex;//性别
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
2、在Spring的配置文件“applicationContext.xml”中配置该JavaBean
<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-3.0.xsd">
<!-- User Bean -->
<bean name="user" class="com.mr.user.User">
<property name="name">
<value>周雨彤</value>
</property>
<property name="age">
<value>19</value>
</property>
<property name="sex">
<value>女</value>
</property>
</bean>
</beans>
上面的代码中,<value>标签用于为name属性赋值,在成对的<value>标签中放入数值或是其他赋值标签,Spring就会把这个标签提供的属性值注入指定的JavaBean中。
3、导入所需的jar包
4、创建package com.mr.servlet,class ManagerServlet,获取Bean,并输送用户信息,代码如下
package com.mr.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.mr.user.User;
/**
* Servlet implementation class ManagerServlet
*/
@WebServlet("/ManagerServlet")
public class ManagerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ManagerServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ApplicationContext factory=new ClassPathXmlApplicationContext("applicationContext.xml"); //装载配置文件
User user = (User) factory.getBean("user"); //获取Bean
System.out.println("用户姓名——"+user.getName());//输出用户的姓名
System.out.println("用户年龄——"+user.getAge());//输出用户的年龄
System.out.println("用户性别——"+user.getSex());//输出用户的性别
}
}
关键代码:
ApplicationContext factory=new ClassPathXmlApplicationContext("applicationContext.xml"); //装载配置文件
User user = (User) factory.getBean("user"); //获取Bean
System.out.println("用户姓名——"+user.getName());//输出用户的姓名
System.out.println("用户年龄——"+user.getAge());//输出用户的年龄
System.out.println("用户性别——"+user.getSex());//输出用户的性别
5、运行得到
二、构造器注入
1、在用户JavaBean中创建构造方法
package com.mr.user;
public class User {
private String name; //用户姓名
private Integer age; //年龄
private String sex; //性别
//构造方法
public User(String name,Integer age,String sex){
this.name=name;
this.age=age;
this.sex=sex;
}
//输出JavaBean的属性值方法
public void printInfo(){
System.out.println("用户姓名——"+name); //输出用户的姓名
System.out.println("用户年龄——"+age); //输出用户的年龄
System.out.println("用户性别——"+sex); //输出用户的性别
}
}
2、applicationcontext.xml中的通过<constructor-arg>元素为JavaBean的属性赋值
<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-3.0.xsd">
<!-- User Bean -->
<bean name="user" class="com.mr.user.User">
<constructor-arg>
<value>周雨彤</value>
</constructor-arg>
<constructor-arg>
<value>19</value>
</constructor-arg>
<constructor-arg>
<value>女</value>
</constructor-arg>
</bean>
</beans>
3、创建ManagerServlet的Servlet,调用Bean对象的printinfo()方法输送用户信息
package com.mr.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.mr.user.User;
/**
* Servlet implementation class ManagerServlet
*/
@WebServlet("/ManagerServlet")
public class ManagerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ManagerServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ApplicationContext factory=new ClassPathXmlApplicationContext("applicationContext.xml"); //装载配置文件
User user = (User) factory.getBean("user"); //获取Bean
user.printInfo(); //输出JavaBean的属性值
}
}
关键代码如下:
ApplicationContext factory=new ClassPathXmlApplicationContext("applicationContext.xml"); //装载配置文件
User user = (User) factory.getBean("user"); //获取Bean
user.printInfo(); //输出JavaBean的属性值
4、运行得到