day13_spring环境配置及bean使用
1.spring简介:
整合现有的技术框架。是一个轻量级的控制反转(IOC)和面向切面编程的框架(AOP),支持事务的处理和对框架整合的支持
DI(控制反转)就是IOC(依赖注入)的具体实现方式
弊端:配置十分繁琐!
官方下载地址: http://repo.spring.io/release/org/springframework/spring
GitHub地址:GitHub - spring-projects/spring-framework: Spring Framework
spring boot是快速开发的脚手架,微服务,约定大于配置
spring cloud是基于spring boot实现的
2.开发的基本配置
* 1.创建beans.xml spring的配置文件
<?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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd">
<!--使用spring创建对象,在spring中这些都称为bean-->
<!-- 必须有无参构造才能用下面这个方法-->
<!-- <bean id="hello" class="com.yang.pojo.Hello">
<!– name为普通属性用value,其他的用ref–><property name="str" value="Spring"/></bean>--><!--通过下标获取值--><bean id="hello" class="com.yang.pojo.Hello"><constructor-arg index="0" value="spring学习"/></bean><!-- 若多个参数都是string类型,就不能区分要用哪个 - 不推荐使用--><bean id="hello" class="com.yang.pojo.Hello"><constructor-arg type="java.lang.String" value="zhangsan"/></bean></beans>
2.主程序中获取spring上下文
public static void main(String[] args) {//获取spring的上下文,此时beans.xml中的bean都被实例化了,getBean只是获取已经实例化的其中一个beanApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");//对象现在都在spring中的bean管理了Hello hello = (Hello) context.getBean("hello");System.out.println(hello);}
3.IOC创建对象的四种方式
第一种必须要有无参构造,后面三种都是使用无参构造创建对象
1.常用的方式(默认),类中必须要有无参构造方法,否则报错!
<!-- 必须有无参构造才能用下面这个方法--><!-- name为普通属性用value,其他的用ref--><bean id="hello" class="com.yang.pojo.Hello"><property name="str" value="Spring"/></bean>
有dao,service三层结构的写法如下
<!--使用spring创建对象,在spring中这些都称为beanref:引用spring容器中创建好的对象value:具体的值,基本数据类型
--><bean id="userDao" class="com.yang.dao.UserDaoImpl"/><bean id="userService" class="com.yang.service.UserServiceImpl"><property name="userDao" ref="userDao"/></bean>
2.使用有参构造创建对象
1.下标赋值法
<!--通过下标获取值 下标指的是有参构造中参数的下标,而且必须要把有参构造中的参数写完整--><bean id="hello" class="com.yang.pojo.Hello"><constructor-arg index="0" value="spring学习"/><constructor-arg index="1" value="23"/></bean>
2.属性类型赋值法,若是多个属性都是同一类型,就不好区分了----不推荐使用
<!-- 若多个参数都是string类型,就不能区分要用哪个 - 不推荐使用--><bean id="hello" class="com.yang.pojo.Hello"><constructor-arg type="java.lang.String" value="zhangsan"/></bean>
3.参数名赋值
<bean id="hello" class="com.yang.pojo.Hello">
<!-- <constructor-arg type="java.lang.String" value="zhangsan"/>--><constructor-arg name="str" value="nihao"/></bean>
4.spring配置文档学习
1.alise 别名 : 同bean标签下的name属性
<!--针对bean中的id取的别名--> <alias name="hello" alias="newHello"/>
2.bean的配置
<!--通过下标获取值 下标指的是有参构造中参数的下标,而且必须要把有参构造中的参数写完整autowire:自动导入scope:作用域(单例模式)id:bean的唯一标识符,相当于对象名class:bean对象所对应的全限定名。包名+类型,如下name:取别名,可以同时取多个,可以用空格,逗号分号等来区分,如下--><bean id="hello" class="com.yang.pojo.Hello" name="he1 he2,he3;he4"> <constructor-arg index="0" value="spring学习"/> <constructor-arg index="1" value="23"/></bean>
3.import
用于团队开发,可将多个文件导入合并成一个,注意bean不要重复!
<import resource="beans.xml"/>
##### 4.各种类型属性的依赖注入
<?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 https://www.springframework.org/schema/beans/spring-beans.xsd"> <import resource="beans.xml"/> <bean id="addre" class="com.yang.pojo.Address"> <property name="address" value="河南"/> </bean> <bean id="student" class="com.yang.pojo.Student"> <property name="name" value="zhangqian"/> <!-- 基本属性字段--> <property name="address" ref="addre"/> <!-- 实体类--> <property name="hobbies" > <!-- list类型字段--> <list> <value>编程</value> <value>舞蹈</value> <value>歌曲</value> </list> </property> <property name="games" > <!-- set类型--> <set> <value>LOL</value> <value>BOB</value> <value>COC</value> </set> </property> <property name="card" > <!-- map类型--> <map> <entry key="身份证" value="422535454"/> <entry key="银行卡" value="2324"/> </map> </property> <property name="books" > <!-- 数组类型--> <array> <value>红楼梦</value> <value>西游记</value> <value>水浒传</value> </array> </property> <property name="wife" > <!-- string类型--> <null/> <!--值为null的时候的写法--> </property><!-- <property name="wife" value=""/>--> <property name="info" > <!-- Properties类型--> <props merge="true"> <prop key="学号">12345</prop> <prop key="姓名">张三</prop> <prop key="性别">男</prop> </props> </property> </bean></beans>
public class Student { private String name; private Address address; private List<String> hobbies; private Map<String,String> card; private String[] books; private Set<String> games; private String wife; private Properties info; //address是对象,要想获取对象值,必须.toString()方法,同时Address类中也要重写.toString()方法 @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", address=" + address.toString() + ", hobbies=" + hobbies + ", card=" + card + ", books=" + Arrays.toString(books) + ", games=" + games + ", wife='" + wife + '\'' + ", info=" + info + '}'; } //省略getter,setter方法}
总结依赖注入的三种方式:
1. 构造器注入2. set方式注入(**重点!**),即上面通过属性创建bean的方式 * 依赖:bean对象的创建依赖于容器 * 注入:bean对象中的所有属性都由容器来注入3. 标签注入,即p标签和c标签注入,扩展方式
5.命名空间
p命名空间和c命名空间
p命名空间: 属性命名空间,即property简写.必须有无参构造
先引入头文件
xmlns:p="http://www.springframework.org/schema/p"
<!-- 或者用p标签:先引用p标签路径--> <bean id="hello" class="com.yang.pojo.Hello" p:age="2" p:name="sansan"/>
c命名空间:构造器命名空间,即constructor简写.必须要有有参构造
先引入头文件
xmlns:c="http://www.springframework.org/schema/c"
<bean id="hello1" class="com.yang.pojo.Hello" c:age="1" c:name="lisi"/>
day13_spring环境配置及bean使用相关推荐
- Java基础学习_01 概述及环境配置
一.概述 1.Java语言平台版本 1.1J2SE(Java 2 Platform Standard Edition)标准版 为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可 ...
- linux下织梦cms安装环境配置文件,Mac本地环境配置以及安装织梦CMS,增加新的坑解决办法...
Mac上其实已经自带了Apache和PHP,只是默认关闭的.开启一下就行了. Apache配置 apache已经自带了,只需在"终端"输入命令开启下就行了. 开启apache ...
- dubbo yml配置_Spring boot 的profile功能如何实现多环境配置自动切换
通常服务端应用开发需要经过以下几个流程: 开发 -> 测试 -> RC验证 -> 上线 这就涉及到四个不同的环境,开发环境.测试环境.RC环境以及生产环境,为了避免不同环境之间相互干 ...
- spring的环境配置(beans profile=xxx)
研究spring3的时候发现一个很好用的特性:环境配置(spring2是否有此特性未知) 官方示例代码如下: <!--app-config.xml--><beansxmlns=&qu ...
- springboot多环境配置_编辑 SpringBoot|第五章:多环境配置
多环境配置 在开发应用时,常用部署的应用是多个的,比如:开发.测试.联调.生产等不同的应用环境,这些应用环境都对应不同的配置项,比如swagger一般上在生产时是关闭的:不同环境数据库地址.端口号等都 ...
- Shiro笔记(二)Shiro集成SpringMVC的环境配置
0.pom文件引入 <!-- SECURITY begin --><dependency><groupId>org.apache.shiro</groupId ...
- Springboot一:多环境配置、热部署、单元测试 MockMvc
1.Spring Boot Profile 多环境配置 我们在开发项目时,通常同一套程序会被发布到几个不同的环境,比如:开发.测试.生产等.其中每个环境的数据库地址.redis地 址.服务器端口等等配 ...
- springboot概述、自动转配原理、yaml语法、多环境配置及文件位置
SpringBoot-1 概述 什么是Spring Spring是一个开源框架,2003年兴起的一个轻量级的Java开发框架,作者:RodJohnson. Spring是为下解决企业级应用开发的复杂性 ...
- Spring MVC 学习总结(一)——MVC概要与环境配置 转载自【张果】博客
Spring MVC 学习总结(一)--MVC概要与环境配置 目录 一.MVC概要 二.Spring MVC介绍 三.第一个Spring MVC 项目:Hello World 3.1.通过Maven新 ...
最新文章
- python培训班一般多少钱-广州Python培训机构一般多少钱
- ob服务器维修视频,教你如何使用OB系统 还在看转播?你OUT了!
- 日常生活中如何获得低咖啡因的茶叶
- 用了python之后笔记本卡了_应用
- 计算机主机信息怎么看,本机电脑硬件配置信息怎么看?Win7/Win10查看详细电脑配置方法...
- Python入门7_抽象进阶
- 【Siddhi】Siddhi实时计算核心流程分析
- 1005 C语言控制输入1001-1004
- ‘sort’命令的14个有用的范例
- python雷达图的相似度_python画雷达图
- 黑马程序员_java语言基础_概述
- iOS 关于键盘监听
- 多模态情感识别(MER)数据集整理
- Cindy 3.0中的Buffer设计
- python 绘制ROC曲线
- 14.深入浅出:信号的运算——参考《模拟电子技术基础》清华大学华成英主讲
- 【推荐系统】特征工程(1)
- 用API能否修改Revit链接模型
- 感谢网络,硬生生让我的砖机获得重生
- redis中对象存储内存占用预估和相关对象
热门文章
- C语言程序设计(郝斌)
- 今日简报 每日精选12条新闻简报 每天一分钟 知晓天下事 4月23日
- 基于微信小程序的单词记忆系统(Java+SSM+MySQL)
- 【前端学习-16】【day06】WebAPI编程/动画函数封装/回调函数/轮播图/自动播放/节流阀/返回顶部/筋斗云/触屏事件/触屏事件对象/
- iOS 字体类型列表
- 移动硬盘位置不可用的数据恢复方法
- 【div】 设置水平居中
- MySQL8.0 OCP最新版1Z0-908认证考试题库整理-004
- 开放耳机有什么优缺点,列举出几款口碑不错的开放式耳机
- 电脑开机不能进入系统--死机