自学Spring
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的更多相关文章
- 自学spring过程中碰到的问题list,一个一个解决
1.spring的基本原理 2.spring注解有哪几种方式 3.什么情况下适合用哪种注解 4.@autowired @Resource 等的区别 5.spring是怎么使用反射的 6.cjlibe ...
- 自学spring AOP
本人是一个编程新手也是第一次写博客 这篇文章是我结合网上的资料和一些书籍学的 如果有不对之处请留言告知 本文介绍了AOP的两个知识点 1: 代理 代理有两种 我先写:Java静态代理 1:建立一个接口 ...
- 自学Spring Boot
简介: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配 ...
- 【自学Spring Boot】什么是Spring Boot
为啥要有Spring Boot? 以前大学刚开始学java web的时候,需要搭建起web框架,当时使用的是SSH(struts+spring+hibernate),那就开始搭建吧,初学者哪里知道整套 ...
- spring boot 常见的配置问题
最近在自学spring boot ,新手教程网上很多,这里主要记录下配置过程中的一些疑难杂症.这些记录都是针对以下配置生成的项目 1.该项目一定要用jdk1.8 2.application.prope ...
- spring boot之访问静态页面
楼主前两天自学spring boot,然后在学习的过程中,出现一个疑问,就是如何去访问静态的html网页,这个问题,楼主上网上搜了下,找到的是在resource目录下建立一个templates文件夹, ...
- Spring 核心技术与产品理念剖析(上)
IT 技术发展太快了,就像浪潮一样一波接着一波,朝你迎面扑来,稍不留神就会被巨浪卷至海底而不得翻身.我们必须要学会抓住那些不变的本质或规律,只有这样才能屹立潮头而不倒,乘风破浪,做这个巨变时代的弄潮儿 ...
- Spring入门(四)Spring-test模块
自动化转配bean的测试案例分析 package soundsystem; import static org.junit.Assert.*; import org.junit.Rule; impor ...
- Spring入门(三)
测试Spring Bean的自动化装配 方式一:使用配置文件方式启动组件扫描 准备一个接口 package soundsystem; public interface CompactDisc { vo ...
随机推荐
- 【新人福利】使用CSDN 官方插件,赠永久免站内广告特权 >>电脑端访问:https://t.csdnimg.cn/PVqS
[新人福利]使用CSDN 官方插件,赠永久免站内广告特权 >>电脑端访问:CSDN开发助手 [新人福利]使用CSDN 官方插件,赠永久免站内广告特权 >>电脑端访问:https ...
- mybatis 01: 静态代理 + jdk动态代理
背景 有时目标对象不可直接访问,只能通过代理对象访问 图示: 示例1: 房东 ===> 目标对象 房屋中介 ===> 代理对象 你,我 ===> 客户端对象 示例2: 运营商(电信, ...
- [GYCTF2020]Ezsqli-1|SQL注入
1.打开界面之后在输入框进行输入测试,分别输入1.2.3.'等字符,结果如下: 2.看到bool(false)这里我想到了bool注入,因为之前做过这道题:https://www.cnblogs.co ...
- 使springAOP生效不一定要加@EnableAspectJAutoProxy注解
在上篇文章<springAOP和AspectJ有关系吗?如何使用springAOP面向切面编程>中遗留了一个问题,那就是在springboot中使用springAOP需要加@EnableA ...
- [HNOI2016]最小公倍数 (可回退并查集,回滚莫队)
题面 题目链接 题目描述 给定一张 N N N 个顶点 M M M 条边的无向图(顶点编号为 1 , 2 , - , n 1,2,\ldots,n 1,2,-,n),每条边上带有权值.所有权值都可以分 ...
- 检查原生 JavaScript 函数是否被覆盖
你如何确定一个JavaScript原生函数是否被覆盖? 你不能--或者至少无法可靠地确定.有一些检测方法很接近,但你不能完全相信它们. JavaScript原生函数 在JavaScript中,原生函数 ...
- 【java】学习路线4-对象、嵌套引用、匿名对象
class Learn03_MyClass{ String name = "www.pornhub.com";//成员变量:属性 public void Hello() ...
- django_day03
django_day03 Django的view(视图) CBV和FBV FBV:function based view 基于函数的视图 CBV:class based view 基于类的视图 fro ...
- 数据结构与算法【Java】05---排序算法总结
前言 数据 data 结构(structure)是一门 研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码. 要学习好数据结构就要多多考虑如何将生 ...
- Python入门系列(十)一篇学会python文件处理
文件处理 在Python中处理文件的关键函数是open()函数.有四种不同的方法(模式)来打开一个文件 "r" - 读取 - 默认值.打开一个文件进行读取,如果文件不存在则出错. ...