Spring四大注入方式,set注入、构造函数注入、p名称空间注入、spel注入

2024-04-16 16:32

本文主要是介绍Spring四大注入方式,set注入、构造函数注入、p名称空间注入、spel注入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简单解释一下注入:就是给对象赋值(直接给出代码,解释全部在代码里面 )

前提是你已经配置好了spring的环境,如果还不会配置可以去看我的入门spring配置
https://blog.csdn.net/tomwildboar/article/details/80913681


1、所用到的实体类

    1-1 car类

package spring.bean;public class Car {private String color;private String name;public String getColor() {return color;}public void setColor(String color) {this.color = color;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Car [color=" + color + ", name=" + name + "]";}}

    1-2 User类

package spring.bean;public class User {private String name;private int age;private Car car;public User() {super();}public User(String name, Car car) {this.name = name;this.car = car;}public Car getCar() {return car;}public void setCar(Car car) {this.car = car;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User [name=" + name + ", age=" + age + ", car=" + car + "]";}	
}


2、applicationContext.xml  (核心)    

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "><!--beans 第三行是如果要使用p名称空间才需要加上  --><!-- 如果看不到bena中的基本配置,可以去看我的spring入门配置,里面有详解 --><!-- set方式注入 --><bean name="user" class="spring.bean.User"><!-- 值类型注入 : 为user对象中名为name的属性注入tom作为值 --><property name="name" value="tom"></property><property name="age" value="19"></property><!-- 引用类型注入 :  为car属性注入下面的car对象 --><property name="car" ref="car"></property></bean><!-- 将car对象配置到容器中 --><bean name="car" class="spring.bean.Car"><property name="name" value="大众"></property><property name="color" value="黄色"></property></bean><!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- 构造函数注入  (必须提供相对应的构造方法) --><bean name="user2" class="spring.bean.User"><!-- name属性:构造函数的参数名index属性:构造函数的参数索引type属性:构造函数的参数类型index:主要是解决这样的情况public User(String name, Car car) {this.name = name;this.car = car;}public User(Car car, String name) {this.name = name;this.car = car;}type:主要是解决这样的情况public User(String name, Car car) {this.name = name;this.car = car;}public User(Integer name, Car car) {this.car = car;}--><constructor-arg name="name" value="jerry" index="" type=""></constructor-arg><constructor-arg name="car" ref="car" index=""></constructor-arg></bean><!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --><!-- p名称空间注入值类型:p : 属性名 = "值"对象类型: p : 属性名-ref="bean名称"	--><bean name="user3" class="spring.bean.User" p:name="jack" p:age="18" p:car-ref="car"></bean><!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --><!-- spel注入: spring Expression Language     spring表达式语言--><bean name="user4" class="spring.bean.User" ><property name="name" value="#{user.name}"></property><property name="age" value="#{user3.age}"></property><property name="car" ref="car"></property></bean></beans>


3、Demo测试

package spring.injection;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import spring.bean.User;public class Demo {@Testpublic void fun1(){ApplicationContext ac = new ClassPathXmlApplicationContext("spring/injection/applicationContext.xml");User u = (User) ac.getBean("user");		System.out.println(u);}//构造函数注入@Testpublic void fun2(){ApplicationContext ac = new ClassPathXmlApplicationContext("spring/injection/applicationContext.xml");User u = (User) ac.getBean("user2");		System.out.println(u);}//p名称空间注入 @Testpublic void fun3(){ApplicationContext ac = new ClassPathXmlApplicationContext("spring/injection/applicationContext.xml");	User u = (User) ac.getBean("user3");	System.out.println(u);		}//spel注入@Testpublic void fun4(){ApplicationContext ac = new ClassPathXmlApplicationContext("spring/injection/applicationContext.xml");		User u = (User) ac.getBean("user4");System.out.println(u);}}	

代码亲测有效

这篇关于Spring四大注入方式,set注入、构造函数注入、p名称空间注入、spel注入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/909316

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只