2.2Hellowrold程序的解析

戴着假发的程序员出品  抖音ID:戴着假发的程序员 欢迎关注

[查看视频教程]

[1]@Configuration

@Configuration注解表示要给类为配置类。

我们在AppConfig类上方添加@Configuration注解,表示当前类是一个配置类。配置类本身也是spring容器中的一个元素,spring也会加载配置类,并且为其生成对应的BeanDefinition缓存。

一个配置类和一个配置文件是对等。

1 /**
2  * @author 戴着假发的程序员
3  *  
4  * @description
5  */
6 @Configuration
7 public class AppConfig {
8 }

相当于:

1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans default-autowire="byName" xmlns="http://www.springframework.org/schema/beans"
3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4        xsi:schemaLocation="http://www.springframework.org/schema/beans
5         http://www.springframework.org/schema/beans/spring-beans.xsd">
6 
7 </beans>

你可以在配置类中按照注解的标准注解bean。

当然你可以像配置文件一样在你的工程中添加多个配置类。(多个配置类的使用参见后面的容器创建方式)

注意:@Configuration修饰的类不能是final的。理论上也不能是abstract修饰的。

[2]@Bean

@Bean注解的作用就是给spring容器中注册一个bean对象。

一个@Bean就类似于配置文件中的一个bean标签。(关于@bean的属性,参见后面的@Bean属性详解)

1 //配置 ArticleDAO对象
2 @Bean
3 public IArticleDAO articleDAO(){
4     return new ArticleDAO();
5 }
6 //相当于添加了如下的配置
7 //<bean id="articleDAO" class="com.st.dao.IArticleDAO">

@Bean都是写在方法上方的,表示这个方法的返回值对象将会被添加到spring的容器中。很明显通过@Bean的方式添加的对象,创建方式是由我们自己定义的。

@Bean添加的对象在默认情况下,这个bean的id就是对应的方法名。 比如:IArticleDAO对象的id就是articleDAO.

注意:@Bean方法返回值如果是void,则不会进行类注册动作。 @Bean的方法当然也可以是static修饰的。

[3]容器初始化

我们可以像加载配置文件一样加载配置类完成容器创建:

1 ApplicationContext ac =
2         new AnnotationConfigApplicationContext(AppConfig.class);

很明显我们使用的ApplicationContext类的实现类不在是ClassPathXmlApplicationContext类。

这里我们使用AnnotationConfigApplicationContext类,传入的参数是配置类的Class对象。

当然我们还可以这样使用:

1 public AnnotationConfigApplicationContext(org.springframework.beans.factory.support.DefaultListableBeanFactory beanFactory) { /* compiled code */ }
2 
3 public AnnotationConfigApplicationContext(java.lang.Class<?>... annotatedClasses) { /* compiled code */ }

我们可以在创建AnnotationConfigApplicationContext时传入不同的参数:

beanFactory:我们可以传入一个beanFactory对象(关于beanFactory参看beanFactory的详解)

class类型的可变参数:如果我们有多个配置类,我们可以传入一个或者多个配置类的class对象,例如:

1 ApplicationContext ac =
2         new AnnotationConfigApplicationContext(AppConfig.class, AppConfig1.class);

 

上一篇:Springboot下Mybatis源码


下一篇:Oracle查看表结构的方法【我】