SpringBoot七:推薦全註解方式添加組件

目錄

介紹下SpringBoot使用傳統的XML配置文件添加組件

使用SpringBoot推薦的全註解方式添加組件(JavaConfig)


現在一般不使用傳統的XML文件配置添加組件,而是使用就是註解方式(JavaConfig方式)添加組件

SpringBoot使用傳統的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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	<bean id="dog" class="com.test.yml.Dog"></bean>
	
	<bean id="person" class="com.test.yml.Person">
	 	<property name="dog" ref="dog"></property>
	</bean>

</beans>

SpringBoot加入beans.xml,bean在resource目錄下

在項目啓動類中添加@ImportResource註解,將beans文件添加進來,並啓動此類

在SpringBoot項目測試

package com.test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;

import com.test.yml.Person;

@RunWith(SpringRunner.class)
@SpringBootTest
public class Test1 {
	@Autowired
	Person person;
	
	@Autowired
	ApplicationContext ac;
	
	@Test
	public void contextLoads() {
		boolean isE = ac.containsBean("dog");
		Person person2 = ac.getBean(Person.class);
		System.out.println(isE);
		System.out.println(person.getDog());
		System.out.println(person2.getDog());
	}
	
}

兩種方式都可以從容器中拿到對象

此方式返回true,則證明添加容器成功

運行結果(說明組件被添加到容器中了)

 

使用SpringBoot推薦的全註解方式添加組件(JavaConfig)

1、配置類==Spring配置文件,@Configuration修飾類用來指明當前類是一個配置類,用來替代Spring配置文件(類似<bean>)
2、使用@Bean給容器中添加組件(類似<bean 中的 class="xxx" 方法名就是id="xx")

使用全註解方式改造上面的XML方式(方法名就是組件的id

改造成註解方式

package com.test.config;

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

import com.test.yml.Dog;
import com.test.yml.Person;

/**
 * 功能:加入這個註解@Configuration讓該類成爲配置類(相當於XML配置文件)
 * 相當於<bean>
 * @author xuexue
 * 
 *
 */
@Configuration
public class MyAppConfig {

	//@Bean添加到容器中;容器中這個組件默認的id就是方法名
	@Bean
	public Person person() {
		Person person = new Person();
		person.setDog(dog());
		return person;
	}
	
	@Bean
	public Dog dog() {
		return new Dog();
	}
	

}

將啓動類的XML方式註釋掉

運行結果,與XML方式一致(在測試目錄中測試,不需要啓動主程序類)

 

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