【从零开始学Spring笔记】Spring配置
2020-04-08 16:13:45来源:博客园 阅读 ()
【从零开始学Spring笔记】Spring配置
大家可以关注作者的账号,关注从零开始学Spring笔记文集。也可以根据目录前往作者的博客园博客进行学习。本片文件将基于黑马程序员就业班视频进行学习以及资料的分享,并记录笔记和自己的看法。欢迎大家一起学习和讨论。
【从零开始学Spring笔记】Spring学习路线
XML提示的配置
第一步:Window->Preference->xml catlog->User Specified Entries->add的顺序进入第二步界面
第二步:按照图示步骤修改
操作1:
找到之前配置文件中的约束最后一行网址,赋值
http://www.springframework.org/schema/beans/spring-beans.xsd
操作2:安装路径
spring-framework-4.2.4.RELEASE\schema\beans
先解压jar包,找到这个,最后选择4.2版本
操作3:选择schema location
第三步:点击OK,返回。点击Apply and Close
配置成功后,在编写xml文件时,就有相应的提示了。
Bean的相关的配置
标签的id和name的配置
id :使用了约束中的唯一约束。里面不能出现特殊字符的。
name :没有使用约束中的唯一约束(理论上可以出现重复的,但是实际开发不能出现的)。里面可以出现特殊字符。
Spring和Struts1框架整合的时候,Struts1名称前必须使用 “/”,所以使用Spring整合时使用name,例如
Bean的生命周期的配置(了解)
init-method :Bean被初始化的时候执行的方法
destroy-method :Bean被销毁的时候执行的方法(Bean是单例创建,工厂关闭)
在配置文件中输入init-method="setup" destroy-method="destroy"
即可,在class指定的类中建立setup()和destory()方法,setup()在该类被实例化时调用,destory()在该类被销毁的时候调用。方法名可以自定义
Bean的作用范围的配置(重点)
scope | Bean的作用范围 |
---|---|
singleton | 默认的,Spring会采用单例模式创建这个对象。 |
prototype | 多例模式。(Struts2和Spring整合一定会用到,Struts2是多例) |
request | 应用在web项目中,Spring创建这个类以后,将这个类存入到request范围中。 |
session | 应用在web项目中,Spring创建这个类以后,将这个类存入到session范围中。 |
globalsession | 应用在web项目中,必须在porlet环境(登录百度,再登录百度的子网站,例如百度地图,就不需要登陆了)下使用。但是如果没有这种环境,相对于session。 |
在配置文件中输入scope ="singleton"
即可,实现作用范围的配置,默认时单例。单例即只被实例一次,无论调用多少次,命名不同也是同一个实例。多例即调用一次实例一次,每个实例均不同。
Spring的Bean的实例化方式(了解)
Bean已经都交给Spring管理,Spring创建这些类的时候,有几种方式:
1. 无参构造方法的方式(默认)
编写类
package com.tyust.spring.demo04;
public class Bean1 {
public Bean1() {
super();
System.out.println("Bean1的无参构造方法执行了...");
}
}
编写配置文件
<!-- 无参构造 -->
<bean id="1" class="com.tyust.spring.demo04.Bean1"></bean>
编写测试方法
private static void mothed1() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationcontext.xml");
Bean1 b = (Bean1) applicationContext.getBean("1");
}
输出结果
2.静态工厂实例化的方式
创建类并且编写Bean2的静态工厂
package com.tyust.spring.demo04;
public class Bean2 {
}
-------------------------------------------------------------------------------------------
package com.tyust.spring.demo04;
public class Bean2Factory {
public static Bean2 createBean2() {
System.out.println("Bean2Factory中的方法执行了...");
return new Bean2();
}
}
编写配置文件
<!--静态工厂实例化-->
<bean id="2" class="com.tyust.spring.demo04.Bean2Factory" factory-method="createBean2"></bean>
编写测试方法
private static void mothed2() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationcontext.xml");
Bean2 b2 = (Bean2) applicationContext.getBean("2");
System.out.println(b2);
}
输出结果
3.实例工厂实例化的方式
创建类并且编写Bean2的实例化工厂
package com.tyust.spring.demo04;
public class Bean3 {
}
-------------------------------------------------------------------------------------------
package com.tyust.spring.demo04;
public class Bean3Factory {
public Bean3 createBean3() {
System.out.println("Bean3Factory中的方法执行了...");
return new Bean3();
}
}
编写配置文件
<!--实例工厂实例化 -->
<bean id="3" class="com.tyust.spring.demo04.Bean3Factory" ></bean>
<bean id="4" factory-bean="3" factory-method="createBean3"></bean>
编写测试方法
public static void mothed3(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean3 b3 = (Bean3) applicationContext.getBean("4");
System.out.println(b3);
}
输出结果
总结:因为ApplicationContext在调用时就会实例化,所静态方法可以直接通过工厂方法调用,因为静态方法是不属于对象的。而普通实例化方法,必须有对象才能调用,所有在配置文件时,必须先创建一个对象才能实例化。
Spring的属性注入
1.构造方法的方式的属性注入
2.Set方法的方式的属性注入
示例
<!-- 构造方法的属性注入 -->
<bean id="car" class="com.tyust.spring.demo03.Car">
<constructor-arg name="name" value="宝马"></constructor-arg>
<constructor-arg name="price" value="80w"></constructor-arg>
</bean>
<!-- Set方法的属性注入 -->
<bean id="car2" class="com.tyust.spring.demo03.Car2">
<property name="name" value="奔驰"></property>
<property name="price" value="100w"></property>
</bean>
<!-- Set方法设置对象类型的属性 -->
<bean id="employee" class="com.tyust.spring.demo03.Employee">
<property name="name" value="奔驰"></property>
<property name="car2" ref="car2"></property>
</bean>
输出结果
总结
构造方法用constructor-arg,set方法用property。普通类型用value,其他类型用ref。
3.p名称空间的属性注入(Spring2.5以后)
通过引入p名称空间完成属性的注入:
写法:
普通属性 p:属性名=”值”
对象属性 p:属性名-ref=”值”
引入p名称空间,如图所示加入下面这行代码
xmlns:p="http://www.springframework.org/schema/p"
示例,将上例修改
<!-- Set方法的属性注入 -->
<bean id="car2" class="com.tyust.spring.demo03.Car2" p:name = "路虎" p:price = "50w">
<!-- <property name="name" value="奔驰"></property>
<property name="price" value="100w"></property> -->
</bean>
<!-- Set方法设置对象类型的属性 -->
<bean id="employee" class="com.tyust.spring.demo03.Employee" p:name = "王总" p:car2-ref = "car2">
<!-- <property name="name" value="奔驰"></property>
<property name="car2" ref="car2"></property>
-->
</bean>
输出结果
4.SpEL的属性注入(Spring3.0以后)
SpEL:Spring Expression Language,Spring的表达式语言。
语法:#{SpEL}
示例,将上例修改
<bean id="car2" class="com.tyust.spring.demo03.Car2">
<property name="name" value="#{'凯迪拉克'}"></property>
<property name="price" value="#{'25w'}"></property>
</bean>
<bean id="employee" class="com.tyust.spring.demo03.Employee">
<property name="name" value="#{'李总'}"></property>
<property name="car2" value="#{car2}"></property>
</bean>
输出结果
总结SpEL可以输出更多内容,包括一些类,以及方法的调用和一些计算。
集合属性的注入
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
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="collectionBean" class="com.tyust.spring.demo05.CollectionBean">
<property name="arrs">
<array>
<value>刘备</value>
<value>张飞</value>
<value>关羽</value>
</array>
</property>
<property name="list">
<list>
<value>曹操</value>
<value>曹丕</value>
<value>曹植</value>
</list>
</property>
<property name="set">
<set>
<value>孙坚</value>
<value>孙策</value>
<value>孙权</value>
</set>
</property>
<property name="map">
<map>
<entry key="诸葛亮" value="黄月英"></entry>
<entry key="周瑜" value="小乔"></entry>
<entry key="吕布" value="貂蝉"></entry>
</map>
</property>
</bean>
</beans>
输出结果
?ArrayList类的注入问题
分模块配置
1.在加载配置文件的时候,加载多个
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationcontext.xml","applicationcontext2.xml");
2.在一个配置文件中引入多个配置文件
<import resource= "applicationcontext2.xml"/>
原文链接:https://www.cnblogs.com/zllk/p/12663822.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Spring系列.ApplicationContext接口 2020-06-11
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- 给你一份超详细 Spring Boot 知识清单 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash