目录

​base​

​code​

​效果​


base

​Spring系列:IOC依赖查找(根据类型查找)实例​

code

package com.test.anonation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface VIP {
}
package com.test.pojo;

import com.test.anonation.VIP;
import lombok.Data;

@Data
@VIP
public class VIPUser extends User {
private int age ;

@Override
public String toString() {
return "VIPUser{" +
"age=" + age +
"} " + super.toString();
}
}
package com.test;

import com.test.anonation.VIP;
import com.test.pojo.User;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.Map;

public class Demo02101 {
public static void main(String[] args) {

/**根据名称查找
* 实时查找
*/
BeanFactory beanFactory = new ClassPathXmlApplicationContext("classpath:/META-INF/content.xml") ;
User user = (User) beanFactory.getBean("user");
System.out.println("实时查找:"+user.toString());

/**根据名称查找
* 延迟查找
*/
ObjectFactory<User> objectFactory = (ObjectFactory<User>) beanFactory.getBean("objectFactory");
user = objectFactory.getObject() ;
System.out.println("延迟查找:"+ user.toString());

/**根据类型查找
* 实时查找
*/
user = (User) beanFactory.getBean(User.class) ;
System.out.println("实时查找:"+user.toString());

/**根据类型查找
* 延迟查找
*/
if(beanFactory instanceof ListableBeanFactory) {
ListableBeanFactory listableBeanFactory = (ListableBeanFactory) beanFactory;
Map<String,User> users = listableBeanFactory.getBeansOfType(User.class);
System.out.println("延迟查找:"+ users.toString());
}

/**根据注解查找
* 延迟查找
*/
if(beanFactory instanceof ListableBeanFactory) {
ListableBeanFactory listableBeanFactory = (ListableBeanFactory) beanFactory;
Map<String,User> users = (Map) listableBeanFactory.getBeansWithAnnotation(VIP.class);
System.out.println("注解查找:"+ users.toString());
}

}
}


<?xml version="1.0" encoding="UTF-8"?>
<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.test.pojo.User">
<property name="id" value="1"/>
<property name="name" value="张明"/>
</bean>
<!--延迟查找-->
<bean id="objectFactory" class="org.springframework.beans.factory.config.ObjectFactoryCreatingFactoryBean" >
<property name="targetBeanName" value="user" />
</bean>

<!--注解查找-->
<bean id="vipUser" class="com.test.pojo.VIPUser" parent="user" primary="true">
<property name="age" value="11" />
</bean>
</beans>


效果

Spring系列:IOC依赖查找(根据注解查找)实例_xml