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): 銷燬  

 

 

 

 

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