@Configuration和@bean給容器中註冊組件
阿新 • • 發佈:2019-01-29
his tag des 指定 gap cati vat val 容器
spring容器中註冊組件的兩種方式:
- xml配置文件方式
- 註解方式
1、xml配置文件方式
- 編寫bean類
- 使用xml文件配置bean註入到spring容器
- 通過ClassPathXmlApplicationContext類獲取bean
1.1、編寫bean類
package com.jcon.entity; /** * @author Jcon * @version V1.0 * @Description: (用戶實體類) * @date 2019年01月28日 */ public class Person { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Person{" + "name=‘" + name + ‘\‘‘ + ", age=" + age + ‘}‘; } }
1.2、使用xml文件配置bean註入到spring容器
<?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.jcon.entity.Person"> <property name="age" value="20"/> <property name="name" value="張三"/> </bean> </beans>
1.3、通過ClassPathXmlApplicationContext類獲取bean
// 傳統xml方式註入bean並從容器中獲取 @Test public void xmlGetBean(){ ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml"); Person person = (Person) applicationContext.getBean("person"); System.out.println(person); }
2、註解方式
- 編寫bean類
- 編寫bean配置類,使用註解註入bean
- 通過AnnotationConfigApplicationContext獲取bean對象
2.1、編寫bean類
package com.jcon.entity;
/**
* @author Jcon
* @version V1.0
* @Description: (用戶實體類)
* @date 2019年01月28日
*/
public class Person {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name=‘" + name + ‘\‘‘ +
", age=" + age +
‘}‘;
}
}
2.2、編寫bean配置類,使用註解註入bean
package com.jcon.entity;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author Jcon
* @version V1.0
* @Description: (配置類)
* @date 2019年01月28日
*/
@Configuration
public class Config {
@Bean("person")
public Person getPerson(){
Person person = new Person();
person.setAge(18);
person.setName("李四");
return person;
}
}
2.3、通過AnnotationConfigApplicationContext獲取bean對象
// 註解方式註入bean並從容器中獲取
@Test
public void annotationGetBean(){
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(Config.class);
Person person = (Person) applicationContext.getBean("person"); // 對應bean名字為@bean方法的方法名,也可以使用@bean("name")指定bean名字
System.out.println(person);
}
總結
- 使用註解類可以代替xml配置類
- 註解方式bean名字默認是方法名,可以使用@bean("beanName")來指定bean名字
@Configuration和@bean給容器中註冊組件