栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Spring常用注解】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Spring常用注解】

文章目录
  • 使用注解前的声明
  • 装配类
    • @Component相关(结合扫描包实现类的自动装配)
  • lombok(实现相关函数不用写)
  • 装配Bean
    • @Autowired(替换set方法)
      • @Autowired结合@Qualifier实现byName自动装配
    • @Resource

使用注解前的声明

1.开启注解支持


作用:

  • 进行注解驱动注册,从而使注解生效
  • 用于激活那些已经在spring容器里注册过的bean上面的注解,也就是显示的向Spring注册
  • 如果不扫描包,就需要手动配置bean
  • 如果不加注解驱动,则注入的值为null!

2.配置扫描包
使用过程中, 可以不用扫描,扫描是为了类上的注解


装配类 @Component相关(结合扫描包实现类的自动装配)

举例:

@Component  //将这个类标注为Spring的一个组件,放到容器中!
public class Dog {
   public String name = "dog";
}

功能:这四个注解功能相同,都是为了将使用注解的类交给Spring管理装配
为了替换在xml文件中显式注册bean

    
    
    

区别:只是为了更好的分层
@Component
@Controller:web层
@Service:service层
@Repository:dao层

lombok(实现相关函数不用写)

功能:
使用:
@Data
@AllArgsConstructor
@NoArgsConstructor

装配Bean

使用注解装配Bean有两种方法:

  • @Autowired
  • @Resource

1、@Autowired与@Resource都可以用来装配bean。都可以写在字段上,或写在setter方法上。

2、@Autowired默认按类型装配(属于spring规范),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用

3、@Resource(属于J2EE规范),默认按名称装配,名称可以通过name属性进行指定。如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

它们的作用相同都是用注解方式注入对象,但执行顺序不同。@Autowired先byType,@Resource先byName。

@Autowired(替换set方法)

功能:替换set方法,按照类型自动转配

@Autowired结合@Qualifier实现byName自动装配

@Autowired是根据类型自动装配的,加上@Qualifier则可以根据byName的方式自动装配
@Qualifier不能单独使用。
举例:





没有加Qualifier时测试,直接报错

@Autowired
@Qualifier(value = "cat2")
private Cat cat;
@Autowired
@Qualifier(value = "dog2")
private Dog dog;

测试成功

@Resource
  • @Resource如有指定的name属性,先按该属性进行byName方式查找装配;
  • 其次再进行默认的byName方式进行装配;
  • 如果以上都不成功,则按byType的方式自动装配。
  • 都不成功,则报异常。

实体类:

public class User {
   //如果允许对象为null,设置required = false,默认为true
   @Resource(name = "cat2")
   private Cat cat;
   @Resource
   private Dog dog;
   private String str;
}

beans.xml






测试:结果OK

配置文件2:beans.xml , 删掉cat2



实体类上只保留注解

@Resource
private Cat cat;
@Resource
private Dog dog;

结果:OK

结论:先进行byName查找,失败;再进行byType查找,成功。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/852299.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号