day38 07-Spring框架Bean的时候方式
Spring是自动帮我们创建对象的,有几种创建Bean的方式呢?
构造方法实例化:(默认无参数)其实就是反射new Instance().
静态工厂实例化:
实例工厂实例化:
一般不会改变它实例化的方式。其他两种了解一下即可。
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- 别去schema,schema是文件,本地的文件,你得引那个头 -->
- <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">
- <!-- demo1快速入门================================================= -->
- <!-- 把接口和实现类在这个配置文件中配置,有了实现类的全路径之后到时候才能用工厂反射 -->
- <!-- 通过一个<bean>标签来设置类的信息,通过id属性为类起个标识. -->
- <!-- 接口,实现类,配置文件也都有了 -->
- <!-- 现在有一个工厂Spring为我们提供好了,其实就是解析这个XML文件 -->
- <!-- 这个工厂你自己写会不会写?你用dom4j找里面的bean标签,找到class的属性值,然后就可以Class.forName()反射生成类的实例.其实Spring
- 也是这么做的,只不过工厂由Spring提供好了
- -->
- <bean id="helloService" class="cn.itcast.spring3.demo1.HelloServiceImpl">
- <!-- 使用<property>标签注入属性
- value指的是普通值
- ref指的是对象
- -->
- <property name="info" value="传智播客"></property>
- </bean>
- <!-- demo1快速入门 -->
- <!-- demo2Bean的实例化 -->
- <!-- 默认情况下使用的就是无参数的构造方法. -->
- <bean id="bean1" class="cn.itcast.spring3.demo2.Bean1"></bean>
- <!-- 第二种使用静态工厂实例化 不能写class了,因为现在不是由Spring直接帮你创建对象了-->
- <bean id="bean2" class="cn.itcast.spring3.demo2.Bean2Factory" factory-method="getBean2"></bean>
- <!-- 第三种使用实例工厂实例化 -->
- <bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>
- <!-- 要先把Bean3Factory实例化 -->
- <bean id="bean3Factory" class="cn.itcast.spring3.demo2.Bean3Factory"></bean>
- </beans>
- package cn.itcast.spring3.demo2;
- /**
- * 使用无参数的构造方法实例化
- * @author zhongzh
- *
- */
- public class Bean1 {
- /*public Bean1(String name){//这里写了一个带参构造,那么无参构造就不执行了
- //有一个有参无参就没有了
- }*/
- public Bean1(){
- System.out.println("使用无参数的构造方法实例化Bean1方法.....");
- }
- }
- package cn.itcast.spring3.demo2;
- /**
- * 使用静态工厂的方式实例化
- * @author zhongzh
- *
- */
- public class Bean2 {
- }
- package cn.itcast.spring3.demo2;
- /**
- * 使用实例工厂实例化
- * @author zhongzh
- *
- */
- public class Bean3{
- //加载配置文件的时候就会加载这个类了,会帮你创建了
- }
- package cn.itcast.spring3.demo2;
- /**
- * Bean2的静态工厂
- * @author zhongzh
- *
- */
- public class Bean2Factory {
- public static Bean2 getBean2(){
- System.out.println("静态工厂的获得Bean2的方法....");
- return new Bean2();//什么是静态工厂?就是这里提供一个静态的方法来返回Bean2的实例
- }
- }
- package cn.itcast.spring3.demo2;
- /**
- * 使用实例工厂
- * @author zhongzh
- *
- */
- //实例工厂与静态工厂的唯一区别是它里面的方法是不是静态的
- public class Bean3Factory {
- public Bean3 getBean3(){
- System.out.println("Bean3实例工厂的getBean3方法.....");
- return new Bean3();
- }
- }
- package cn.itcast.spring3.demo2;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- /**
- * Bean的实例化的方式
- *
- * @author zhongzh
- *
- */
- public class SpringTest2 {
- @Test
- public void demo1(){
- //无参数的构造方法的实例化
- ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");//实例化工厂
- Bean1 bean1 = (Bean1) applicationContext.getBean("bean1");//通过配置文件里面配置的key获得bean1
- System.out.println(bean1);
- }
- @Test
- public void demo2(){
- //静态工厂的实例化
- ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");//实例化工厂
- Bean2 bean2 = (Bean2) applicationContext.getBean("bean2");//通过配置文件里面配置的key获得bean2
- System.out.println(bean2);
- }
- @Test
- //实例工厂实例化
- public void demo3(){
- //静态工厂的实例化
- ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");//实例化工厂
- Bean3 bean3 = (Bean3) applicationContext.getBean("bean3");//通过配置文件里面配置的key获得bean2
- System.out.println(bean3);
- }
- }
day38 07-Spring框架Bean的时候方式的更多相关文章
- 使用spring框架,用xml方式进行bean装配出现“The fully qualified name of the bean's class, except if it serves...”
使用spring框架,用xml方式进行bean装配出现“The fully qualified name of the bean's class, except if it serves...”. 原 ...
- Spring中bean的注入方式
首先,要学习Spring中的Bean的注入方式,就要先了解什么是依赖注入.依赖注入是指:让调用类对某一接口的实现类的实现类的依赖关系由第三方注入,以此来消除调用类对某一接口实现类的依赖. Spring ...
- Spring 中Bean的装配方式
最近又买了一本介绍SSM框架的书,是由黑马程序员编写的,书上讲的很好理解,边看边总结一下.主要总结一下bean的装配方式. Bean的装配可以理解为依赖系统注入,Bean的装配方式即Bean依赖注入的 ...
- 面试题: Spring 框架 Bean的生命周期
[Java面试五]Spring总结以及在面试中的一些问题. 1.谈谈你对spring IOC和DI的理解,它们有什么区别? IoC Inverse of Control 反转控制的概念,就是将原本 ...
- spring框架学习(四)——注解方式AOP
注解配置业务类 使用@Component("s") 注解ProductService 类 package com.how2java.service; import org.spri ...
- spring框架bean注入
今天学习了spring框架,刚刚入门简单的了解了spring并学习了bean的注入IOC:IOC(Inversion of Control,控制反转)不是什么技术,而是一种设计思想.它的目的是指导我们 ...
- Spring框架bean的配置(2):SpEL:引用 Bean、属性和方法。。。
将这些架包放入在工程目录下建立的lib文件夹里,并解压 commons-logging-1.1.1 spring-aop-4.0.0.RELEASE spring-beans-4.0.0.RELEAS ...
- String框架搭建的基本步骤,及从 IOC & DI 容器中获取 Bean(spring框架bean的配置)--有实现数据库连接池的链接
Spring框架的插件springsource-tool-suite-3.4.0.RELEASE-e4.3.1-updatesite(是一个压缩包)导入步骤: eclipse->help-> ...
- spring实例化bean三种方式
我看了这篇博文<https://www.cnblogs.com/zhanglei93/p/6221546.html>,以及自己实践总结了关于spring实例化bean对象的3种方式. 一. ...
- Spring之Bean的配置方式
在博客中为了演示容器Bean实例化时暴露出的几个接口,将UserBean配置在XML中,其实常见的Bean的配置有3种.1.基于xml配置Bean 2.使用注解定义Bean 3.基于java类提供Be ...
随机推荐
- natapp出现Invalid Host header
前端是vue 3.x 项目,需要更改vue的配置文件 vue.config.js,在module.exports中添加devServer:{disableHostCheck:true}
- WebService Exceptions
一. Exception in thread "main" java.lang.ExceptionInInitializerError at com.sun.xml.interna ...
- CF 1281B Azamon Web Services
原题链接:http://codeforces.com/problemset/problem/1281/B 题目大意: 给你两个字符串 s 和 c ,最多经过一次变换,使s的字典序小于c,输出变换后的s ...
- PAT甲级——A1097 Deduplication on a Linked List
Given a singly linked list L with integer keys, you are supposed to remove the nodes with duplicated ...
- [BZOJ2164]采矿【模拟+树链剖分+线段树】
Online Judge:Bzoj2164 Label:模拟,树链剖分,线段树 题目描述 浩浩荡荡的cg大军发现了一座矿产资源极其丰富的城市,他们打算在这座城市实施新的采矿战略.这个城市可以看成一棵有 ...
- Kafka在window上安装部署
1.准备工作 ①jdk 具体自行百度安装jdk,配置好 JAVA_HOME和path, 下载地址: http://www.oracle.com/technetwork/java/javase/ ...
- HZOI20190829模拟33题解
题面:https://www.cnblogs.com/Juve/articles/11436771.html A:春思 我们对a分解质因数,则$a=\prod\limits_p^{p|a}p^k$ 所 ...
- windows下bat批量处理启动exe
新建文本文档,start.dat start "" "D:\QQ\anzhaung\Bin\QQ.exe" 启动QQ cd ./当前文件夹下,../上一文件夹下 ...
- C动态分配内存
malloc分配内存时不初始化,calloc分配内存并进行初始化.
- 二、深入asyncio协程(任务对象,协程调用原理,协程并发)
由于才开始写博客,之前都是写笔记自己看,所以可能会存在表述不清,过于啰嗦等各种各样的问题,有什么疑问或者批评欢迎在评论区留言. 如果你初次接触协程,请先阅读上一篇文章初识asyncio协程对asy ...