目錄
使用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方式一致(在測試目錄中測試,不需要啓動主程序類)