前言
@Configuration 用于定義配置類,可替換XML組態檔,被注解的類內部包含一個或多個@Bean注解方法,可以被AnnotationConfigApplicationContext或者AnnotationConfigWebApplicationContext 進行掃描,用于構建bean定義以及初始化Spring容器,
它是在spring3.0版本之后出現的,此注解是spring支持注解驅動開發的一個標志,表明當前類是spring的一個配置類,作用是替代spring的applicationContext.xml,但其本質就是@Component注解,被此注解修飾的類,也會被存入spring的IOC容器,
屬性:
value:用于存入spring的ioc容器中Bean的id
使用場景:
在注解驅動開發時,用于縮寫配置的類,通常可以使用此注解,一般情況下,我們的配置也會分為主次配置,@Configureation一般出現在主配置類上,值得注意的是,如果我們在注解驅動開發時,構建ioc容器使用的是傳入位元組碼的建構式,此注解可以省略,但是如果傳入的是一個包,此注解則不能省略,
實體
@Configuration 加載Spring方法
Car.java
public class Car { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
定義Config類
@Configuration public class Config { public Config() { System.out.println("TestConfig容器初始化..."); } @Bean(name = "getMyCar") public Car getCar() { Car c = new Car(); c.setName("dankun"); return c; } }
實體化
public void testConfig() { ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); Car car = (Car)context.getBean("car"); System.out.println(car.getName()); } // 輸出 // TestConfig容器初始化... // dankun
@Configuration + @Component
@Configuration也附帶了@Component的功能,所以理論上也可以使用@Autowared功能,上述代碼可以改成下面形式
Car.java
@Component public class Car { @Value("dankun") private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
Config.java
@Configuration @ComponentScan("com.wuyue.annotation") public class Config { public Config() { System.out.println("TestConfig容器初始化..."); } }
測驗主入口
public class TestConfig { @Test public void testConfig() { ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); Car car = (Car)context.getBean("car"); System.out.println(car.getName()); } } // 輸出 // TestConfig容器初始化... // dankun
總結
- @Configuation等價于
<Beans></Beans> - @Bean 等價于
<Bean></Bean> - @ComponentScan等價于
<context:component-scan base-package="com.dxz.demo"/> - @Component 等價于
<Bean></Bean>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/294370.html
標籤:其他
