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.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最全实现方法的更多相关文章
- Spring 创建bean的模式
在默认情况下,spring创建bean是单例模式 scope="singleton ",还有一种方式为多例模式[prototype] scope sing ...
- spring创建bean的三种方式
spring创建bean的三种方式: 1通过构造方法创建bean(最常用) 1.1 spring默认会通过无参构造方法来创建bean,如果xml文件是这样配置,则实体类中必须要有无参构造方法,无参构造 ...
- spring创建bean模式singleton与prototype的区别
spring 创建bean有单例模式(singleton)和原始模型模式(prototype)这两种模式. 在默认的情况下,Spring中创建的bean都是单例模式的(注意Spring的单例模式与Go ...
- Spring创建Bean的顺序
一直对Spring创建bean的顺序很好奇,现在总算有时间写个代码测试一下.不想看过程的小伙伴可以直接看结论 目录结构: 其中:bean4.bean5包下的class没有注解@Component,测试 ...
- spring注入bean的三种方法
在Spring的世界中, 我们通常会利用bean config file 或者 annotation注解方式来配置bean. 在第一种利用bean config file(spring xml)方式中 ...
- Spring中Bean的生命周期方法
Bean的生命周期方法 src\dayday\Car.java package dayday;import com.sun.org.apache.xpath.internal.SourceTree;i ...
- Spring -- 配置bean的三种方法
配置通过静态工厂方法创建的bean public class StaticBookFactory { //静态工厂方法: public static Book getBook(String bookN ...
- spring创建bean及数据注入
通过spring的IoC可以实现由配置文件来创建类的对象,可以降低类鱼类之间的耦合, 通常我们都是在代码中控制对象的生成和属性注入,而使用IoC后,就可以将设计好的类交给IoC容器,让容器去控制对象的 ...
- Spring 创建Bean的6种方式
前言 本文讲解了在Spring 应用中创建Bean的多种方式,包括自动创建,以及手动创建注入方式,实际开发中可以根据业务场景选择合适的方案. 方式1: 使用Spring XML方式配置,该方式用于在纯 ...
随机推荐
- [SWMM]软件启动不了,出现 “ RPC服务器不可用 ” 错误
[问题]打开SWMM5.1软件时,初选"RPC服务器不可用"的错误 [解决]计算机管理--服务 设置Print Spooler服务状态为启动,并设置为自启动.
- PQGrid商业化的表格组件
官网地址https://paramquery.com/pro/grid 右侧导航条有目录哟,看着更方便 快速入门 表格构建 API简单介绍 主要研究功能介绍 快速入门 ParamQuery Grid ...
- Struts中整合的强大Ognl学习(一)
测试使用了一个JavaBean的User,User中的Address单独封装再形成了一个JavaBean: 为了测试静态方法和静态变量调用,写了一个Util方法: 因为测试Ognl功能过多所以直接使用 ...
- linux 常用命令(一)——查看硬盘空间-内存-线程的cpu负载-线程内存
系统参数检查: df -h [enter] 检查硬盘空间 TIP: 使用 man df 可查看该命令使用说明 ; q 退出. free检查内存使用情况: free [enter] TIP: 使用 ma ...
- Linux centos 安装 mysql 5.6
一.mysql下载 1.方式一(简单粗暴) 直接在linux 目录下wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.43-li ...
- Scan error on column index 1, name “created_at“: unsupported Scan, storing driver.Value type []uint8
使用gorm,出现以下报错 在连接数据库时加上: parseTime=True db, err = gorm.Open(utils.Db, fmt.Sprintf("%s:%s@(%s:%s ...
- QT学习日记篇-03-仿写一个智能家居界面
课程大纲: <1>让界面漂亮起来,仿写一个智能家居界面 ->第一:给QT工程添加图片 进入下一步: <注意路径和名称一定不能有中文> ...
- https(ssl) 免费证书
https://letsencrypt.org/getting-started/ https://certbot.eff.org/lets-encrypt/centosrhel7-nginx http ...
- vue 用driver 添加用户引导
npm 安装: npm install driver.js //用户引导 import Driver from 'driver.js' import 'driver.js/dist/driver.mi ...
- 各色Tarjan集合
#include<bits/stdc++.h> using namespace std; const int N=100000,M=200000; //所有Tarjan都要: // dfn ...