Spring组件注册注解之@Configuration @Bean

   在往Spring IOC容器添加组件的时候,一般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="person" class="com.yibai.spring.annotation.bean.Person" />
	
</beans>

相对应的 如果使用注解向IOC添加组件,对应的注解就是@Configuration和@

@Configuration: 在类上声明,表示这是一个配置组件;

@Bean: 声明在方法上方法上和注解上,跟XML配置bean节点对应的一样,也提供 名称,初始化方法,销毁方法的声明;

 

代码举例

package com.yibai.spring.annotation.bean;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;

@Setter
@Getter
@ToString
@Slf4j
public class Person {

	private String name;
	private int age;
	private Address address;

	public void init() {
		log.debug("初始化");
	}

	public void destory() {
		log.debug("销毁");
	}

}

 

/**
 * Project Name:yibai-spring-annotation
 * File Name:MainConfig.java
 * Package Name:com.yibai.spring.annotation.main.config
 * Date:2019年1月5日上午11:20:26
 * Copyright (c) 2019, www.windo-soft.com All Rights Reserved.
 *
*/

package com.yibai.spring.annotation.main.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.yibai.spring.annotation.bean.Person;

/**
    主配置类
*/

@Configuration
public class MainConfig {

    //声明一个组件加入IOC容器
	@Bean(name = "pers", initMethod = "init", destroyMethod = "destory")
	public Person person() {
		return new Person();
	}

}

 

package com.yibai.spring.annotation.main;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.yibai.spring.annotation.bean.Person;
import com.yibai.spring.annotation.main.config.MainConfig;

/**
 * Hello world!
 *
 */
public class MainClass {

	public static void main(String[] args) {
		AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(
				MainConfig.class);

		Person person = applicationContext.getBean(Person.class);
		System.out.println(person);

        //直接点击关闭按钮是无法执行销毁方法的,通过close方法关闭IOC容器
		applicationContext.close();

	}

}

运行结果

[DEBUG] 2019-01-05 21:27:20,322 --> [main] com.yibai.spring.annotation.bean.Person.init(Person.java:19): 初始化  
Person(name=null, age=0, address=null)
[DEBUG] 2019-01-05 21:27:20,348 --> [main] com.yibai.spring.annotation.bean.Person.destory(Person.java:23): 销毁  

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章