@Resource和@Autowired

来源:互联网 发布:运动控制卡编程 编辑:程序博客网 时间:2024/06/10 09:13

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默认时truepublic 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();    }}
0 0
原创粉丝点击