创建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.ehai1beandefinition.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"));
}
}

spring 创建Bean最全实现方法的更多相关文章

  1. Spring 创建bean的模式

    在默认情况下,spring创建bean是单例模式 scope="singleton ",还有一种方式为多例模式[prototype]     scope          sing ...

  2. spring创建bean的三种方式

    spring创建bean的三种方式: 1通过构造方法创建bean(最常用) 1.1 spring默认会通过无参构造方法来创建bean,如果xml文件是这样配置,则实体类中必须要有无参构造方法,无参构造 ...

  3. spring创建bean模式singleton与prototype的区别

    spring 创建bean有单例模式(singleton)和原始模型模式(prototype)这两种模式. 在默认的情况下,Spring中创建的bean都是单例模式的(注意Spring的单例模式与Go ...

  4. Spring创建Bean的顺序

    一直对Spring创建bean的顺序很好奇,现在总算有时间写个代码测试一下.不想看过程的小伙伴可以直接看结论 目录结构: 其中:bean4.bean5包下的class没有注解@Component,测试 ...

  5. spring注入bean的三种方法

    在Spring的世界中, 我们通常会利用bean config file 或者 annotation注解方式来配置bean. 在第一种利用bean config file(spring xml)方式中 ...

  6. Spring中Bean的生命周期方法

    Bean的生命周期方法 src\dayday\Car.java package dayday;import com.sun.org.apache.xpath.internal.SourceTree;i ...

  7. Spring -- 配置bean的三种方法

    配置通过静态工厂方法创建的bean public class StaticBookFactory { //静态工厂方法: public static Book getBook(String bookN ...

  8. spring创建bean及数据注入

    通过spring的IoC可以实现由配置文件来创建类的对象,可以降低类鱼类之间的耦合, 通常我们都是在代码中控制对象的生成和属性注入,而使用IoC后,就可以将设计好的类交给IoC容器,让容器去控制对象的 ...

  9. Spring 创建Bean的6种方式

    前言 本文讲解了在Spring 应用中创建Bean的多种方式,包括自动创建,以及手动创建注入方式,实际开发中可以根据业务场景选择合适的方案. 方式1: 使用Spring XML方式配置,该方式用于在纯 ...

随机推荐

  1. 刷题-力扣-122. 买卖股票的最佳时机 II

    122. 买卖股票的最佳时机 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell ...

  2. Ubuntu 16.04LTS安装flashplayer

    转载自http://www.linuxdiyf.com/linux/20084.html 在安装Ubuntu 16.04LTS后,播放有视频的网页时,总提示你要安装缺失的插件,在 ubuntu 系统下 ...

  3. PC微信多开

    1.桌面上面新建一个  多开.txt . 2.将下面的内容拷贝进去 TASKKILL /F /IM wechat.exestart "" "E:\wechat\WeCha ...

  4. Asp.NetCore3.1 WebApi 获取配置json文件中的数据

    下面只是做一个简单的测试: 1:定义好appsetting.Json文件的配置信息如下: { "Logging": { "LogLevel": { " ...

  5. WAMP 2.5 无法访问局域网的解决方法

    打开Apache配置文件 httpd.conf  (该文件在wamp\bin\apache\apache2.4.9\conf) DocumentRoot "d:/wamp/www/" ...

  6. Django的form组件基本使用——简单校验

    from django.contrib import admin from django.urls import path from app01 import views urlpatterns = ...

  7. K8S最小硬件配置

  8. Pytest系列(12)- 测试结果生成HTML报告插件之pytest-html的详细使用

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 环境前提 Python3.6+ 安 ...

  9. 从零开始学习SQL SERVER(2)--- 基本操作及语句

    声明:仅为本人随笔及经验之谈,有错误敬请指出. # 后的文字为注释 Microsoft SQL Server Management Studio 中的SQL命令 添加数据库 1 CREATE DATA ...

  10. HDU 6170 FFF at Valentine(强联通缩点+拓扑排序)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6165 题意:给你一个无环,无重边的有向图,问你任意两点,是否存在路径使得其中一点能到达另一点 解析:强 ...