课程链接:

1    解析

1.1  @bean注解定义

1.2  @bean注解的使用

2    代码演练

2.1  @bean的应用不带name

2.2  @bean的应用带name 

 2.3  @bean注解调用initMethod和destroyMethod

1    解析

1.1  @bean注解定义

@bean标识一个用于配置和初始化一个由springIOC容器管理的新对象的方法(生成ioc容器的bean实例),类似于xml配置的</bean>

1.2  @bean注解和@Configuration的使用

a  通常注解@bean和@Configuration使用

b  @bean(name="",initMethod="",destroyMethod="")(详细使用见代码演练部分)

c   @Configuration 该类创建各种Bean交付IoC容器(Bean类代码为纯净JavaBean)

2    代码演练

2.1  @bean的应用不带name

实体类:

  1. package com.imooc.beanannotation.javabased;
  2.  
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5.  
  6. @Configuration
  7. public class StoreConfig {
  8.  
  9. @Bean
  10. public Store getStringStore(){
  11. return new StringStore();
  12. }
  13.  
  14. }

测试类:

  1. package com.imooc.test.beanannotation;
  2.  
  3. import org.junit.Test;
  4.  
  5. import com.imooc.test.base.UnitTestBase;
  6.  
  7. public class TestJavaBased extends UnitTestBase{
  8.  
  9. public TestJavaBased(){
  10. super("classpath*:spring-beanannotation.xml");
  11. }
  12.  
  13. @Test
  14. public void testStoreConfig(){
  15. System.out.println(super.getbean("getStringStore").getClass().getName());
  16.  
  17. }
  18.  
  19. }

xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context.xsd">
  9.  
  10. <context:component-scan base-package="com.imooc.beanannotation"/>
  11.  
  12. </beans>

impl类:

  1. package com.imooc.beanannotation.javabased;
  2.  
  3. public class StringStore implements Store {
  4.  
  5. }

dao类:

  1. package com.imooc.beanannotation.javabased;
  2.  
  3. public interface Store {
  4.  
  5. }

打印结果:

  1. 三月 25, 2019 6:44:28 上午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
  2. 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5a62a404: startup date [Mon Mar 25 06:44:28 CST 2019]; root of context hierarchy
  3. 三月 25, 2019 6:44:28 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
  4. 信息: Loading XML bean definitions from URL [file:/F:/xiangmu3/Xin/FuQiang/Spring/ddwei-dao/target/classes/spring-beanannotation.xml]
  5. com.imooc.beanannotation.javabased.StringStore
  6. 三月 25, 2019 6:44:29 上午 org.springframework.context.support.ClassPathXmlApplicationContext doClose
  7. 信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@5a62a404: startup date [Mon Mar 25 06:44:28 CST 2019]; root of context hierarchy

2.2  @bean的应用带name

实体类:

  1. package com.imooc.beanannotation.javabased;
  2.  
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5.  
  6. @Configuration
  7. public class StoreConfig {
  8.  
  9. @Bean(name="store")
  10. public Store getStringStore(){
  11. return new StringStore();
  12. }
  13.  
  14. }

测试类:

  1. package com.imooc.test.beanannotation;
  2.  
  3. import org.junit.Test;
  4.  
  5. import com.imooc.test.base.UnitTestBase;
  6.  
  7. public class TestJavaBased extends UnitTestBase{
  8.  
  9. public TestJavaBased(){
  10. super("classpath*:spring-beanannotation.xml");
  11. }
  12.  
  13. @Test
  14. public void testStoreConfig(){
  15. System.out.println(super.getbean("store").getClass().getName());
  16.  
  17. }
  18.  
  19. }

打印结果:

  1. 三月 25, 2019 6:57:00 上午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
  2. 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2121052: startup date [Mon Mar 25 06:57:00 CST 2019]; root of context hierarchy
  3. 三月 25, 2019 6:57:00 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
  4. 信息: Loading XML bean definitions from URL [file:/F:/xiangmu3/Xin/FuQiang/Spring/ddwei-dao/target/classes/spring-beanannotation.xml]
  5. com.imooc.beanannotation.javabased.StringStore
  6. 三月 25, 2019 6:57:01 上午 org.springframework.context.support.ClassPathXmlApplicationContext doClose
  7. 信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@2121052: startup date [Mon Mar 25 06:57:00 CST 2019]; root of context hierarchy

2.3  bean注解调用initMethod和destroyMethod

实体类:

  1. package com.imooc.beanannotation.javabased;
  2.  
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5.  
  6. @Configuration
  7. public class StoreConfig {
  8.  
  9. @Bean(name="store",initMethod="init",destroyMethod="destroy")
  10. public Store getStringStore(){
  11. return new StringStore();
  12. }
  13.  
  14. }

impl类:

  1. package com.imooc.beanannotation.javabased;
  2.  
  3. public class StringStore implements Store {
  4.  
  5. public void init(){
  6. System.out.println("This is init Method");
  7. }
  8. public void destroy(){
  9. System.out.println("This is destroy Method");
  10. }
  11.  
  12. }

打印结果:

  1. 三月 26, 2019 6:15:23 上午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
  2. 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5fa34e31: startup date [Tue Mar 26 06:15:23 CST 2019]; root of context hierarchy
  3. 三月 26, 2019 6:15:23 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
  4. 信息: Loading XML bean definitions from URL [file:/F:/xiangmu3/Xin/FuQiang/Spring/ddwei-dao/target/classes/spring-beanannotation.xml]
  5. This is init Method
  6. com.imooc.beanannotation.javabased.StringStore
  7. 三月 26, 2019 6:15:24 上午 org.springframework.context.support.ClassPathXmlApplicationContext doClose
  8. 信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@5fa34e31: startup date [Tue Mar 26 06:15:23 CST 2019]; root of context hierarchy
  9. This is destroy Method


Spring课程 Spring入门篇 4-5 Spring bean装配之基于java的容器注解说明--@Bean的更多相关文章

  1. Spring课程 Spring入门篇 4-8 Spring bean装配之基于java的容器注解说明--基于泛型的自动装配

    1 解析 1.1 什么是泛型? 1.2 泛型有什么作用? 1.3 泛型装配样式? 2 代码演练 2.1 泛型应用 1 解析 1.1 什么是泛型? Java泛型设计原则:只要在编译时期没有出现警告,那么 ...

  2. Spring课程 Spring入门篇 4-7 Spring bean装配之基于java的容器注解说明--@Scope 控制bean的单例和多例

    1 解析 1.1 bean的单例和多例的应用场景 1.2 单例多例的验证方式 1.3 @Scope注解单例多例应用 2 代码演练 2.1 @Scope代码应用 1 解析 1.1 bean的单例和多例的 ...

  3. Spring课程 Spring入门篇 4-6 Spring bean装配之基于java的容器注解说明--@ImportResource和@Value java与properties文件交互

    1 解析 1.1 这两个注解应用在什么地方 1.2 应用方式 1.3 xml方式实现取值 2 代码演练 2.1 @ImportResource和@Value代码演练 1 解析 1.1 这两个注解应用在 ...

  4. Spring @Bean注解 (基于java的容器注解)

    基于java的容器注解,意思就是使用Java代码以及一些注解,就可以取代spring 的 xml配置文件. 1-@Configuration & @Bean的配合 @Configuration ...

  5. Spring学习十一----------Bean的配置之基于Java的容器注解@Bean

    © 版权声明:本文为博主原创文章,转载请注明出处 @Bean -@Bean标识一个用于配置和初始化一个由SpringIOC容器管理的新对象的方法,类似于XML配置文件的<bean/> -可 ...

  6. Spring Boot -01- 快速入门篇(图文教程)

    Spring Boot -01- 快速入门篇(图文教程) 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到[慕课网]手机 app ...

  7. Spring实践系列-入门篇(一)

    本文主要介绍了在本地搭建并运行一个Spring应用,演示了Spring依赖注入的特性 1 环境搭建 1.1 Maven依赖 目前只用到依赖注入的功能,故以下三个包已满足使用. <properti ...

  8. 使用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...”. 原 ...

  9. Spring核心技术(十一)——基于Java的容器配置(一)

    基本概念: @Bean和@Configuration Spring中新的基于Java的配置的核心就是支持@Configuration注解的类以及@Bean注解的方法. @Bean注解用来表示一个方法会 ...

随机推荐

  1. 题解 CF950B 【Intercepted Message】

    题目链接 先吐槽一番:本宝宝好久没写过题解了...首先我们想一个贪心策咯.就是我们预处理出前缀和,然后一边扫过去,记录一个l1,l2和一个n1,n2.分别表示我们现在第一个数组切到l1,上一次切是在n ...

  2. dubbo源码分析--dubbo spi解析

    1. 什么叫SPI? 简单总结就是一种使用类名字符串来动态实例化java类的方式,也就是反射. 2. java SPI与Dubbo SPI有什么区别 (此图来自网上,我没有刻意去截图) 然后在这个文件 ...

  3. spark执行例子eclipse maven打包jar

    首先在eclipse Java EE中新建一个Maven project具体选项如下 点击Finish创建成功,接下来把默认的jdk1.5改成jdk1.8 然后编辑pom.xml加入spark-cor ...

  4. state-表单

    /*** 需求: 定义一个组件,可以将用户在输入框内输入的内容 进行实时显示** 分析:组件与用户交互过程中,存在状态的变化,即输入框的值** */var Input = React.createCl ...

  5. 使用octave符号运算求解不定积分、微分方程等(兼容matlab)

    1.求解1/(1+cos(x))^2的不定积分. 在和学生讨论一道物理竞赛题的时候,出现了这个函数的积分求解需求.查积分表也可写出答案.但是可以使用octave的符号运算工具箱来做. syms x; ...

  6. React应用程序设计过程中如何区分模块到底是state还是props?

    根据官方文档,满足以下任意条件的模块,就不是State,原文如下: 1.Is it passed in from a parent via props? If so, it probably isn’ ...

  7. POJ2248 Addition Chains 迭代加深

    不知蓝书的标程在说什么,,,,于是自己想了一下...发现自己的代码短的一批... 限制搜索深度+枚举时从大往小枚举,以更接近n+bool判重,避免重复搜索 #include<cstdio> ...

  8. wzoi(栈模拟)

    链接:https://ac.nowcoder.com/acm/contest/332/I 来源:牛客网 题目描述 bleaves 最近在 wzoi 上面做题. wzoi 的题目有两种,一种是 noip ...

  9. TensorFlow-多层感知机(MLP)

    TensorFlow训练神经网络的4个步骤: 1.定义算法公式,即训练神经网络的forward时的计算 2.定义损失函数和选择优化器来优化loss 3.训练步骤 4.对模型进行准确率评测 附Multi ...

  10. Android百分比布局方案

    百分比布局让其中的控件在指定高度,宽度,margin时使用屏幕宽高的百分比,不使用dp,px.这样一套布局可以适应多个屏幕,方便适配.如: app:layout_heightPercent=" ...