Spring完全注解开发 #
完全注解开发是指在Spring应用中完全依赖注解进行配置和开发,而不使用XML配置文件。以下是完全注解开发的一些优点和缺点:
- 优点
- 简化配置:使用注解可以减少XML配置文件的数量和复杂性,简化了项目的配置过程。注解配置通常更为简洁和直观,使得配置更容易理解和维护。
- 提升开发效率:注解配置方式可以减少样板代码的编写,节省了开发人员的时间和精力。同时,注解也提供了更强大的功能,如自动装配和切面编程,可以减少手动编写的代码量。
- 更好的可读性:注解使得代码的配置和逻辑更加紧密,使得代码更具可读性和可理解性。通过注解,开发人员可以直观地了解代码的用途和意图,提高了代码的可维护性。
- 更灵活的开发方式:使用注解可以更灵活地定义和组织代码结构,使得开发过程更加自由。注解可以应用在类、方法、字段等级别,可以更细粒度地控制和定制功能。
- 更好的集成性:注解配置更加紧密地与Java代码集成,使得与其他框架和工具的集成更加方便。注解可以与Spring的其他特性(如Spring MVC、Spring Data等)无缝协作,提供更一致和统一的开发体验。
- 缺点
- 可能过于依赖注解:完全注解开发使得配置信息分散在各个类和方法中,可能导致代码过于依赖注解,降低了代码的可读性和可维护性。同时,如果注解配置错误或不当,可能会导致运行时的问题。
- 难以处理复杂配置:对于复杂的配置需求,完全注解开发可能不如XML配置灵活。XML配置文件具有更强大的表达能力,可以处理更复杂的配置场景,如条件化配置、属性占位符等。
- 不够直观:对于新加入的团队成员或不熟悉注解的开发人员来说,完全注解开发可能不够直观。XML配置文件可以提供更明确的配置结构和关系,更容易理解和学习。
- 难以管理:使用注解进行配置时,配置信息散布在各个类和方法中,可能会使得配置管理变得困难。对于大型项目和团队开发来说,可能需要更多的规范和约束来管理注解配置。
常用注解 #
| 注解 | 说明 |
|---|---|
@Configuration |
注入Spring容器,并声明该类为配置类,该类作用等同于Spring配置文件 |
@ComponentScan |
用来扫描单个包,作用等同于context:component-scan |
@ComponentScans |
用来扫描多个包,作用等同于context:component-scan |
@EnableAspectJAutoProxy |
开启AOP注解,作用等同于aop:aspectj-autoproxy |
@PropertySource |
指定要读取的配置文件,作用等同于context:property-placeholder。如果Spring版本小于4.3,还需要在配置类中创建PropertySourcesPlaceholderConfigurer的Bean,4.3之后为自动创建 |
注意:只有在@Configuration配置类中,才可以使用方法调用的方式获取bean;如果没有@Configuration直接调用带有@Bean注解的方法,会有编译异常Method annotated with @Bean is called directly. Use dependency injection instead.
@Configuration
public class AppConfig {
@Bean
public TempUser tempUser(){
return new TempUser();
}
public void config(){
TempUser u = tempUser();
}
}
用法 #
1、自定义配置类 #
@Configuration
@ComponentScan("top.ygang")
@PropertySource({
"app.properties"
})
public class SpringConfiguration {
}
2、测试 #
需要使用AnnotationConfigApplicationContext类来加载配置类
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfiguration.class);
User bean = applicationContext.getBean(User.class);
System.out.println(bean);