完全注解开发是指在Spring应用中完全依赖注解进行配置和开发,而不使用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();
}
}
@Configuration
@ComponentScan("top.ygang")
@PropertySource({
"app.properties"
})
public class SpringConfiguration {
}
需要使用AnnotationConfigApplicationContext
类来加载配置类
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfiguration.class);
User bean = applicationContext.getBean(User.class);
System.out.println(bean);