Sprint注入和bean的自动装配以及Autowired的用法

Cesium高效渲染海量GeoJSON数据的7种优化策略与实战解析 本文深入解析Cesium高效渲染海量GeoJSON数据的7种优化策略,包括瓦片化转换、LOD分级加载、数据简化等关键技术。通过实战案例展示如何解决渲染卡顿问题,提升矢量数据加载性能,实现流畅的60FPS交互体验。特别针对GeoJSON大数据量场景提供完整优化方案。 阅读详情

1、Spring注入

Spring注入常用的有两种方式,第一种是设值注入,第二种是构造注入。

1、设值注入

配置文件
<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
       xsi:schemaLocation="http://www.springframework.org/schema/beans   
           http://www.springframework.org/schema/beans/spring-beans.xsd">  
             
       <bean id="book" class="com.wry.bean.Book"></bean>  
       <bean id="reader" class="com.wry.bean.Reader">
       	   <property name="book" ref="book" />
       </bean>  
</beans>

Book.java

package com.wry.bean;

public class Book {
	public void read(){
		System.out.println("readding book");
	}
}
Reader.java

package com.wry.bean;

public class Reader {
	private Book book;

	public void setBook(Book book) {
		this.book = book;
	}
	
	public void readBook(){
		book.read();
	}
}

测试

public class Demo {

	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml"); 
		Reader reader = (Reader)context.getBean("reader");
		reader.readBook();
	}
}

2、构造器注入

配置文件

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
       xsi:schemaLocation="http://www.springframework.org/schema/beans   
           http://www.springframework.org/schema/beans/spring-beans.xsd">  
             
       <bean id="book" class="com.wry.bean.Book"></bean>  
       <bean id="reader" class="com.wry.bean.Reader">
       	   <constructor-arg name="book" ref="book" />
       </bean>  
</beans>

Book.java

package com.wry.bean;

public class Book {
	public void read(){
		System.out.println("readding book");
	}
}
Reader.java
package com.wry.bean;

public class Reader {
	private Book book;

	public Reader(Book book){
		this.book = book;
	}
	
	public void readBook(){
		book.read();
	}
}
测试
public class Demo {

	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml"); 
		Reader reader = (Reader)context.getBean("reader");
		reader.readBook();
	}
}

2、bean的自动装配

bean的自动装配有三种方式,第一种通过byName,第二种通过byType,第三种通过constructor。

1、通过byName

在Spring的配置文件头部加入default-autowire = “byName”,在xml中定义的bean不要property参数(或者constructor-arg)。
配置文件
<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
       xsi:schemaLocation="http://www.springframework.org/schema/beans   
           http://www.springframework.org/schema/beans/spring-beans.xsd"
           default-autowire = "byName">  
             
       <bean id="book" class="com.wry.bean.Book"></bean>  
       <bean id="reader" class="com.wry.bean.Reader"></bean>  
</beans> 
Book.java
package com.wry.bean;

public class Book {
	public void read(){
		System.out.println("readding book");
	}
}
Reader.java
package com.wry.bean;

public class Reader {
	private Book book;

	public void setBook(Book book) {
		this.book = book;
	}

	public void readBook(){
		book.read();
	}
}
测试
public class Demo {

	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml"); 
		Reader reader = (Reader)context.getBean("reader");
		reader.readBook();
	}
}

2、通过byType

在Spring的配置文件头部加入default-autowire = “byType”,因为是通过类型注入的,所以bean中的id可以改名称,当然也可以bean的id删除。
配置文件
<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
       xsi:schemaLocation="http://www.springframework.org/schema/beans   
           http://www.springframework.org/schema/beans/spring-beans.xsd"
           default-autowire = "byType">  
             
       <bean class="com.wry.bean.Book"></bean>  
       <bean id="reader" class="com.wry.bean.Reader"></bean>  
</beans> 
Book.java
package com.wry.bean;

public class Book {
	public void read(){
		System.out.println("readding book");
	}
}
Reader.java
package com.wry.bean;

public class Reader {
	private Book book;

	public void setBook(Book book) {
		this.book = book;
	}

	public void readBook(){
		book.read();
	}
}
测试
public class Demo {

	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml"); 
		Reader reader = (Reader)context.getBean("reader");
		reader.readBook();
	}
}

3、通过constructor

在Spring的配置文件头部加入default-autowire = “constructor”,因为是通过构造器注入的,所以bean中的id可以改名称,当然也可以bean的id删除。
配置文件
<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
       xsi:schemaLocation="http://www.springframework.org/schema/beans   
           http://www.springframework.org/schema/beans/spring-beans.xsd"
           default-autowire = "constructor">
       <bean class="com.wry.bean.Book"></bean>  
       <bean id="reader" class="com.wry.bean.Reader"></bean>  
</beans>
Book.java
package com.wry.bean;

public class Book {
	public void read(){
		System.out.println("readding book");
	}
}
Reader.java
package com.wry.bean;

public class Reader {
	private Book book;

	public Reader(Book book){
		this.book = book;
	}

	public void readBook(){
		book.read();
	}
}
测试
public class Demo {

	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml"); 
		Reader reader = (Reader)context.getBean("reader");
		reader.readBook();
	}
}

3、Autowired的用法

配置文件统一配置如下:
<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans" 
	   xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
       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-3.0.xsd">
       <context:component-scan base-package="com.wry.bean"></context:component-scan>
</beans>
Book.java代码统一如下:
package com.wry.bean;

import org.springframework.stereotype.Component;

@Component
public class Book {
	public void read(){
		System.out.println("readding book");
	}
}
测试代码统一如下:
public class Demo {

	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml"); 
		Reader reader = (Reader)context.getBean("reader");
		reader.readBook();
	}
}

1、成员变量方式

Reader.java
package com.wry.bean;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class Reader {
	
	@Autowired
	private Book book;

	public void readBook(){
		book.read();
	}
}

2、set方法方式

package com.wry.bean;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class Reader {

	private Book book;

	@Autowired
	public void setBook(Book book) {
		this.book = book;
	}

	public void readBook(){
		book.read();
	}
}

3、构造器方式

package com.wry.bean;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class Reader {

	private Book book;

	@Autowired
	public Reader(Book book){
		this.book = book;
	}

	public void readBook(){
		book.read();
	}
}
Autowired的使用说明
1、默认情况下,如果因找不到合适的bean将会导致autowiring失败抛出异常,可以通过下面的方式避免:
@Component
public class Reader {

	@Autowired(required = false)
	private Book book;

	public void readBook(){
		book.read();
	}
}
2、每个类只能有一个构造器被标记为required = true
3、可以注解那些众所周知的解析依赖性接口,比如:BeanFactory、ApplicationContext、Environment、ResourceLoader、ApplicationEventPublisher、MessageSource等。











【数据集3】高分辨率统计降尺度日值数据集NEX-GDDP的介绍与下载方法 对NEX-GDDP数据集进行介绍和下载说明 阅读详情

相关推荐

ISA-95(S95)标准详解

ISA-95是制造业系统集成的“通用语言”,通过分层模型和信息流规范,打通企业计划层与设备控制层,成为实现数字化工厂的核心标准之一。其与ISA-88的协同应用,可进一步优化生产执行与资源管理的效率。标准,旨在解决企业商业系统(如ERP)与工业控制系统(如MES、SCADA)之间的集成问题。

「东哥说MES」 专注于MES制造执行系统,为你拆解核心架构、功能模块及与ERP/PLC的集成逻辑。提供从入门到精通的系列干货、精选行业报告与实用工具,构建你的数字化知识体系,关注我,用实战经验照亮你的数字化之路。 3737

注解:@Bean 和 @Autowired (Spring框架中的核心模块)

通俗易懂的理解Bean和Autowired

better00001的博客 1686

别再只会按按钮了!用NanoStat开源项目学ESP32硬件设计:BOOT与自动下载电路的避坑指南

本文通过NanoStat开源项目深入解析ESP32硬件设计中BOOT与自动下载电路的关键技术。从启动机制、电路设计陷阱到三极管选型,提供了一套完整的避坑指南和优化方案,帮助开发者提升设计可靠性和烧录效率。特别适合中级开发者学习ESP32硬件设计的精髓。

weixin_30296405的博客 439

@Bean 和@Autowired 组合使用

@Bean 和@Autowired 组合使用

阿涩的博客 4113

USB-Type-C PCB布局布线设计规范

USB Type-C连接器有24个引脚。图1和图2分别显示了USB Type-C插座和插头的插针。母头/母座公头/插头可以很明显看出,插口内的Pin功能相对于中心对称。公头插入母头,无论正反插,引脚功能都完美契合。而且电源VBUS/GND都拥有4个Pin,最大支持5A电流,在保证高速数据传输的同时也提高了电流承载能力。表 1 和表 2 分别汇总了在 USB Type-C 型插座和插头上所使用的信号列表。

weixin_63005522的博客 8279

Ansys Lumerical 启动时出现 Error: Could not connect to Ansys license server specified at 1055@ 的另一种解决办法

昨天在关闭了中之后 就能正常打开 FDTD 了,结果今天想开启出现了同样的报错:我猜测昨天能启动的原因在于关闭之后要重启电脑,并且在重启之后我第一时间打开 lumerical 测试因此端口没有被占用,今天是在电脑启动之后一段时间才打开所以又遇到了端口占用的问题。

qq_51404184的博客 9549

@Bean和@Autowired的区别

在spring项目中经常会用到的两个注解对于初学者会分不清该用哪个

m0_56183421的博客 4203

【Unity大规模RTS/攻城战框架】Large Scale Combat System - RTS Sieges深度解析

本文介绍了Unity专业级大规模RTS战斗框架Large Scale Combat System(LSCS)。该系统通过Job System+Burst技术解决了万人级单位的性能问题,提供完整的RTS操作体系、动态阵型系统、战术AI和攻城战功能。其亮点包括可破坏城门、行走城墙、战术AI配置系统,支持URP渲染管线,适用于Total War风格的大规模兵团对战项目。LSCS不仅提供核心战斗系统,还包含UI、小地图等配套模块,是Unity中少有的专业级RTS解决方案,特别适合需要深度战术玩法和大规模战斗的开发者

2403_88403568的博客 1334

@Bean和@Autowired

spring启动过程中会自动扫描注解,当遇到能产生Bean的注解后,会将注解的类自动实例化(自动扫描及实例化只进行一次),之后将这个类的实例放到springIOC容器中,当需要使用时(自动装配)会从容器中调用这个实例。 能产生Bean的注解有: @Component @Repository @Controller @Service @Configration @Bean 自动装配:...

qq_41727840的博客 1613

动力学约束下的运动规划算法——Hybrid A*算法(附程序实现及详细解释)

本文主要介绍动力学约束下的运动规划算法中非常经典的Hybrid A*算法,大致分为三部分,第一部分是在传统A * 算法的基础上,对Hybrid A * 算法的原理、流程进行理论介绍。第二部分是详细分析 MotionPlanning运动规划库中Hybrid A * 算法的源码,进一步深入对Hybrid A * 算法的具体细节 进行理解。 第三部分是结合前面第一部分的理论和第二部分的详细源码,对Hybrid A * 算法的流程进行综合的概括总结。

慕羽★的博客 1万+

c#算法(5)—最小二乘法(二次曲线拟合)

最小二乘法——二次曲线拟合

qq_34059233的博客 1659

@Bean 和 @Autowired

@Bean 和 @Autowired 做了两件完全不同的事情: @Bean 告诉 Spring:“这是这个类的一个实例,请保留它,并在我请求时将它还给我”。 @Autowired 说:“请给我一个这个类的实例,例如,一个我之前用@Bean注释创建的实例”。 @SpringBootApplication public class Application { @Autowired Boo...

金华松软的我 1万+

uni-app - 最新实现将 uniapp 项目打包编译为 H5 网站,并上传部署到 web 服务器进行发布预览(从打包到发布完整流程步骤,Hbuilder 编译打包 h5 发行到 web 服务器)

uniapp,打包h5,打包编译H5网站,怎么打包h5,uniapp打包成H5部署到服务器教程,uniapp打包H5页面发布到服务器,uniapp开发,打包成H5部署到服务器_uniapp打包h5,uniapp如何打包h5项目,怎么把项目打包成H5,uniapp如何打包成H5并且放到web端上,打包成h5部署到服务器的步骤,打包发行到h5报错怎么办,如何将uniapp打包的h5网站放到服务器上,编译打包后怎么放到web服务器中,如何将uniapp开发的H5打包并部署到服务器,部署使用uniapp开发的h5

🏆 前端领域优质创作者 1万+

Sprint set自动注入 构造器注入 注解

1、set自动注入bean有个属性 autowire autowire”byType” 自己去找对应的注入。也就是把原来的<bean id="s1" class="bean.Student"> <!-- 利用set注入 --> <property name="c" ref="p1" ></property> <property name="p" ref="p2"></pro

Recar的博客 2975

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Spring按类型自动装配注入数组、集合、Map

1, 如果是数组,则获取数组元素类型,查找匹配该类型的所有bean,返回一个这些bean的数组; 2, 如果该类可赋给Collection,并且是一个接口,则获取集合元素类型,查找匹配该类型的所有bean,返回一个这些bean的集合; 3, 如果该类型是Map(注意是type == Map.class),且key是String类型,则获取Map的value的类型,查找匹配该类型的所有b...

sinat_36454672的博客 848

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Sprint 中@Autowired 和@Resource 注解的区别

Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。   @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。@Resource有两个属性是比较重要的,分是nam

courage89的专栏 1037

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Sprint framework Day08:Spring的@Autowired注解

Autowired 注解默认是根据类型注入(只有一个实现类),如果存在多个实现类的时候,则是根据参数名称进行注入,如果存在多个实现类并且参数名称不匹配,则会引发异常此时应该结合 @Qualifier 来指定来注入的 bean,但是这个注解只能用在普通的方法上也可以使用 @Primary 注解声明在某个类上实现,这样 spring 就会优先注入这个实现类从 spring4.2 版本开始,如果使用的是构造方法注入,可以不需要任何的注入注解,默认就按照类型注入。

zhiqiuqiu2的博客 189

spring类注入异常

代码报错:org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'xxxxImpl' is expected to be of type 'com.xxx.xxxImpl' but was actually of type 'com.sun.proxy.$Proxy62' 直接Autowired...

优快云_Ty的博客 365

spring04:注解使用

💕💕💕。

lenard-lhz的博客 629

SprintBoot中如何构造Bean&原理分析

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33670786的博客 241

JavaSpring全面总结

Spring超详细总结

weixin_44096821的博客 1698

springBoot将Service实现类交给spring容器管理的两种方法

方法一: 在类名上面添加@Service注解 方法二: 添加配置文件,配置文件里添加添加方法如下的方法,并加@Bean注解 springBoot将(Service实现)类交给spring容器管理的目的: 调用这个对象的时候可以使用注解@Autowired或者@Resource直接注入 ...

木泽锐 1830

Spring02

1 XML和注解的区别 1.1XML配置: XML配置方式进一步降低了耦合,使得应用更加容易扩展,即使对配置文件进一步修改也不需要工程进行修改和重新编译。 在处理大的业务量的时候,用XML配置应该更加好一些。因为XML更加清晰的表明了各个对象之间的关系,各个业务类之间的调用。同时spring的相关配置也能一目了然。 缺点有: 配置文件读取和解析需要花费一定的时间,配置文件过多的时候难以管理,无法对配置的正确性进行校验,增加了测试难度。 1.2 annotation配置 优点有: 在class文件中,可以降低

biguo_的博客 143

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

技术债务与认知停滞:程序员如何避免被遗留系统困住

在软件工程领域,技术债务是一个经典概念,指为短期利益而在代码或架构上妥协,导致未来维护成本增加的状况。其原理在于,随着系统复杂度增长和外部技术范式转移,未偿还的债务会像利滚利一样阻碍系统演进。解决技术债务的核心技术价值在于提升系统的可维护性、可扩展性和团队交付效率。在应用场景上,无论是单体应用现代化改造、微服务拆分,还是应对云原生和AI工程化转型,管理技术债务都是关键工程实践。本文以技术债务和认知闭环为切入点,通过具体代码示例,详细阐述了如何通过渐进式重构、抽象分支等模式,系统性地识别、偿还债务,并建立持续

weixin_30480075的博客 400

@Autowired和@bean注解区别

在这个综合示例中,UserService 被声明为一个 @Bean 并在 AppConfig 中定义,而 UserController 使用 @Autowired 自动注入了 UserService。在这个示例中,AppConfig 类是一个配置类,userService 方法用 @Bean 注解标记,表示返回的 UserService 实例将被Spring容器管理。@Autowired 和 @Bean 是Spring框架中的两个重要注解,用于管理和配置Bean,但它们的作用和使用场景有所不同。

qq_45789906的博客 970
上一篇: 快速排序
下一篇: Spring中AOP的Introductions使用介绍
hardor
博客等级 码龄14年 7粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值