@Configuration与@Bean
- @Configuration==beans.xml
@Bean:
- 给容器中注册一个Bean;类型为返回值的类型,id默认是用方法名作为id。
- @Bean 等价于 <bean></bean>
- 可以给@Bean设置value来修改id,比如@Bean("personAlias")。
- 可以在@bean中指定初始化和销毁方法
@Bean(value = "beanLife",initMethod = "init", destroyMethod = "destroy") 等价于 <bean id="person" class="com.java.model.Person" init-method="init" destroy-method="destroy"></bean>
2,配置对比与验证
通常的xml配置方式如下,beans.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">
<!-- use-default-filters若想自定义过滤器生效,则必须将该值设为false-->
<!--<context:component-scan base-package="com.java" ></context:component-scan>-->
<!--注入bean-->
<beans>
<bean id="person" class="com.java.model.Person">
<property name="id" value="11111"></property>
<property name="name" value="vhsj"></property>
</bean>
</beans>
</beans>
采用@Configuration注入方式如下
@Configuration
public class BeanConfig {
//@Bean
@Bean("personAlias")
public Person person2(){
return new Person("2222","lisi");
}
}
测试代码:
public class BeanDependencyInjectionTest {
public static void main(String[] args) {
System.out.println("-----------------------------xml 方式注入-----------------------------------");
//xml 方式注入
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
Person person = (Person) applicationContext.getBean("person");
System.out.println("person---->"+person);
//获取所有注入Bean的名称
String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
for (String name : beanDefinitionNames) {
System.out.println(name);
}
System.out.println("-----------------------------annotation 注解方式注入-----------------------------------");
//annotation 注解方式注入
ApplicationContext applicationContext1 = new AnnotationConfigApplicationContext(BeanConfig.class);
Person person1 = applicationContext1.getBean(Person.class);
System.out.println("person1---->"+person1);
//获取所有注入Bean的名称
String[] beanDefinitionNames1 = applicationContext1.getBeanDefinitionNames();
for (String name : beanDefinitionNames1) {
System.out.println(name);
}
}
}
测试结果:
-----------------------------xml 方式注入-----------------------------------
person---->Person{id='11111', name='vhsj'}
person
-----------------------------annotation 注解方式注入-----------------------------------
person1---->Person{id='2222', name='lisi'}
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
beanConfig
personAlias
@Configuration与@Bean的更多相关文章
- @Configuration 和 @Bean
1. @Bean: 1.1 定义 从定义可以看出,@Bean只能用于注解方法和注解的定义. @Target({ElementType.METHOD, ElementType.ANNOTATION_TY ...
- Springboot@Configuration和@Bean详解
Springboot@Configuration和@Bean详解 一.@Configuration @Target({ElementType.TYPE}) @Retention(RetentionPo ...
- Spring的Java配置方式—@Configuration和@Bean实现Java配置
Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.@Configuration 和 @BeanSpring的Java配置方式是通过 @Configuration 和 @Be ...
- @Configuration与@Bean作用
Spring的Java配置方式是通过@Configuration和@Bean这两个注解来实现 @Configuration可以作用在任意类上,表示该类是一个配置类,其实就相当于一个xml配置文件. @ ...
- Spring @Configuration 和 @Bean 注解
@Configuration 和 @Bean 注解 带有 @Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源.@Bean 注解告诉 Spri ...
- @Configuration和@Bean的用法和理解
spring Boot提倡约定优于配置,如何将类的生命周期交给spring 1.第一种自己写的类,Controller,Service. 用@controller @service即可 2.第二种,集 ...
- @Configuration和@Bean
@Configuration可理解为用spring的时候xml里面的标签 @Bean可理解为用spring的时候xml里面的标签 Spring Boot不是spring的加强版,所以@Configur ...
- 0006SpringBoot中@Configuration与@Bean联合使用
需求:将某个普通类做为组件注册到容器中,可通过如下办法 1.定义HelloService类 package springboot_test.springboot_test.service; publi ...
- @Configuration结合@Bean实现对象的配置
@Configuration结合@Bean实现对象的配置 前提:最近项目中需要做支付接口,支付宝以及微信支付,本文并不介绍如何写支付接口,而是通过这个示例讲解配置应该怎么写,项目中使用的是Kotlin ...
随机推荐
- 附录2:CEL文件格式
一.版本3 描述 version 版本号,设为3 Cols 列数 Rows 行数 TotalX 和Cols一样 TotalY 和Rows一样 OffsetX 无用,设置为0 OffsetY 无用,设置 ...
- 漏洞:阿里云盾phpMyAdmin <=4.8.1 后台checkPageValidity函数缺陷可导致GETSHELL
阿里云盾提示phpMyAdmin <=4.8.1会出现漏洞有被SHELL风险,具体漏洞提醒: 标题 phpMyAdmin <=4.8.1 后台checkPageValidity函数缺陷可导 ...
- 解决postgresql数据库localhost可以连接,ip连接不了的问题
解决:windows环境下,postgresql数据库,localhost可以连接,ip地址连接不了. 解决办法: 1.打开postgresql安装目录下的配置文件 pg_hba.conf ...
- C# 过滤字典中的数据 并将过滤后的数据转成新的字典对象
Dictionary<string, object> dic = new Dictionary<string, object>(); dic.Add("); dic. ...
- jq无限极树结构
//群组树结构$(function () { var params= { "companyId":cmpId }; var loadUrl="/apiv2/classif ...
- 前端开发 | 尝试用Markdown写一下近几个月的总结
近期总结 回顾 半年前 半年前,接触了前端一年多(工作半年)的我了解的东西只有下面这些.因为在公司里的工作就是切静态页,捣鼓CMS. HTML (比较简洁的编写HTML) CSS/CSS3 (PC兼容 ...
- python将str类型的数据变成datetime时间类型数据
如下: import datetime date_str = '2019_05_09' date_date = datetime.date(*map(int, date_str.split('_')) ...
- 为了保护dll这么做吗?
生成dll时候 附带生成的lib文件
- solr创建core
创建Core的两种方法: 第一种方法: 1.打开dos命令窗口,切换目录到${solr.home}\bin,然后输入:solr create -c corename之后回车: 2.打开solr安装文件 ...
- qt中不能编辑
下载的qt代码不能编辑,原因是文本编码是GB2312,现在选择的是utf-8,把编码改过来就可以编辑了