注解开发定义的bean和xml文件定义的bean有以下区别:
配置方式不同:注解方式是直接在Java类中使用注解来定义bean,而XML方式则是在XML文件中配置bean。
配置信息不同:注解方式在注解内配置bean的属性,如@Value,@Autowired等,而XML方式则是在配置文件中配置bean的所有属性。
扫描方式不同:使用注解方式需要扫描所有的注解,并自动将符合条件的类实例化为bean,而使用XML方式需要手动编写XML文件配置bean。
灵活程度不同:注解方式相对于XML方式更加灵活,可以使用Java的语言特性动态定义bean,而XML方式较为死板,需要手动编写XML文件。
可读性不同:XML方式相对于注解方式更具可读性,可以清晰地看到每个bean的配置信息,而注解方式需要去查看Java类的源代码才能了解bean的配置。
1. 注解开发定义bean
在Java实现类中添加注解,代表添加bean
写上名称,也可以不用设置名称但要保证bean的唯一
@Component定义bean
@Component("bookDao")
问题:Spring配置文件如何识别这个bean
需要在配置文件中让Spring感知到这个bean
设置扫描包
<context:component-scan base-package="com.itheima"/>
在Spring中,细分了注解
2. 纯注解开发模式
直接指定一个Java类为Spring的配置文件
//声明当前类为Spring配置类
@Configuration
//设置bean扫描路径,多个路径书写为字符串数组格式
@ComponentScan({"com.itheima.service","com.itheima.dao"})
public class SpringConfig {
}
所以之前获取配置文件的操作也要修改
//AnnotationConfigApplicationContext加载Spring配置类初始化Spring容器
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);