• spring 创建Bean最全实现方法


    创建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;
    
        public void 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 = new ClassPathXmlApplicationContext("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"));
        }
    }
  • 相关阅读:
    一般表的一般方法
    asp.net采集函数(采集、分析、替换、入库一体)
    在 Access 里使用查询建立 存储过程/视图, 并使用 ASP 执行
    制作Access代码生成器 研发中【资料整理】
    Asp.net中打造通用数据访问类(c#)[转]
    Ajax.Net程序教程.彭彭编写
    C# 类中 属性和方法写在一个类里 和 属性和方法 分开的区别感受!!
    自己在vs2003下写的findLabel[应用程序]
    [转]Response.Write后css失效问题的解决
    javascript结构图
  • 原文地址:https://www.cnblogs.com/northeastTycoon/p/spring_create_bean.html
Copyright © 2020-2023  润新知