Spring课程 Spring入门篇 4-8 Spring bean装配之基于java的容器注解说明--基于泛型的自动装配

1    解析

1.1  什么是泛型?

1.2  泛型有什么作用?

2    代码演练

2.1  泛型应用

1    解析

1.1  什么是泛型?

1.2  泛型有什么作用?

2    代码演练

2.1  泛型应用

实体类:

package com.imooc.beanannotation.javabased;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AnimalConfig {
    
    @Autowired
    private Animal<String> dog;
    
    @Autowired
    private Animal<Integer> cat;

    
    @Bean
    public Dog dog() {
        return new Dog();
    }
    
    @Bean
    public Cat cat() {
        return new Cat();
    }
    
    @Bean(name="testAnimal")
    public Animal testAnimal(){
        System.out.println("dog.class is "+dog.getClass().getName());
        System.out.println("cat.class is "+cat.getClass().getName());
        return new Dog();
    }
    
}

测试类:

package com.imooc.test.beanannotation;

import org.junit.Test;

import com.imooc.beanannotation.javabased.Animal;
import com.imooc.beanannotation.javabased.Dog;
import com.imooc.beanannotation.javabased.MyDriverManager;
import com.imooc.beanannotation.javabased.StringStore;
import com.imooc.test.base.UnitTestBase;

public class TestJavaBased extends UnitTestBase{
    
    public TestJavaBased(){
        super("classpath*:spring-beanannotation.xml");
    }
    
    @Test
    public void testStoreConfig(){
        System.out.println(super.getbean("store").getClass().getName());
    }
    
    @Test
    public void testMyDriverStore(){
        MyDriverManager myDriverStore =super.getbean("myDriverStore");
        System.out.println(myDriverStore.getClass().getName());
    }

    @Test
    public void testScope(){
        StringStore sStore1 = super.getbean("getStringStore");
        System.out.println(sStore1.hashCode());
        StringStore sStore2 = super.getbean("getStringStore");
        System.out.println(sStore2.hashCode());
    }
    
    
    @Test
    public void testG(){
        Animal animal =super.getbean("testAnimal");
    }

}

dao:

package com.imooc.beanannotation.javabased;

public interface Animal<T> {

}

impl1:

package com.imooc.beanannotation.javabased;

public class Cat implements Animal<Integer> {

}

impl2:

package com.imooc.beanannotation.javabased;

public class Dog implements Animal<String> {

}

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">

<context:component-scan base-package="com.imooc.beanannotation"></context:component-scan>

</beans>

打印结果:

四月 01, 2019 9:46:35 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@49ab1c60: startup date [Mon Apr 01 21:46:35 CST 2019]; root of context hierarchy
四月 01, 2019 9:46:36 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from URL [file:/F:/xiangmu3/Xin/FuQiang/Spring/ddwei-dao/target/classes/spring-beanannotation.xml]
四月 01, 2019 9:46:36 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [config.xml]
dog.class is com.imooc.beanannotation.javabased.Dog
cat.class is com.imooc.beanannotation.javabased.Cat
四月 01, 2019 9:46:37 下午 org.springframework.context.support.ClassPathXmlApplicationContext doClose
信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@49ab1c60: startup date [Mon Apr 01 21:46:35 CST 2019]; root of context hierarchy

猜你喜欢

转载自www.cnblogs.com/1446358788-qq/p/10646525.html