user.java
package com.pactera.springBean;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
@Component("user")//对象user加入IOC容器,id为user
@Lazy(true)//一旦指定懒加载,注解value默认时true
public class User {
public User(){
System.out.println("创建 user ");
}
private String name="liuqi";
private int age=18;
@Autowired //根据类型去容器中查找,如果容器中有多个同类型的对象,会抛出异常 。@Resource有两个属性name ,type
//1指定name和type会根据名称和类型去找唯一的对象2.指定name会去根据id查找3.指定type会根据类型查找
//4.都不指定会先根据名称查找,没找到再根据类型查找,当有多个同类型时会抛出异常
private String address;
public void setName(String name) {
this.name = name;
}
@PostConstruct //初始化方法
public void initUser(){
System.out.println("init user");
}
@PreDestroy //销毁容器对象的时候自动调用
public void destoryUser(){
System.out.println("destory user");
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", address=" + address
+ "]";
}
}
applicationContext.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"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<bean id="address" class="java.lang.String">
<constructor-arg value="上海"></constructor-arg>
</bean>
<!-- <bean id="address2" class="java.lang.String">
<constructor-arg value="上海"></constructor-arg>
</bean> -->
<!-- 扫描包,将配有指定注解的类注入容器 -->
<context:component-scan base-package="com.pactera"></context:component-scan>
</beans>
测试
package com.pactera.springBeanTest;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.pactera.springBean.User;
public class TestSpringBean {
@Test
public void testIOC(){
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = ac.getBean("user", User.class);
System.out.println(user);
ac.destroy();
}
}