Spring常用注解整理说明
@Configuration
作用
-
用来定义配置类,可以替换xml配置文件 被注解的类中含有一个或多个被@Bean注解的方法,这些方法会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean实例,初始化Spring容器
注意事项(@Configuration注解的类相关)
-
该类不能是final类型 该类不可以是匿名类 @Configuration嵌套时,嵌套的configuration必须是静态类
使用方式
-
@Configuration配置spring并启动spring容器 配置类 编写启动类 容器启动 @Configuration+@ComponetScan +@Componet扫描包路径,添加路径下需要创建的bean实例到Spring容器 配置类 需要注入的类 启动类 运行结果 @Configuration启动容器+@Bean注册Bean 配置类 编写注入对象TestBean 编写启动类 测试结果
@Componet @Controller @Service @Repository
-
@Componet是一个标准的spring Bean类,声明当前类的对象被spring托管,spring会创建该类的实例并存放在IOC容器中 @Controller @Service @Repository都是@Componet的子类 @Controller 标注一个控制器组件类 @Service 标注一个业务逻辑组件类 @Repository 标注一个DAO组件类 @Componet可以替代上述三个注解 尽量使用@Controller @Service @Repository来代替@Componet,因为语义性更强,便于后续的维护和开发 上述注解都有一个属性value用来声明Bean实例的id,如果不声明,则默认是该类的类名称首字母小写
@Bean @Qualifier @Scope
-
Bean注解主要用于方法上,类似于工厂方法 搭配@Qualifier注解定义工厂方法的名称,完成类之间的依赖关系 @Scope定义了该Bean的作用域范围,是Singleton还是Prototype
@ComponentScan
-
@ComponetScan会自动扫描声明的包路径,创建路径下需要创建的实例Componet,Controller,Service,Repository到Spring容器中
@Autowired @Resource
相同点
-
@Resource相当于@Autowired,均完成了自动装配,注入Bean实例到Spring容器中 均可标注在字段或属性的setter方法上
不同点
-
提供方: @Autowired是由Spring提供的 @Resource是由J2EE提供的,需要JDK1.6及以上 注入方式 @Autowired只按照类型注入,如果想要其按照id装配,需配合@Qualifier使用 @Resource默认按id自动装配,也提供按照类型注入 属性 @Autowired按类型装配依赖对象,默认情况下,要求依赖对象必须存在,如果允许null值,可以设置属性required为false @Resource有两个重要属性:name和type name属性指定id,如果没有指定name属性,当注解标注在字段上时,默认取字段的名称作为Bean id寻找依赖对象,当注解标注在属性的setter方法上时,默认取属性名作为Bean id寻找依赖对象
@Resource的注意事项 Resource如果没有指定name属性,并且按照默认的名称无法找到依赖对象时。@Resource注解会回退到按类型装配
推荐使用@Resource注解在字段上,这样就不用写setter方法了,并且这个注解时属于J2EE的,减少了与Spring的耦合,这样代码比较 优雅(被优雅支配的程序员,不得不给优雅标红)
