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">
&lt;!&ndash;        name为普通属性用value,其他的用ref&ndash;&gt;<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命名空间

  1. 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"/>
    
  2. 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使用相关推荐

  1. Java基础学习_01 概述及环境配置

    一.概述 1.Java语言平台版本 1.1J2SE(Java 2 Platform Standard Edition)标准版 为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可 ...

  2. linux下织梦cms安装环境配置文件,Mac本地环境配置以及安装织梦CMS,增加新的坑解决办法...

    Mac上其实已经自带了Apache和PHP,只是默认关闭的.开启一下就行了. Apache配置 apache已经自带了,只需在"终端"输入命令开启下就行了. ​​​开启apache ...

  3. dubbo yml配置_Spring boot 的profile功能如何实现多环境配置自动切换

    通常服务端应用开发需要经过以下几个流程: 开发 -> 测试 -> RC验证 -> 上线 这就涉及到四个不同的环境,开发环境.测试环境.RC环境以及生产环境,为了避免不同环境之间相互干 ...

  4. spring的环境配置(beans profile=xxx)

    研究spring3的时候发现一个很好用的特性:环境配置(spring2是否有此特性未知) 官方示例代码如下: <!--app-config.xml--><beansxmlns=&qu ...

  5. springboot多环境配置_编辑 SpringBoot|第五章:多环境配置

    多环境配置 在开发应用时,常用部署的应用是多个的,比如:开发.测试.联调.生产等不同的应用环境,这些应用环境都对应不同的配置项,比如swagger一般上在生产时是关闭的:不同环境数据库地址.端口号等都 ...

  6. Shiro笔记(二)Shiro集成SpringMVC的环境配置

    0.pom文件引入 <!-- SECURITY begin --><dependency><groupId>org.apache.shiro</groupId ...

  7. Springboot一:多环境配置、热部署、单元测试 MockMvc

    1.Spring Boot Profile 多环境配置 我们在开发项目时,通常同一套程序会被发布到几个不同的环境,比如:开发.测试.生产等.其中每个环境的数据库地址.redis地 址.服务器端口等等配 ...

  8. springboot概述、自动转配原理、yaml语法、多环境配置及文件位置

    SpringBoot-1 概述 什么是Spring Spring是一个开源框架,2003年兴起的一个轻量级的Java开发框架,作者:RodJohnson. Spring是为下解决企业级应用开发的复杂性 ...

  9. Spring MVC 学习总结(一)——MVC概要与环境配置 转载自【张果】博客

    Spring MVC 学习总结(一)--MVC概要与环境配置 目录 一.MVC概要 二.Spring MVC介绍 三.第一个Spring MVC 项目:Hello World 3.1.通过Maven新 ...

最新文章

  1. python培训班一般多少钱-广州Python培训机构一般多少钱
  2. ob服务器维修视频,教你如何使用OB系统 还在看转播?你OUT了!
  3. 日常生活中如何获得低咖啡因的茶叶
  4. 用了python之后笔记本卡了_应用
  5. 计算机主机信息怎么看,本机电脑硬件配置信息怎么看?Win7/Win10查看详细电脑配置方法...
  6. Python入门7_抽象进阶
  7. 【Siddhi】Siddhi实时计算核心流程分析
  8. 1005 C语言控制输入1001-1004
  9. ‘sort’命令的14个有用的范例
  10. python雷达图的相似度_python画雷达图
  11. 黑马程序员_java语言基础_概述
  12. iOS 关于键盘监听
  13. 多模态情感识别(MER)数据集整理
  14. Cindy 3.0中的Buffer设计
  15. python 绘制ROC曲线
  16. 14.深入浅出:信号的运算——参考《模拟电子技术基础》清华大学华成英主讲
  17. 【推荐系统】特征工程(1)
  18. 用API能否修改Revit链接模型
  19. 感谢网络,硬生生让我的砖机获得重生
  20. redis中对象存储内存占用预估和相关对象

热门文章

  1. C语言程序设计(郝斌)
  2. 今日简报 每日精选12条新闻简报 每天一分钟 知晓天下事 4月23日
  3. 基于微信小程序的单词记忆系统(Java+SSM+MySQL)
  4. 【前端学习-16】【day06】WebAPI编程/动画函数封装/回调函数/轮播图/自动播放/节流阀/返回顶部/筋斗云/触屏事件/触屏事件对象/
  5. iOS 字体类型列表
  6. 移动硬盘位置不可用的数据恢复方法
  7. 【div】 设置水平居中
  8. MySQL8.0 OCP最新版1Z0-908认证考试题库整理-004
  9. 开放耳机有什么优缺点,列举出几款口碑不错的开放式耳机
  10. 电脑开机不能进入系统--死机