创建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. cmd关闭端口占用

    netstat -nao |findStr "8080" taskkill /pid 15406  /f

  2. 初步测试VS2017+Win10IoT,基于World Map of Makers

    测试World Map of Makers Demo,创建一个简单的internet连接应用程序来查询web API的状态(目测是一个延时时间),并使用该信息切换LED. 官方仓库的Solution是 ...

  3. 八款优秀Linux浏览器推荐

    #1.Firefox:互联网革命的新典范   众所周知,Firefox最大的优点就是拥有数以千计的插件,能够使得用户个性化自己的浏览器.与此同时,Firefox还是一款时尚.快捷.创新.高效的浏览器, ...

  4. 微信小程序基础知识笔记

    微信小程序笔记 文件构成 全局文件 app.json 小程序全局配置文件,必要,自动生成 app.js 小程序入口JS文件,一般只需申明全局变量.处理生命周期以及版本升级即可,必要 app.wxss ...

  5. JS_DOM操作之绑定事件

    1 - 静态绑定:直接把事件写在标签元素中 <div id="div" onclick="foo(this)">click</div> ...

  6. Jenkins(4)- 在centos7.x下完全卸载Jenkins

    如果想从头学起Jenkins的话,可以看看这一系列的文章哦 https://www.cnblogs.com/poloyy/category/1645399.html 先关闭tomcat ./shutd ...

  7. FastReport合并多份报表为一份预览打印

    效果 比较简单,直接贴代码 //打印第一份报表 procedure TForm1.Button2Click(Sender: TObject); begin frxReport1.LoadFromFil ...

  8. Servlet体系结构

    一.使用HttpServlet 其中,HttpServlet在重写的service()方法中对http请求的共7中提交方式进行了判断,所以只要我们只要重写对应的请求方式处理逻辑方法 doGet()和d ...

  9. AI学习1

    什么是AI: 功能介绍:是一种应用于出版.多媒体和在线图像的工业标准矢量插画的软件,是一款非常好的矢量图形处理工具应用:标志设计.字体设计.印刷出版.海报书籍排版.专业插画.多媒体图像处理和互联网页面 ...

  10. 逐条更新数据 sql

    declare @tid int        declare @fid int declare @i int declare @j int set @j=(select count(*) from ...