Spring学习十一----------Bean的配置之基于Java的容器注解@Bean
© 版权声明:本文为博主原创文章,转载请注明出处
@Bean
-@Bean标识一个用于配置和初始化一个由SpringIOC容器管理的新对象的方法,类似于XML配置文件的<bean/>
-可以在Spring的@Component注解的类中使用@Bean注解任何方法(仅仅是可以)
-在上一点中,通过使用的是@Configuration
实例
1.项目结构
2.pom.xml
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.springbean</groupId>
- <artifactId>Spring-JavaBean</artifactId>
- <packaging>war</packaging>
- <version>0.0.1-SNAPSHOT</version>
- <name>Spring-JavaBean Maven Webapp</name>
- <url>http://maven.apache.org</url>
- <properties>
- <spring.version>4.3.8.RELEASE</spring.version>
- </properties>
- <dependencies>
- <!-- junit依赖 -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- <scope>test</scope>
- </dependency>
- <!-- spring核心依赖 -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${spring.version}</version>
- </dependency>
- </dependencies>
- <build>
- <finalName>Spring-JavaBean</finalName>
- </build>
- </project>
3.spring-javabean.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"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd">
- <context:component-scan base-package="org.spring.javabean"/>
- </beans>
4.Store.java
- package org.spring.javabean;
- public interface Store {
- }
5.StringStore.java
- package org.spring.javabean;
- public class StringStore implements Store {
- public void init() {
- System.out.println("执行了init方法");
- }
- public void destroy() {
- System.out.println("执行了destroy方法");
- }
- }
6.StoreConfig.java
- package org.spring.javabean;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- @Configuration
- public class StoreConfig {
- @Bean(name="stringStore", initMethod="init", destroyMethod="destroy")
- public Store stringStore() {
- return new StringStore();
- }
- }
7.TestBase.java
- package org.spring.javabean.test;
- import org.junit.After;
- import org.junit.Before;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import org.springframework.util.StringUtils;
- public class TestBase {
- private ClassPathXmlApplicationContext context;
- private String springXmlPath;
- /**
- * 无参构造器
- */
- public TestBase() {
- }
- /**
- * 含参构造器,初始化spring配置文件路径
- *
- * @param springXmlPath
- * spring配置文件路径
- */
- public TestBase(String springXmlPath) {
- this.springXmlPath = springXmlPath;
- }
- /**
- * 初始化加载spring配置文件到IOC容器中
- */
- @Before
- public void before() {
- if(StringUtils.isEmpty(springXmlPath)){
- springXmlPath = "classpath:spring-*.xml";
- }
- context = new ClassPathXmlApplicationContext(springXmlPath.split("[,\\s]+"));
- context.start();
- }
- /**
- * 销毁IOC容器
- */
- @After
- public void after() {
- if(context != null){
- context.destroy();
- }
- }
- /**
- * 通过bean ID获取bean对象
- *
- * @param beanId
- * bean ID
- * @return
- */
- public Object getBean(String beanId) {
- return context.getBean(beanId);
- }
- }
8.TestSpringJavaBean.java
- package org.spring.javabean.test;
- import org.junit.Test;
- import org.spring.javabean.Store;
- public class TestSpringJavaBean extends TestBase {
- public TestSpringJavaBean() {
- super("classpath:spring-javabean.xml");
- }
- @Test
- public void testJavaBean() {
- Store store = (Store) super.getBean("stringStore");
- System.out.println(store.getClass().getName());
- }
- }
9.效果预览
参考:http://www.imooc.com/video/4033
Spring学习十一----------Bean的配置之基于Java的容器注解@Bean的更多相关文章
- Spring @Bean注解 (基于java的容器注解)
基于java的容器注解,意思就是使用Java代码以及一些注解,就可以取代spring 的 xml配置文件. 1-@Configuration & @Bean的配合 @Configuration ...
- Spring课程 Spring入门篇 4-5 Spring bean装配之基于java的容器注解说明--@Bean
1 解析 2.1 @bean注解定义 2.2 @bean注解的使用 2 代码演练 2.1 @bean的应用不带name 2.2 @bean的应用带name 2.3 @bean注解调用initMet ...
- 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的单例和多例的 ...
- 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 这两个注解应用在 ...
- Spring课程 Spring入门篇 4-8 Spring bean装配之基于java的容器注解说明--基于泛型的自动装配
1 解析 1.1 什么是泛型? 1.2 泛型有什么作用? 1.3 泛型装配样式? 2 代码演练 2.1 泛型应用 1 解析 1.1 什么是泛型? Java泛型设计原则:只要在编译时期没有出现警告,那么 ...
- SpringMVC常用配置-Controller中的各种配置(基于Java API和注解)
- Spring核心技术(十一)——基于Java的容器配置(一)
基本概念: @Bean和@Configuration Spring中新的基于Java的配置的核心就是支持@Configuration注解的类以及@Bean注解的方法. @Bean注解用来表示一个方法会 ...
- 从头认识Spring-2.4 基于java的标准注解装配-@Inject(2)-通过set方法或者其它方法注入
这一章节我们来讨论一下基于java的标准注解装配标签@Inject是如何通过通过set方法或者其它方法注入? 在使用@Inject标签之前.我们须要在pom文件中面增加以下的代码: <depen ...
- 从头认识Spring-2.4 基于java的标准注解装配-@Inject-限定器@Named
这一章节我们来讨论一下基于java的标准注解装配标签@Inject的限定器@Named. 1.domain 蛋糕类: package com.raylee.my_new_spring.my_new_s ...
随机推荐
- 星际转移(cogs 736)
«问题描述: 由于人类对自然资源的消耗,人们意识到大约在2300 年之后,地球就不能再居住了.于是在月球上建立了新的绿地,以便在需要时移民.令人意想不到的是,2177 年冬由于未知的原因,地球环境发生 ...
- [CODEVS1205]单词反转
给出一个英语句子,希望你把句子里的单词顺序都翻转过来 这个题算是第二次做了……第二次用的C++然而还是写不出来 思路1:用一个数组把读过去的单词存起来,再逆序输出即可 思路2:读入句子后,先在句子开头 ...
- xCode控制台的使用-应用闪退原因跟踪
xCode控制台的使用-应用闪退原因跟踪 今天遇到这个一个问题,使用xCode version = 5.0 编译一个程序,刷到IOS7设备后,应用运行正常,但是刷新到IOS<7,打开饮用后就会出 ...
- 只能运行一个程序,禁止运行多个相同的程序 C#
原文发布时间为:2009-04-06 -- 来源于本人的百度文章 [由搬家工具导入] Program.cs 里面改成如下: static void Main() { ...
- 【DirectX SDK Extra】提示缺少Qedit.h问题 (转)
原文转自 http://blog.csdn.net/joeblackzqq/article/details/10944005 DirectX 9.0 SDK 开发包以及扩展包下载(February 2 ...
- 学习good taste代码
Linux 的创始人,在采访中提及了关于代码的 “good taste”.Linus Torvalds 展示了一一些代码: void remove_list_entry(entry){ prev = ...
- MySql视图笔记(转载)
1. 视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚拟存在的表.视图就像一个窗口(数据展示的窗口),通过这个窗口,可以看到系统专门提供的数据(也可以查看到数据表的全部数据),使 ...
- 网络编程socket-SocketServer-FTP
16章 网络编程?应该是讲网络之间如何编程来进行通信的章节 16.1.1 客户端/服务器架构?客户端请求访问,服务器端监听请求,处理请求,进行相应的模式16.1.2 客户端/服务器编程?服务器端:创建 ...
- 长安大学第四届“迎新杯”程序设计竞赛 H 圣诞节糖果【二分】
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 131072K,其他语言262144K64bit IO Format: %lld 题目描述 圣诞节临近,彩虹岛的黑心商人
- SpringBoot优雅的全局异常处理
前言 本篇文章主要介绍的是SpringBoot项目进行全局异常的处理. SpringBoot全局异常准备 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码. 开发准备 环境要求 JD ...