注解开发

注解开发定义bean

<bean id="bookDao" class="com.xxx.dao.impl.BookDaoImpl"/>

以下代码等价于在配置文件中配置Bean,也就是以上的配置

使用@Component定义bean

@Component("bookDao")
public class BookDaoImpl implements BookDao{
    public void save(){
        System.out.println("book dao save ...");
    }
}

核心配置文件中通过组件扫描加载bean

<context:component-scan base-package="com.xxx.dao.impl"/>

Spring提供@Component注解的三个衍生注解

  • @Controller:用于表现层bean定义
  • @Service:用于业务层bean定义
  • @Repository:用于数据层bean定义
@Repository("bookDao")
public class BookDaoImpl implements BookDao{

}
@Service
public class BookServiceImpl implements BookService{

}

纯注解开发

@Configuration
@ComponentScan("com.xxx")  // 作用等同于 <context:component-scan ...
public class SpringConfig{

}
public class AppForAnnotation {
    public static void main(String[] args){
        // 加载配置类初始化容器
        ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
        System.out.println(bookDao);
        BookService bookService = ctx.getBean(BookService.class);
        System.out.println(bookService);
    }
}
  • Spring3.0升级了纯注解开发模式,使用Java类替代配置文件,开启了Spring快速开发赛道
  • 读取Spring核心配置文件初始化容器对象切换为读取Java配置类初始化容器对象
  • @Configuration注解用于设定当前类为配置类
  • @ComponentScan注解用于设定扫描路径,此注解只能添加一次,多个数据请用数组格式
@ComponentScan({"com.xxx.service","com.xxx.dao"})