一、spring介紹
1.三層架構中spring位置
2.spring一站式框架
# 正正是因為spring框架性質是屬於容器性質的.
容器中裝什麼物件就有什麼功能.所以可以一站式.
不僅不排斥其他框架,還能幫其他框架管理物件.
aop支援、ioc想法、spring jdbc、aop 事務、junit 測試支援
二、spring搭建
1.導包
日誌套件:com.springsource.org.apache.commons.logging-1.1.1.jar
#可選:com.springsource.org.apache.log4j-1.2.15.jar(舊版要導入的,導入可以保證一定能運作)
2.建立一個物件
public class User {private String name;private Integer age; public String getName() {return name; }public void setName(String name) {this.name = name; }public Integer getAge() {return age; }public void setAge(Integer age) {this.age = age; } }
3.書寫設定註冊物件到容器
位置任意(建議放到src下)
設定檔名任意(建議applicationContext.xml)
導入約束:
然後編輯applicationContext.xml
## 然後編輯applicationContext.xml
後點選add,導入xsi
加入xsi後,再點選add,指定一個新的命名空間
# 接著選擇剛剛導入的xsd
點擊OK,回到剛剛的頁面,設定命名空間的名字(可以直接複製location Hint的前半段),prefix空著即可
點選OK,顯示為下面的介面,就表示導入成功了。
<?xml version="1.0" encoding="UTF-8"?><beans><!-- 将User对象交给spring容器管理 --><bean></bean></beans>
#
@Testpublic void fun1(){ //1 创建容器对象ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");//2 向容器"要"user对象User u = (User) ac.getBean("user");//3 打印user对象 System.out.println(u); }
# 4.程式碼測試
# <!-- 将User对象交给spring容器管理 --><!-- Bean元素:使用该元素描述需要spring容器管理的对象
class属性:被管理对象的完整类名.
name属性:给被管理的对象起个名字.获得对象时根据该名称获得对象.
可以重复.可以使用特殊字符.
id属性: 与name属性一模一样.
名称不可重复.不能使用特殊字符.
结论: 尽量使用name属性. --><bean></bean>
# 4.程式碼測試
#
<bean></bean>

1.思想
1.1 ioc
#
di2.applicationContext&BeanFactory
2.1 BeanFactory介面較為單一;
BeanFactory介面實作類別的容器。特點是每次在取得物件時才會建立物件。
2.2 ApplicationContext
每次容器啟動時就會建立容器中配置的所有物件.並提供更多功能。
從類別路徑下載入設定檔:ClassPathXmlApplicationContext
<!-- 创建方式1:空参构造创建(重点) --><bean></bean> <!-- 创建方式2:静态工厂创建 (了解) 调用UserFactory的createUser方法创建名为user2的对象.放入容器 --><bean></bean><!-- 创建方式3:实例工厂创建 (了解) 调用UserFactory对象的createUser2方法创建名为user3的对象.放入容器 --><bean></bean><bean></bean>########################################################
2.Bean元素进阶
2.1 scope属性
singleton(默认值):单例对象.被标识为单例的对象在spring容器中只会存在一个实例
prototype:多例原型.被标识为多例的对象,每次再获得才会创建.每次创建都是新的对象.整合struts2时,ActionBean必须配置为多例的.
request:web环境下.对象与request生命周期一致.
session:web环境下,对象与session生命周期一致.
2.2 生命周期属性
init-method:配置一个方法作为生命周期初始化方法.spring会在对象创建之后立即调用.
destory-method:配置一个方法作为生命周期的销毁方法.spring容器在关闭并销毁所有容器中的对象之前调用.
<bean></bean>
3.spring创建对象的方式
<!-- 创建方式1:空参构造创建(重点) --><bean></bean> <!-- 创建方式2:静态工厂创建 (了解) 调用UserFactory的createUser方法创建名为user2的对象.放入容器 --><bean></bean><!-- 创建方式3:实例工厂创建 (了解) 调用UserFactory对象的createUser2方法创建名为user3的对象.放入容器 --><bean></bean><bean></bean>
4.spring的分模块配置
<!-- 导入其他spring配置文件 --><import></import>
五、spring属性注入
1.注入方式
1.1 set方法注入(重中之重)
<!-- set方式注入: --><bean><!--值类型注入: 为User对象中名为name的属性注入tom作为值 --><property></property><property></property><!-- 引用类型注入: 为car属性注入下方配置的car对象 --><property></property></bean><!-- 将car对象配置到容器中 --><bean><property></property><property></property></bean>
1.2 构造函数注入(重点)
<!-- 构造函数注入 --><bean><!-- name属性: 构造函数的参数名 --><!-- index属性: 构造函数的参数索引 --><!-- type属性: 构造函数的参数类型--><constructor-arg></constructor-arg><constructor-arg></constructor-arg></bean>
1.3 p名称空间注入
<!-- p名称空间注入, 走set方法 1.导入P名称空间 xmlns:p="http://www.springframework.org/schema/p" 2.使用p:属性完成注入 |-值类型: p:属性名="值" |-对象类型: p:属性名-ref="bean名称" --><bean></bean>
1.4 spel注入
<!-- spel注入: spring Expression Language sping表达式语言 --><bean><property></property><property></property><property></property></bean>
2.复杂类型注入
2.1 数组
<!-- 如果数组中只准备注入一个值(对象),直接使用value|ref即可 <property name="arr" value="tom" ></property>--><!-- array注入,多个元素注入 --><property><array><value>tom</value><value>jerry</value><ref></ref></array></property>
2.2 List
<!-- 如果List中只准备注入一个值(对象),直接使用value|ref即可 <property name="list" value="jack" ></property>--><property><list><value>jack</value><value>rose</value><ref></ref></list></property>
2.3 Map
<!-- map类型注入 --><property><map><entry></entry><entry></entry><entry></entry></map> </property>
2.4 Properties
<!-- prperties 类型注入 --><property><props><prop>com.jdbc.mysql.Driver</prop><prop>root</prop><prop>1234</prop></props></property>
六、练习:将spring容器应用到struts-crm项目
管理Service对象以及Dao对象
1.导包(4+2),再加1
再加1指的是:spring-web-4.2.4.RELEASE.jar(因为要用到web的监听)
2.将Service对象以及Dao对象配置到spring容器
<?xml version="1.0" encoding="UTF-8"?><beans><!-- 配置Dao --><bean></bean><bean></bean><bean></bean><!-- 配置Service --><bean><property></property></bean><bean><property></property><property></property></bean><bean><property></property></bean></beans>
3.在Action中获得容器中的Service对象
3.1 web.xml中配置容器随项目启动
<!-- 可以让spring容器随项目的启动而创建,随项目的关闭而销毁 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 指定加载spring配置文件的位置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
3.2 在Action中获得容器
//获得spring容器=>从Application域获得即可 //1 获得servletContext对象ServletContext sc = ServletActionContext.getServletContext();//2.从Sc中获得ac容器WebApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(sc);//3.从容器中获得CustomerServiceUserService us = (UserService) ac.getBean("userService");
4.管理容器在项目中的生命周期
下面错误的示范.导致每次请求都创建新的容器
//创建容器对象ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");//获得cs(customerService对象)CustomerService cs = (CustomerService) ac.getBean("customerService");
以上是JAVAEE—spring的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

元宇宙是利用技术与现实世界映射与交互的虚幻世界。解析1元宇宙【Metaverse】是充分利用技术方式进行链接与创造的,与现实世界映射与交互的虚幻世界,拥有最新型社会发展体制的数据生活空间。2元宇宙本质上是对现实世界的虚拟技术、数字化过程,需要对內容生产、经济系统、客户体验和实体世界內容等进行大量改造。3但元宇宙的发展趋势是循序渐进的,是在共享的基础设施、标准规定及协议的支撑下,由许多工具、平台不断结合、进化而最终成型。补充:元宇宙是什么构成的1元宇宙由Meta和Verse构成,Meta是超越,V

在如今快捷的生活,为了提高工作效率,快捷键是必不可少的工作需求。快捷键是指按键或按键组合,可提供另一种方式来执行通常使用鼠标执行的操作。那么edge快捷键有哪些呢?edge快捷键的功能又有哪些呢?下面小编整理了一份edge快捷键的介绍,感兴趣的朋友们快来看看吧!Ctrl+D:将当前页面添加到收藏夹或阅读列表Ctrl+E:在地址栏中执行搜索查询Ctrl+F:在页面上查找Ctrl+H:打开历史记录面板Ctrl+G:打开阅读列表面板Ctrl+I:打开收藏夹列表面板(测试好像不起作用)Ctrl+J:打开

Gunicorn的基本概念和作用Gunicorn是一个用于在PythonWeb应用程序中运行WSGI服务器的工具。WSGI(Web服务器网关接口)是Python语言定义的一种规范,用于定义Web服务器与Web应用程序之间的通信接口。Gunicorn通过实现WSGI规范,使得PythonWeb应用程序可以被部署和运行在生产环境中。Gunicorn的作用是作

Java语言是当今世界上最常用的面向对象编程语言之一。类的概念是面向对象语言中最重要的特性之一。一个类就像一个对象的蓝图。例如,当我们想要建造一座房子时,我们首先创建一份房子的蓝图,换句话说,我们创建一个显示我们将如何建造房子的计划。根据这个计划,我们可以建造许多房子。同样地,使用类,我们可以创建许多对象。类是创建许多对象的蓝图,其中对象是真实世界的实体,如汽车、自行车、笔等。一个类具有所有对象的特征,而对象具有这些特征的值。在本文中,我们将使用类的概念编写一个Java程序,以找到矩形的周长和面

了解SpringMVC的关键特性:掌握这些重要的概念,需要具体代码示例SpringMVC是一种基于Java的Web应用开发框架,它通过模型-视图-控制器(MVC)的架构模式来帮助开发人员构建灵活可扩展的Web应用程序。了解和掌握SpringMVC的关键特性将使我们能够更加有效地开发和管理我们的Web应用程序。本文将介绍一些SpringMVC的重要概念

OracleRAC(RealApplicationClusters)简介及核心概念随着企业数据量的不断增长和对高可用性、高性能的需求日益突出,数据库集群技术变得越来越重要。OracleRAC(RealApplicationClusters)就是为了解决这一问题而设计的。OracleRAC是Oracle公司推出的一种高可用性、高性能的集群数据库解

使用Docker容器部署JavaEE应用程序:创建Dockerfile定义镜像、构建镜像、运行容器并映射端口,然后在浏览器中访问应用程序。示例JavaEE应用程序:RESTAPI与数据库交互,通过Docker部署后可在localhost访问。

java和javaee在定义和用途、组件和功能、平台和环境、应用范围和开发模式等。详细介绍:1、定义和用途,Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出,Java具有跨平台、可移植性、安全性和简单性等特点,广泛用于开发各种应用程序,而Java EE是Java平台的企业级扩展,旨在开发和部署大规模、可扩展、可靠的企业级应用程序等等。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器