Spring官网地址https://spring.io/

springManven官网地址:https://mvnrepository.com
————————————————————————

springManven框架地址:https://mvnrepository.com/artifact/org.springframework/spring-webmvc/5.3.13

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.13</version>
</dependency>

 

——————jdbc:——————————

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.13</version>
</dependency>
——————jdbc:——————————

 

————————————————————————————————————————————
spring官网框架地址:https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#spring-core
源码:
<?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">

<bean id="..." class="...">
<!-- collaborators and configuration for this bean go here -->
</bean>

<bean id="..." class="...">
<!-- collaborators and configuration for this bean go here -->
</bean>

<!-- more bean definitions go here -->

</beans>

————————————————————————————————————————————

 

结论:
1)IOC编程思想,是由主动的编程编程被动的接收

2)IOC就是对象由spring创建,管理,装配

 

 

xml读取
//从项目中去拿我的容器,可以拿一个,也可以拿多个|||固定死的,必须写这一行
//("demo.xml","XXX.xml",.....)
ApplicationContext context = new ClassPathXmlApplicationContext("demo.xml");

创建容器(xml):
1)ref :引用spring容器中创建好的对象
2)value: 具体的值,基本数据类型!
3)id:自己取的名称,到时候要从页面中取容器中的id来使用
4)class:地址,方法包的地址 --有提示!
例子:<bean id="sqlserver" class="com.zui.dao.UserSqlServer" />

IOC创建对象的方式

1)使用无参构造创建对象,默认!
2)使用有残构造创建对象,
1.下标赋值

Spring配置
1)alias:别名
可以根据bean里的id来进行设置别名,在页面中也可以通过调用他的别名来获取到这个对象
例子:<alias name="user" alias="123"></alias>
2)name:也是别名
更高级的别名,可以创建多个别名,通过 逗号||空格 进行分割
例子:<bean id="sqlserver" class="com.zui.dao.UserSqlServer" name="123","wer",..... />
3):import:导入
把不同的xml文件导入到一个总的xml文件里,使用的时候直接拿总的xml就可以了

依赖注入

1)构造器注入

2)set注入*
————————————————————————————————————<?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">
<bean id="address" class="com.zui.pojo.Address" />
<bean id="student" class="com.zui.pojo.Student">
<!--第一种,普通值注入,value-->
<property name="name" value="黑大帅" />
<!--第二种,Bean注入,ref-->
<property name="address" ref="address" />
<!--第三种,数组注入-->
<property name="books">
<array>
<value>红楼梦</value>
<value>西游记</value>
<value>三国演义</value>
<value>水浒传</value>
</array>
</property>
<!--第四种,List注入-->
<property name="hobbys">
<list>
<value>打篮球</value>
<value>吃饭</value>
<value>睡觉</value>
<value>旅游</value>
</list>
</property>
<!--第五种,Map注入-->
<property name="card">
<map>
<entry key="姓名" value="张亮" />
<entry key="实体店" value="麻辣烫" />
</map>
</property>
<!--第六种,Set注入-->
<property name="games">
<set>
<value>LOL</value>
<value>Moba</value>
<value>CF</value>
</set>
</property>

<!--第七种,null注入-->
<property name="wife">
<null />
</property>

<!--第八种,Properties注入-->
<property name="info">
<props>
<prop key="DatabaseName">SqlServer</prop>
<prop key="url">//localhost:8080</prop>
<prop key="userName">sa</prop>
<prop key="pwd">sa</prop>
</props>
</property>
</bean>
</beans>
————————————————————————————————————

3)扩展方式注入
使用 p/c 命名空间来注入
!!!需要导入约束
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"需要构造器,有参和无参
————————————————————————————————————<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!--p命名空间注入,可以直接注入属性的值-->
<bean id="user" class="com.zui.pojo.User" p:name="黑大帅" p:age="18" />
<!--c命名空间注入,通过构造器注入-->
<bean id="user2" class="com.zui.pojo.User" c:age="18" c:name="潇洒哥" />

</beans>
————————————————————————————————————

bean作用域
1)单例模式(Spring默认机制)
好处:单线程推荐使用单例模式
坏处:并发的情况下,会导致数据延迟或者不一致
【scope="singleton"】
例子:
<bean id="user2" class="com.zui.pojo.User" c:age="18" c:name="潇洒哥" scope="singleton" />
2)原型模式(Spring默认机制)
好处:多线程推荐使用原型模式
坏处:每一次都会产生一个新对象,导致资源浪费
【scope="prototype"】
例子:
<bean id="user2" class="com.zui.pojo.User" c:age="18" c:name="潇洒哥" scope="prototype" />

bean的自动装配
·自动装配是Spring满足bean依赖的一种方式!
·Spring会在上下文中自动寻找,并自动给bean装配属性

在Spring中三种装配的方式

1.在xml中显示的配置
2.在java中显示配置
3.隐私的自动装配【重要】
byname的时候,需要保证bean的id唯一,并且这个bean需要和自动注入的属性的set方法一致!
bytype的时候,需要保证bean的class唯一,并且这个bean需要和自动注入的属性类型一致!

使用注解实现自动配置

1.导入约束
<context:annotation-config/>
2.配置注解的支持
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">

<context:annotation-config/>

</beans>

自学Spring的更多相关文章

  1. 自学spring过程中碰到的问题list,一个一个解决

    1.spring的基本原理 2.spring注解有哪几种方式 3.什么情况下适合用哪种注解 4.@autowired @Resource 等的区别 5.spring是怎么使用反射的 6.cjlibe ...

  2. 自学spring AOP

    本人是一个编程新手也是第一次写博客 这篇文章是我结合网上的资料和一些书籍学的 如果有不对之处请留言告知 本文介绍了AOP的两个知识点 1: 代理 代理有两种 我先写:Java静态代理 1:建立一个接口 ...

  3. 自学Spring Boot

    简介: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配 ...

  4. 【自学Spring Boot】什么是Spring Boot

    为啥要有Spring Boot? 以前大学刚开始学java web的时候,需要搭建起web框架,当时使用的是SSH(struts+spring+hibernate),那就开始搭建吧,初学者哪里知道整套 ...

  5. spring boot 常见的配置问题

    最近在自学spring boot ,新手教程网上很多,这里主要记录下配置过程中的一些疑难杂症.这些记录都是针对以下配置生成的项目 1.该项目一定要用jdk1.8 2.application.prope ...

  6. spring boot之访问静态页面

    楼主前两天自学spring boot,然后在学习的过程中,出现一个疑问,就是如何去访问静态的html网页,这个问题,楼主上网上搜了下,找到的是在resource目录下建立一个templates文件夹, ...

  7. Spring 核心技术与产品理念剖析(上)

    IT 技术发展太快了,就像浪潮一样一波接着一波,朝你迎面扑来,稍不留神就会被巨浪卷至海底而不得翻身.我们必须要学会抓住那些不变的本质或规律,只有这样才能屹立潮头而不倒,乘风破浪,做这个巨变时代的弄潮儿 ...

  8. Spring入门(四)Spring-test模块

    自动化转配bean的测试案例分析 package soundsystem; import static org.junit.Assert.*; import org.junit.Rule; impor ...

  9. Spring入门(三)

    测试Spring Bean的自动化装配 方式一:使用配置文件方式启动组件扫描 准备一个接口 package soundsystem; public interface CompactDisc { vo ...

随机推荐

  1. 【一本通提高组合数学】 计算系数(NOIP2011提高组)

    题面 思路 根据二项式定理, 那么 算  需要用快速幂. 可以根据组合式的递推公式算组合数.我是这么写的. 或者是利用组合数的定义式,但是因为有取余, 所以要用逆元. 其中  为逆元, 这个可以直接用 ...

  2. 【ASP.NET Core】选项模式的相关接口

    在 .NET 中,配置与选项模式其实有联系的(这些功能现在不仅限于 ASP.NET Core,而是作为平台扩展来提供,在其他.NET 项目中都能用).配置一般从多个来源(上一篇水文中的例子,记得否?) ...

  3. linux学习随笔

    date +%Y-%m-%d\ %H:%M:%S cal 10 2009 yum install bc //计算器 bc 安装thefuck yum install gcc gcc++ python ...

  4. PHP小工具

    防SQL注入 function clean($input) { if (is_array($input)) { foreach ($input as $key => $val) { $outpu ...

  5. 程序员的专属浪漫——用3D Engine 5分钟实现烟花绽放效果

    谁说程序员不懂浪漫? 作为程序员,用自己的代码本事手搓一个技术感十足的惊喜,我觉得,这是不亚于车马慢时代手写信的古典主义浪漫. 那么,应该怎样创作出具有自我身份属性的浪漫惊喜呢? 玩法很多,今天给大家 ...

  6. Floyd算法详解

    Floyd本质上使用了DP思想,我们定义\(d[k][x][y]\)为允许经过前k个节点时,节点x与节点y之间的最短路径长度,显然初始值应该为\(d[k][x][y] = +\infin (k, x, ...

  7. UnifyRemoteManager-多国语言绿色版v1.3-20200315,统一远程连接自动登录软件,欢迎测试

    UnifyRemoteManager-多国语言绿色版v1.3-20200315,统一远程连接自动登录软件,欢迎测试 下载参考: 百度网盘:https://pan.baidu.com/s/15g-oXT ...

  8. 映射问题,命名空间不能为空:org.apache.ibatis.builder.BuilderException : Mapper's namesapce cannot be empty

    今天配置Spring配置文件时,出现了以下的报错 倒数第三行,意思是Mapper的namespace(命名空间)不能为空 检查xml文件里映射文件是否配置,如果没有配置,那请添加映射文件,不然Spri ...

  9. Web 前端实战:Gitee 贡献图

    前言 这次要做的 Web 前端实战是一个 Gitee 个人主页下的贡献图(在线 Demo),偶尔做一两个,熟悉熟悉 JS 以及 jQ.整体来说这个案例并不难,主要是控制第一个节点以及最后一个节点处于星 ...

  10. 牛客IOI周赛26-提高组 A. 逆序对

    题面 逆序对 有一个长度为 N \tt N N 的排列 a a a,进行 M \tt M M 次操作,操作有 4 \tt 4 4 种: 1 l r :交换 a l \tt a_l al​ 和 a r ...