欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > Spring-1-注解管理依赖

Spring-1-注解管理依赖

2025/9/21 19:27:41 来源:https://blog.csdn.net/m0_75138009/article/details/141474949  浏览:    关键词:Spring-1-注解管理依赖

可以将 Spring  其当做一个 容器 ,可以随意的存储对象。

@Component
@Controller
@Service
@Repository

这四个是常用的注解,用于声明 Bean 的注解,可以在后面跟括号为起 value 属性传值,代表依赖注入的 id,若不设置,则默认为 类名首字母小写
这四个注解本质都是同一个注解 @Component,只是名称不同,可以用于三层架构中不同的层
写在需要注入依赖的类上

上面是写在类上的注解

接下来是写在属性或者方法上的注解

@Value ()

给简单属性直接赋括号里的值

@AutoWired  

非简单类型注入,默认根据类型装配,byType
@Autowired+@Qualifier 连用可以根据名字装配,byName
使用方法,在被注入的类上要加 @Compoment 注解
在注入类的非简单属性类型上直接写上 @Autowired 即可自动工具类型装配
当被注入的对象有多个,就无法通过类型直接注入,需要使用名字:
@Autowired
@Qualifier("被注入依赖的id")
两个注解联合使用
Autowired 注解可以使用在,属性,构造方法,构造方法的传参等需要注入依赖处

@Resource

未指定 name 属性则直接根据当前属性名作为名字
该方法与 @Autowired+@Qualifier 连用 的效果一致
区别:不能出现在构造方法上

使用前,需要注入依赖,配置 sping.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>Compomen</artifactId><version>1.0-SNAPSHOT</version><!--仓库--><repositories><!--    spring里程碑版本的仓库--><repository><id>repository.spring.milestone</id><name>Spring Milestone Repository</name><url>https://repo.spring.io/milestone</url></repository></repositories><dependencies>
<!--        AutoWired 需要的依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.0-M2</version></dependency>
<!--        单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency>
<!--        Resource 需要的依赖--><dependency><groupId>jakarta.annotation</groupId><artifactId>jakarta.annotation-api</artifactId><version>2.1.1</version></dependency></dependencies><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties></project>

需要对要用到的包进行扫描,在 spring.xml 中声明 (在 resource 目录下创建)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="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.xsdhttp://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><context:component-scan base-package="breeze"/></beans>

需要注入对象的类:

@Component
public class Compomen {@Value("18")int age;@AutowiredAuto auto;@Resource(name="reso")Reso reso;public void printValue(){System.out.println(age);}public void autoIsNullOrNot(){System.out.println(auto == null ? "fail":"succeed");}public void printReso(){reso.ResoText();}}

被注入的两个类:

@Component("reso")
public class Reso {public void ResoText(){System.out.println("Reso这个类中的方法被调用");}
}
@Component
public class Auto {Auto(){System.out.println("Auto类中的构造方法被调用...");}
}

测试程序

    @Testpublic void text(){//拿到配置文件中的容器ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");//拿到容器中的类Compomen compomen = context.getBean("compomen", Compomen.class);compomen.printValue();compomen.autoIsNullOrNot();compomen.printReso();}

运行结果:

Auto类中的构造方法被调用...
18
succeed
Reso这个类中的方法被调用

Process finished with exit code 0

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词