spring 建立Bean最全實現方法
阿新 • • 發佈:2021-10-09
建立bean方式,spring建立bean的方式包含:自動注入方式和人工注入方式。分別為:1)xml 配置化方式 2)@bean註解注入方式3)@Component方式 4)介面注入方式 5)import 匯入方式。
廢話不多說,上程式碼,
第一種:xml
1、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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="hello" class="org.springframework.northeasttycoon.beans.Hello"> <property name="displayName" value="this is display!"/> </bean> </beans>
2、hello實體類
/** * @author :java.zhao * @date :2018-09-29 10:33 */ public class Hello { public String getDisplayName() { return displayName; } public void setDisplayName(String displayName) { this.displayName = displayName; } private String displayName; publicvoid sayHello() { System.out.println("dispalyname values is:"+this.displayName); } }
3、啟動類
/** * @author :java.zhao * @description:xml 方式 * @date :2018-09-29 10:10 */ public class TestHelloService { public static void main(String[] args) { // 載入spring容器 ApplicationContext ac1 = newClassPathXmlApplicationContext("classpath:beanfactory.xml"); Hello hello = (Hello)ac1.getBean("hello"); hello.sayHello(); } }
第二種:@bean註解注入方式
1、配置類
/** * @author :java.zhao * @date :2018-10-09 11:10 */ public class AppConfig02 { // 第三種 定義bean @Bean public Fox fox(){ return new Fox(); } }
2、fox 實體類
/** * @author :java.zhao * @date :2018-10-04 4:43 */ public class Fox { public Fox() { System.out.println("new Fox()"); } }
3、測試類
/** * @author :java.zhao * @date :2018-10-09 11:09 */ public class ioc02 { @Test public void test01(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig02.class); System.out.println("create fox bean:"+ac.getBean("fox")); } }
第三種:@Component 註解方式
1、Fox03類
/** * @author :java.zhao * @date :2018-10-04 4:43 */ @Component public class Fox03 { public Fox03() { System.out.println("new Fox()"); } }
2、配置類
/** * @author :java.zhao * @date :2018-10-09 11:10 */ @ComponentScan("org.springframework.beandefinition01.bean") public class AppConfig03 { }
3、測試類
/** * @author :tycoon * @date :2018-10-09 11:15 */ public class ioc03 { @Test public void test01(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig03.class); System.out.println("create fox bean:"+ac.getBean("fox03")); } }
第四種:介面注入方式
1、Fox04 實體類
/** * @author :java.zhao * @date :2018-10-04 4:43 */ public class Fox04 { public Fox04() { System.out.println("new Fox04()"); } }
2、測試類
/** * @author :java.zhao * @date :2018-10-09 11:15 */ public class ioc04 { @Test public void test01(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(); ac.refresh(); DefaultListableBeanFactory beanFactory = ac.getDefaultListableBeanFactory(); AbstractBeanDefinition beanDefinition1 = BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition(); beanDefinition1.setBeanClass(Fox04.class); beanFactory.registerBeanDefinition("fox04", beanDefinition1); System.out.println("create fox04 bean:"+ac.getBean("fox04")); } }
第五種: 實現ImportBeanDefinitionRegistrar 介面
1、實現ImportBeanDefinitionRegistrar 介面類。既:Fox05ImportBeanDefinitionRegistrar
/** * @author :java.zhao * @date :2018-10-04 6:06 */ public class Fox05ImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar { @Override public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { BeanDefinition beanDefinition = new RootBeanDefinition(Fox05.class); registry.registerBeanDefinition("fox05",beanDefinition); } }
2、fox05實體類
/** * @author :java.zhao * @date :2018-10-04 6:07 */ public class Fox05 { public Fox05() { System.out.println("Fox05 create!"); } }
3、配置類
/** * @author :tycoon * @description:TODO * @date :2021-10-04 4:30 */ @Import(Fox05ImportBeanDefinitionRegistrar.class) public class AppConfig05 { }
4、測試類
/** * @author :java.zhao * @date :2018-10-09 11:15 */ public class ioc05 { @Test public void test01(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig05.class); System.out.println("create fox05 bean:"+ac.getBean("fox05")); } }