类别:
singleton:Bean以单例的方式存在,为默认值
prototype:多例,每次从容器中调用bean时,都会返回一个新的实例。
<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 id="userService" class="com.hetl.day01.impl.UserServiceImpl" scope="singleton">
<property name="name" value="李四"/>
bean>
<bean id="userService1" class="com.hetl.day01.impl.UserServiceImpl" scope="prototype">
<property name="name" value="张三"/>
bean>
beans>
测试:
@Test
public void test04(){
ApplicationContext c = new ClassPathXmlApplicationContext("beans1.xml");
//从spring容器获取userService对象
UserService u1 = (UserService) c.getBean("userService");
u1.add();
UserService u2 = (UserService) c.getBean("userService");
u2.add();
UserService u3 = (UserService) c.getBean("userService1");
u1.add();
UserService u4 = (UserService) c.getBean("userService1");
u2.add();
System.out.println(u1);
System.out.println(u2);
System.out.println(u3);
System.out.println(u4);
}
<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">
<property name="name" value="zhangsan"/>
<property name="gender" value="男"/>
<property name="id" value="15"/>
bean>
beans>
package com.hetl.day02.pojo;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.*;
public class Student implements BeanNameAware , BeanFactoryAware, InitializingBean, DisposableBean {
private String name;
private String gender;
private Integer id;
public String getName() {
return name;
}
public void setName(String name) {
System.out.println("2.属性赋值"+name);
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Student() {
System.out.println("1.实例化。。。。");
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", gender='" + gender + '\'' +
", id=" + id +
'}';
}
public void setBeanName(String s) {
System.out.println("3.设置Bean的名字"+s);
}
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
System.out.println("4.设置BeanFactory的名字"+beanFactory);
}
public void afterPropertiesSet() throws Exception {
System.out.println("6.属性赋值完成。。。。");
}
public void myInit(){
System.out.println("7.自己设置初始化方法");
}
public void destroy() throws Exception {
System.out.println("9.bean销毁");
}
public void myDestroy(){
System.out.println("10.自己的方法销毁");
}
}
@Test
public void test05() throws Exception {
ApplicationContext c = new ClassPathXmlApplicationContext("beans1.xml");
//从spring容器获取userService对象
Student s = (Student) c.getBean("student");
System.out.println(s);
//关闭容器
c.getClass().getMethod("close").invoke(c);
}
1.实例化。。。。
2.属性赋值zhangsan
3.设置Bean的名字student
4.设置BeanFactory的名字org.springframework.beans.factory.support.DefaultListableBeanFactory@6e1ec318: defining beans [student]; root of factory hierarchy
6.属性赋值完成。。。。
7.自己设置初始化方法
Student{name='zhangsan', gender='男', id=15}
9.bean销毁
10.自己的方法销毁
构造器注入、set注入
<bean id="student" class="com.hetl.day02.pojo.Student1">
<property name="name" value="xiaotian">property>
<property name="gender" value="zhong">property>
<property name="age" value="12">property>
bean>
List注入、set注入、map注入、properties注入
数组注入
<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 id="user" class="com.hetl.day02.pojo.User">
<property name="gender" value="男">property>
<property name="name" value="小王">property>
<property name="age" value="16">property>
<property name="animals">
<list>
<value>小狗value>
<value>小猪value>
<value>小猫value>
list>
property>
<property name="cars">
<set>
<value>自行车value>
<value>自行车value>
<value>山地车value>
<value>三轮车value>
set>
property>
<property name="infos">
<map>
<entry key="1" value="周一">entry>
<entry key="2" value="周三"/>
map>
property>
<property name="prop">
<props>
<prop key="name">jdbc.username.rootprop>
<prop key="driver">jdbc.driverprop>
props>
property>
bean>
beans>
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class User {
private String name;
private Integer age;
private String gender;
private List<String> animals;
private Set<String> cars;
private Map<String,String> infos;
private Properties prop;
public User() {
}
public User(String name, Integer age, String gender, List<String> animals, Set<String> cars, Map<String, String> infos, Properties prop) {
this.name = name;
this.age = age;
this.gender = gender;
this.animals = animals;
this.cars = cars;
this.infos = infos;
this.prop = prop;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
", animals=" + animals +
", cars=" + cars +
", infos=" + infos +
", prop=" + prop +
'}';
}
public Properties getProp() {
return prop;
}
public void setProp(Properties prop) {
this.prop = prop;
}
public Map<String, String> getInfos() {
return infos;
}
public void setInfos(Map<String, String> infos) {
this.infos = infos;
}
public Set<String> getCars() {
return cars;
}
public void setCars(Set<String> cars) {
this.cars = cars;
}
public List<String> getAnimals() {
return animals;
}
public void setAnimals(List<String> animals) {
this.animals = animals;
}
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 getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
test输出:
@Test
public void test07() {
ApplicationContext c = new ClassPathXmlApplicationContext("beans2.xml");
//从spring容器获取userService对象
User user = (User) c.getBean("user");
System.out.println(user);
}
//输出:
//User{name='小王', age=16, gender='男', animals=[小狗, 小猪, 小猫], cars=[自行车, 山地车, 三轮车], infos={1=周一, 2=周三}, prop={name=jdbc.username.root, driver=jdbc.driver}}
@compinent
import com.hetl.day02.pojo.User;
public interface UserService {
public void add(User user);
}
import com.hetl.day02.pojo.User;
import com.hetl.day02.service.UserService;
import org.springframework.stereotype.Component;
@Component()
public class UserServiceImpl implements UserService {
public void add(User user) {
System.out.println("add user:"+user);
}
}
<context:annotation-config/>
<context:component-scan base-package="com.hetl.day02.service">context:component-scan>
beans>
@Test
public void test08() {
ApplicationContext c = new ClassPathXmlApplicationContext("beans2.xml");
ApplicationContext c1 = new ClassPathXmlApplicationContext("beans3.xml");
//从spring容器获取userService对象
User user = (User) c.getBean("user");
//如果@component没有配置id,通过类型获取
UserService userService = (UserServiceImpl) c1.getBean(UserServiceImpl.class);
//配置id 通过id获取
UserService userService = (UserServiceImpl) c1.getBean("userService");
System.out.println(user);
userService.add(user);
}
//User{name='小王', age=16, gender='男', animals=[小狗, 小猪, 小猫], cars=[自行车, 山地车, 三轮车], infos={1=周一, 2=周三}, prop={name=jdbc.username.root, driver=jdbc.driver}}
//add user:User{name='小王', age=16, gender='男', animals=[小狗, 小猪, 小猫], cars=[自行车, 山地车, 三轮车], infos={1=周一, 2=周三}, prop={name=jdbc.username.root, driver=jdbc.driver}}