Spring(二)

1.构造器注入
DemoA.java

public class DemoA {
    private Integer id;
    private String name;
    private String[] array;
    private List<String> list;
    private Set<String> set;
    private Map<String,String> map;

    public DemoA(){

    }

    public DemoA(Integer id, String name, String[] array, List<String> list, Set<String> set, Map<String, String> map) {
        this.id = id;
        this.name = name;
        this.array = array;
        this.list = list;
        this.set = set;
        this.map = map;
    }

    @Override
    public String toString() {
        return "DemoA{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", array=" + Arrays.toString(array) +
                ", list=" + list +
                ", set=" + set +
                ", map=" + map +
                '}';
    }
}

applicationContext2.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: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">
    <!--启动注解操作,可以省略,Spring自动加载-->
    <context:annotation-config/>
    <!--对pro1106包进行注解扫描,对多个包扫描用,隔开-->
    <context:component-scan base-package="pro1106"/>

    <!--<bean id="demoA" class="pro1106.DemoA">
        <constructor-arg name="id" value="1"/>
        <constructor-arg index="1" value="张三"/>
        <constructor-arg name="array">
            <array>
                <value>123</value>
                <value>123</value>
            </array>
        </constructor-arg>
        <constructor-arg name="list">
            <list>
                <value>222</value>
                <value>222</value>
            </list>
        </constructor-arg>
        <constructor-arg name="set">
            <set>
                <value>666</value>
                <value>777</value>
            </set>
        </constructor-arg>
        <constructor-arg>
            <map>
                <entry key="1" value="a"/>
                <entry key="2" value="b"/>
            </map>
        </constructor-arg>
    </bean>-->
    <!--scope:作用域 有两个取值:singleton单例模式 prototype多例模式
        lazy-init:懒加载,default默认为false 勤汉|饿汉:直接就给你把对象创建好 懒汉:true,等你getBean时,在创建对象
        depends-on适用于表面上看起来两个bean之间没有使用属性之类的强连接的bean,但是两个bean又确实存在前后依赖关系的情况,使用了depends-on的时候,依赖他人的bean是先于被依赖bean销毁的
    -->
    <!--<bean id="" class="" depends-on="" init-method="" destroy-method="" scope="" lazy-init="">

    </bean>-->
</beans>

TestDemoA.java

public class TestDemoA {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext2.xml");
        DemoA demoA = applicationContext.getBean("demoA",DemoA.class);
        System.out.println(demoA);
    }
}

DemoB.java

//这四个都是产生对象
//@Component("db")//其他的
//@Repository("aaaa")//dao层 实体操作层
//@Service("sd")//Web 业务层
//@Controller//Spring MVC/Servelt 控制层
//小括号写名字了,代表是对象名;
//没写,默认为类名第一个首字母小写的名字

@Component
public class DemoB {
    @Value("1")
    private Integer id;
    /*
    上面两个注解等同于:
        <bean id="demoB">
            <property name="id" value=1/>
        </bean>
     */
   public DemoB(){
       System.out.println("DemoB!");
   }
}

TestDemoB.java


public class TestDemoB {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext2.xml");
        Object b = applicationContext.getBean("demoB");
        System.out.println(b);
    }
}

DemoC.java

@Controller
public class DemoC {
    @Value("admin")//赋值
    private String name;
    @Autowired //自动匹配 默认是按照类型装配注入的
    private DemoB demoB;

    public DemoC(){

    }

    @Override
    public String toString() {
        return "DemoC{" +
                "name='" + name + '\'' +
                ", demoB=" + demoB +
                '}';
    }
}

TestDemoC.java

public class TestDemoC {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext2.xml");
        DemoC demoC = applicationContext.getBean("demoC",DemoC.class);
        System.out.println(demoC);
    }
}

DemoD.java

@Service("ssss")
public class DemoD {
    @Autowired //byType
    private DemoB demoB;
    @Resource //先byName 若没有 则byType
    private DemoC demoC;

    @Override
    public String toString() {
        return "DemoD{" +
                "demoB=" + demoB +
                ", demoC=" + demoC +
                '}';
    }
}

TestDemoD.java

public class TestDemoD {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext2.xml");
        Object o = applicationContext.getBean("ssss",DemoD.class);
        System.out.println(o);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值