news 2026/8/17 5:34:42

(24)使用的注解的方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(24)使用的注解的方法

如何使用以上的注解呢?

  • 第一步:加入aop的依赖(已经包在context包里面)
  • 第二步:在配置文件中添加context命名空间
  • 第三步:在配置文件中指定扫描的包
  • 第四步:在Bean类上使用注解

第一步:加入aop的依赖
我们可以看到当加入spring-context依赖之后,会关联加入aop的依赖。所以这一步不用做。

第二步:在配置文件中添加context命名空间

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"></beans>

第三步:在配置文件中指定要扫描的包

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><context:component-scanbase-package="com.powernode.spring6.bean"/></beans>

第四步:在Bean类上使用注解

packagecom.powernode.spring6.bean;importorg.springframework.stereotype.Component;@Component(value="userBean")publicclassUser{}

编写测试程序:

packagecom.powernode.spring6.test;importcom.powernode.spring6.bean.User;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassAnnotationTest{@TestpublicvoidtestBean(){ApplicationContextapplicationContext=newClassPathXmlApplicationContext("spring.xml");UseruserBean=applicationContext.getBean("userBean",User.class);System.out.println(userBean);}}

如果注解的属性名是value,那么value是可以省略的。

packagecom.powernode.spring6.bean;importorg.springframework.stereotype.Component;@Component("vipBean")publicclassVip{}
packagecom.powernode.spring6.test;importcom.powernode.spring6.bean.Vip;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassAnnotationTest{@TestpublicvoidtestBean(){ApplicationContextapplicationContext=newClassPathXmlApplicationContext("spring.xml");VipvipBean=applicationContext.getBean("vipBean",Vip.class);System.out.println(vipBean);}}

如果把value属性彻底去掉,spring会被Bean自动取名吗?会的。并且默认名字的规律是:Bean类名首字母小写即可。

packagecom.powernode.spring6.bean;importorg.springframework.stereotype.Component;@ComponentpublicclassBankDao{}

也就是说,这个BankDao的bean的名字为:bankDao
测试一下

packagecom.powernode.spring6.test;importcom.powernode.spring6.bean.BankDao;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassAnnotationTest{@TestpublicvoidtestBean(){ApplicationContextapplicationContext=newClassPathXmlApplicationContext("spring.xml");BankDaobankDao=applicationContext.getBean("bankDao",BankDao.class);System.out.println(bankDao);}}

我们将Component注解换成其它三个注解,看看是否可以用:

packagecom.powernode.spring6.bean;importorg.springframework.stereotype.Controller;@ControllerpublicclassBankDao{}

剩下的两个注解大家可以测试一下。
如果是多个包怎么办?有两种解决方案:

  • 第一种:在配置文件中指定多个包,用逗号隔开。
  • 第二种:指定多个包的共同父包。

先来测试一下逗号(英文)的方式:
创建一个新的包:bean2,定义一个Bean类。

packagecom.powernode.spring6.bean2;importorg.springframework.stereotype.Service;@ServicepublicclassOrder{}

配置文件修改:

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><context:component-scanbase-package="com.powernode.spring6.bean,com.powernode.spring6.bean2"/></beans>

测试程序:

packagecom.powernode.spring6.test;importcom.powernode.spring6.bean.BankDao;importcom.powernode.spring6.bean2.Order;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassAnnotationTest{@TestpublicvoidtestBean(){ApplicationContextapplicationContext=newClassPathXmlApplicationContext("spring.xml");BankDaobankDao=applicationContext.getBean("bankDao",BankDao.class);System.out.println(bankDao);Orderorder=applicationContext.getBean("order",Order.class);System.out.println(order);}}

我们再来看看,指定共同的父包行不行:

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><context:component-scanbase-package="com.powernode.spring6"/></beans>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/17 1:55:03

D3.js标签布局重构:从数据拥挤到视觉优雅的技术革新

D3.js标签布局重构&#xff1a;从数据拥挤到视觉优雅的技术革新 【免费下载链接】d3 Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada: 项目地址: https://gitcode.com/gh_mirrors/d3/d3 在数据可视化领域&#xff0c;标签重…

作者头像 李华
网站建设 2026/8/17 5:01:37

28、利用OpenVPN构建安全的跨平台虚拟专用网络

利用OpenVPN构建安全的跨平台虚拟专用网络 1. 静态密钥与PKI的对比 使用静态密钥存在一个问题,即会失去完美前向保密性,因为静态密钥从不改变。如果攻击者设法嗅探并捕获网络流量,然后获取并破解了加密密钥,那么攻击者就可以解密过去和未来的所有数据。而OpenVPN支持使用…

作者头像 李华
网站建设 2026/8/17 7:11:39

55、网络术语与Linux内核构建全解析

网络术语与Linux内核构建全解析 1. 重要网络术语介绍 在网络技术领域,有许多关键的术语和概念,它们构成了网络通信和数据处理的基础。下面将对一些重要的网络术语进行详细介绍。 1.1 TCAM - 三元内容可寻址存储器 与普通计算机中的RAM不同,普通RAM将数据存储在多个地址中…

作者头像 李华
网站建设 2026/8/16 7:25:25

如何高效配置Flutter CanvasKit渲染方案:5个关键优化策略

如何高效配置Flutter CanvasKit渲染方案&#xff1a;5个关键优化策略 【免费下载链接】engine The Flutter engine 项目地址: https://gitcode.com/gh_mirrors/eng/engine 还在为Flutter Web应用在复杂场景下的渲染卡顿和内存占用过高而困扰吗&#xff1f;作为基于WebAs…

作者头像 李华
网站建设 2026/8/16 5:46:37

光纤耦合装置的公差分析

摘要在现代光学中&#xff0c;光纤存在于各种光学系统中&#xff0c;能够将多少光耦合到光纤中一直是人们关注的问题。耦合效率对系统的对准十分敏感&#xff0c;特别是对于芯径相对较小的单模光纤。在本例中&#xff0c;我们选择了一个设计良好的光纤耦合透镜&#xff0c;并根…

作者头像 李华