@Autowired,@Qualifier @Required @Resource @Component,@Service,@Controller,@Repository @PostConstruct

2023-05-16

1、@Autowired 注解:
首先在使用时候需要引入配置:


<!-- 该 BeanPostProcessor 将自动起作用,对标注 @Autowired 的 Bean 进行自动注入 --> 
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>  

在Spring MVC 中 由于配置了“ <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>”

故不使用引入上面自动注入也可实现指定注入功能。

@Autowired 可以标注在属性,以及set方法上,以及构造函数上.进行标注,然后自动完成注入。

 

2、@Qualifier 注解:
如果配置了多个类型为 User 的 Bean, 那么我们在

1
2
3
4
@Autowired
private User setUser(User user){
//....
}

会出现错误,这个时候我们就需要对注入的对象指定读取Bean的名称,则所以 @Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了。

1
2
3
4
5
6
7
8
9
10
@Autowired
private User setUser(@Qualifier("user1") User user){
//....
}
 
public class Recommender {
    @Autowired
    @Qualifier("main")
    private MovieCatalog log;
}

@Autowired 可以对成员变量、方法以及构造函数进行注释,而 @Qualifier 的标注对象是成员变量、方法入参、构造函数入参。正是由于注释对象的不同,所以 Spring 不将 @Autowired 和 @Qualifier 统一成一个注释类。


3、@Required注解:
@Required注解检查 但他只检查属性是否已经设置而不会测试属性是否非空

4、@Resource 写在属性或者是setter方法上,按照名称注入 可以配置name="...",
如果不配置则提取 setter方法名,该bean必须存在。
@Resource(name="user")
private User user;

5、@Component,@Service,@Controller,@Repository 注解:
Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。虽然目前这 3 个注释和 @Component 相比没有什么新意,但 Spring 将在以后的版本中为它们添加特殊的功能。所以,如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释,而用 @Component 对那些比较中立的类进行注释。

6、@PostConstruct 注解,标识Bean在初始化的时候执行,
@PreDestroy 注解,表示在Bean在对象销毁的时候执行。

1
2
3
4
5
6
7
8
9
@PostConstruct
public void init() {
 
}
 
@PreDestroy
public void destory() {
 
}

7、@Scope 注解 设置作用域:

prototype,singleton 注意spring2.0后 又增加了request ,session和global session 4个作用区域
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@Autowired,@Qualifier @Required @Resource @Component,@Service,@Controller,@Repository @PostConstruct 的相关文章

  • @Autowire 因 @Repository 失败

    我无法使 Autowire 注释与 Repository 注释的类一起使用 我有一个界面 public interface AccountRepository public Account findByUsername String use
  • 设置新配置后如何更新所有 spring 对象?

    怎么刷新之前的 Autowired动态配置更改后的 spring 对象 Here is my updateConfig method GenericApplicationContext context new GenericApplicat
  • 在 JBoss AS 7.1.X 上使用带有 Spring 3.0.X 的 JAX-WS Web 服务

    我在 JBoss AS Final 7 1 1 上使用 Spring 3 0 6 部署 JAX WS Web 服务时遇到一些问题 我尝试了本教程中的两种第一种方法 http www javacodegeeks com 2010 11 jax
  • 向 SpringBootTest 添加配置类会破坏组件扫描

    我正在尝试禁用真正的 Mongo 连接并在测试中将其替换为 Fongo 模拟 这是我的测试课 SpringBootTest RunWith SpringRunner class public class ControllerTest Aut
  • Spring Boot @Autowired 在运行时创建实例

    作为大多数 Spring Boot 新用户 我对 Autowired 有一个问题 D 我在这里阅读了大量有关此注释的主题 但仍然找不到适合我的问题的解决方案 假设我们有这个 Spring Boot 层次结构 SpringBootApplic
  • 如何将 HTML5“必需”属性添加到 woocommerce_form_field

    我目前正在我的 WordPress 主题中开发 WooCommerce 注册页面 并添加了一个钩子供用户接受条款和条件 请参阅添加的 PHP 代码 HTML5为输入字段提供了一个超级有用的功能 就是在标签中添加 必填 新浏览器会自动提示警告
  • 具有 html5 必需属性的 tinyMCE 文本区域的表单无法提交

    这不是一个问题 而是一个我想与大家分享的答案 我刚刚花了四个多小时的时间来研究一些东西 结果发现它是 TinyMCE 或 Firefox 中的一个错误 加载 TinyMCE 后 如果指定 HTML5required上的属性textarea该
  • Spring JUnit4 手动/自动装配困境

    我遇到了一个问题 这个问题只能用我对 Spring 的 IoC 容器设施和上下文设置的根本缺乏理解来解释 所以我想要求对此进行澄清 仅供参考 我维护的一个应用程序具有以下技术堆栈 Java 1 6 春季2 5 6 RichFaces 3 3
  • 一起使用必需属性和只读属性

    我正在创建一个 HTML5 网络表单 其中一个输入用于地理位置 通过单击按钮 它插入 GPS 坐标 来填充 由于此输入必须是必需的并且必须是只读的 我不希望用户在其中写入自定义数据 因此如何处理这个问题 HTML5不允许使用required
  • @Autowired 和 @Service 从控制器工作,但不从不同的包工作

    我需要帮助理解背后的概念 Autowired and Service 我有一个 DAO 定义为 Service和控制器 Autowired一切看起来都很好 但是 我使用相同的 Autowired在不同的班级 那么它不起作用 Example
  • 基于 Spring Javaconfig 的按名称自动装配不起作用

    我正在尝试使用基于 Javaconfig 的 Spring 配置 我有两个相同类型的 bean 并尝试通过限定符自动装配它们 但它似乎不起作用 这是我的配置类 Configuration EnableAutoConfiguration Co
  • 仅当按下特定命令按钮时才根据需要验证输入

    我有 JSF 验证的具体用例 例如我有一个inputText field
  • Spring @Autowired 不工作 - BeanCreationException

    当我尝试在服务器上部署文件时发生错误 我很困惑 因为这段代码有效 例外 Failed to enable lec2ear 1 0 ear Unexpected HTTP response 500 Request address gt dep
  • Rails simple_form 属性需要标记 (*)

    我在我的应用程序中使用简单表单 我想删除 指示我的所有表单 现有表单和尚未创建的表单 都需要一个属性 我尝试过设置simple form rb Whether attributes are required by default or no
  • @Autowired 说不建议进行现场注入[重复]

    这个问题在这里已经有答案了 谁能告诉我为什么 autowired 说不建议进行字段注入 并且 TextWriter 对象 文本 也说它无法自动装配 因为有多个文本编写器类型的 bean RestController public class
  • 为什么我的 Spring @Autowired 字段为空?

    注意 这旨在成为常见问题的规范答案 我有一个春天 Service class MileageFeeCalculator 有一个 Autowired field rateService 但该字段是null当我尝试使用它时 日志显示 两个Mil
  • Spring - 如何注入具体的接口实现?

    我需要通过 Autowired 注入服务类的具体实现 服务接口 public interface PostService 执行 Service postServiceImpl public class PostServiceImpl imp
  • Spring @Autowired RestTemplate 为 null [重复]

    这个问题在这里已经有答案了 我是春天的新手 我使用 Java 开发使用带证书的 RESTful 服务的服务 这是我的配置类 package configuration import org apache http client HttpCl
  • 在 JSON 对象中强制执行非空字段

    我们的 REST API 接收一些 JSON 对象输入 其中某些字段要求不为空 这些可以是字符串 整数 甚至可以是其他一些类实例作为参考 我们正在尝试找到一种方法来强制这些字段不为空 而不是在 API 中进行空检查的正确方法 当前的 if
  • Autowired spring bean 不是代理

    我正在开发一个连接到 MySQL 数据库的非常小的应用程序 我正在尝试创建表记录 但收到 没有正在进行的事务 我已经准备好了所有正确的东西 服务接口 MyService 及其实现 MyServiceImpl 我已经用 Service 注释了

随机推荐

  • mybatis parametertype 多个参数

    一 单个参数 xff1a public List lt XXBean gt getXXBeanList 64 param 34 id 34 String id lt select id 61 34 getXXXBeanList 34 par
  • JS获取地址中的参数

    lt DOCTYPE HTML PUBLIC 34 W3C DTD HTML 4 0 Transitional EN 34 gt lt html gt lt head gt lt title gt 打印 lt title gt lt met
  • less 查看日志,并且搜索

    一 关键字搜索日志 非常实用 1 less catalina out 2 大写字母 xff1a F find的意思 xff0c 并且其实他正在计算行数 直接到达日志最底部 xff0c 也就是最新日志 3 xff1a ctrl 43 c 把上
  • maven配置,以及项目"Dependency 'xxxx‘ not found"解决过程

    maven安装 1 下载maven文件 地址 2 解压好就可以了 xff0c 无需安装 xff0c 3 修改下面配置文件 配置環境变量 xff1a xff08 和配置jdk一样 xff09 检查配置成功没有 xff1a 直接cmd mvn
  • linux修改系统时间

    一 查看和修改Linux的时区1 查看当前时区 命令 xff1a 34 date R 34 1 修改设置Linux服务器时区方法 A 命令 xff1a 34 tzselect 34 依据引导进行选择 二 查看和修改Linux的时间1 查看时
  • Win2012系统忘记密码,修改密码。

    请准备一张相应操作系统版本的光盘 Server2012R2安装光盘ISO 步骤 1在虚拟机的光盘中选择Server2012R2的ISO 并确定 如果是物理机 直接把ISO刻录成光盘 放入光驱即可 2重启服务器 修改启动项从CD ROM启动
  • 防火墙firewall-cmd

    防火墙firewall cmd 一 centos7查看防火墙所有信息 firewall cmd list all 二 centos7查看防火墙开放的端口信息 firewall cmd list ports 三 开放 删除端口号 3 1 开放
  • docker与firewalld冲突解决

    firewall的底层是使用iptables进行数据过滤 xff0c 建立在iptables之上 xff0c 而docker使用iptables来进行网络隔离和管理 xff0c 这可能会与 Docker 产生冲突 当 firewalld 启
  • gradle和gradle wrapper

    wrapper保证了团队中每一个开发者都使用同样版本的Gradle并能使用Gradle进行项目构建 1 Gradle Wrapper 是什么 Gradle Wrapper 由几个文件组成 xff0c 这些文件在你的项目目录中 l gradl
  • ApplicationContextAware及InitializingBean及bean注入执行顺序

    1 spring先检查注解注入的 bean xff0c 并将它们实例化 2 然后 spring初始化 bean 的顺序是按照 xml 中配置的顺序依次执行构造 3 如果某个类实现了 ApplicationContextAware接口 xff
  • git 报错: http request failed

    解决方案 xff1a 卸载Centos自带的git1 7 1 xff0c 安装版本git2 2 1 1 查看当前git版本 git version git version 1 7 1 2 卸载git1 7 1 yum remove git
  • 关于sh时命令不识别无法正常执行.sh文件

    为什么不能执行呢 xff0c 因为我们的命令很多时候是以bash的规范的 xff0c 所以如果shell不是bash类型 xff0c 很容易出现命令不识别这类问题 先检查shell类型 echo SHELL 这是正常的 xff0c 是bas
  • Powershell美化(oh-my-posh)

    效果展示 xff1a 1 通过cmd下载oh my posh或者直接微软商店搜索下载 winget install oh my posh 2 打开powershell 7或者powershell xff08 推荐以下载的最高版本为主 xff
  • O2OA中如何使用PostgreSQL + Citus 实现分布式数据库实现方案?

    虽然 O2OA 数据表高效的表结构以及索引的设计已经极大程度地保障了数据存取操作的性能 xff0c 但是随着使用时间从增长 xff0c 数据表存放的数据量也会急剧增长 此时 xff0c 仍然需要有合适的方案来解决数据量产生的系统性能瓶颈 本
  • POI Excel导出样式设置

    HSSFSheet sheet 61 workbook createSheet 34 sheetName 34 创建sheet sheet setVerticallyCenter true 下面样式可作为导出左右分栏的表格模板 sheet
  • SQL强化:将相同的或连续的时间段合并

    问题描述 xff1a 有一张签到表 xff0c 需要将连续或相同的时间段合并 xff0c 即把多条记录查询合并成一条连续的时间段记录 数据表如下 xff1a DROP TABLE IF EXISTS 96 timesheets 96 CRE
  • Mysql实现数据的不重复写入(insert if not exists)以及新问题:ID自增不连续的解答

    最近做数据处理时候 xff0c 遇到一个问题 用一个id自增主键时候 xff0c 数据表中会插入大量重复数据 xff08 除ID不同 xff09 这虽然对最终数据处理结果没有影响 xff0c 但是有1个问题 xff0c 如果数据量超大 xf
  • 2014年秋找工作经历

    博主学渣一枚 xff0c 读研期间做过几个不上档次的管理系统 xff0c 学历不太好 xff0c 基础知识不太牢固 xff0c 所以校招找工作难免辛酸 记下这个过程 xff0c 以便日后回顾来时的路 9月 xff0c 酱油了 xff0c 只
  • 服务器端获取webservice客户端IP地址

    一 基于xfire发布的webservice获取客户端ip的方法 public String getClientIp String ip 61 34 34 try HttpServletRequest request 61 XFireSer
  • @Autowired,@Qualifier @Required @Resource @Component,@Service,@Controller,@Repository @PostConstruct

    1 64 Autowired 注解 xff1a 首先在使用时候需要引入配置 xff1a lt 该 BeanPostProcessor 将自动起作用 xff0c 对标注 64 Autowired 的 Bean 进行自动注入 gt lt bea