核心注解:解密SpringBootConfiguration
作用通过@Configuration和@Bean结合,注册到IOC容器
源码:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration(
proxyBeanMethods = false
)
1.主要作用
@Configuration:构建bean的定义,初始化Spring容器
1)添加依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
2)创建一个Configuration类
@Configuration
public class MyConfiguration {
public MyConfiguration(){
System.out.println("MyConfiguration容器启动初始化...");
}
}
以上代码
3)加一个测试类
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfiguration.class);
//SpringApplication.run(DemoApplication.class, args);
}
}
结果:MyConfiguration容器启动初始化…
主要作用:
@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含一个或者多个被@Bean注解的方法。这些方法会被AnnotationConfigApplicationContext或者AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean的定义,初始化Spring容器。
2.把一个对象注册到IOC容器中
/**
* @Bean注解在返回实例的方法上,如果未通过@Bean指定bean的名称,则默认的Bean对象名与标注的方法名相同;
* 以下创建的对象名,和方法名一样,即userBean
*/
@Bean
public UserBean userBean(){
UserBean userBean= new UserBean();
userBean.setUsername("agan");
userBean.setPassword("123456");
return userBean;
}
相当于以前XML配置:
<beans>
<bean id="userBean" class="com.agan.boot.annotation.bean.UserBean" />
</beans>
3.加一个体验类
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfiguration.class);
UserBean userBean=(UserBean)context.getBean("userBean");
System.out.println(userBean.toString());
}