②初识spring
一:基础搭建
需要:eclipse、spring插件(确认版本号并下载对应插件详见:https://blog.csdn.net/a1150499208/article/details/87988392)
二:创建spring项目并配置xml文件
1.下载spring相关jar包
a、loggingjar包下载地址:https://commons.apache.org/proper/commons-logging/download_logging.cgi,这里下载1.2版。
b、Springjar包下载地址:http://repo.springsource.org/libs-release-local/org/springframework/spring/,这里下载4.3.10版。
2.第一个spring创建
a、创建一个java工程
b、向工程中添加如下jar包
①创建lib文件夹,并将如下jar包拷贝到该文件夹中
②选中拷贝的jar包右键点击BuildPath——Add to BuildPath
c、创建SpringXML文件
①选中src目录——右键选中点击Other···项——找到打开spring节点,出现下图:
②选择Spring Bean Configuration File子节点,点击Next,出现下图:
③在Filename文本框中输入配置文件的文件名(这里为applicationContext.xml)点击Next,出现下图:
④选用beans(对象实例化)和context(自动扫描)并点击Finish
三:spring的bean标签和自动扫描
a、在src的com.zzj.vo中创建一个类Person,在com.zzj.test中创建另一个类Test
b、创建一个spring的xml文件
c、bean的标签属性
①id和name
为bean标签添加id和name属性都可以通过调用getBean(id属性值或name某个属性值)方法获取到SpringIOC容器中的对象;但需要注意以下几点:
1、id属性值只能定义一个标识,而name属性值可以使用分号(“;”)、空格(“ ”)或逗号(“,”)分隔定义多个,如下代码:
<bean id="a" name="b,c" class="com.zzj.test.Person"></bean>
那么可通过如下方法获得Spring IOC容器的对象:
//将xml里配置好的类实例化
ApplicationContext context = new ClassPathXmlApplicationContext("test.xml");
Object obj1 = context.getBean("a");
Object obj2 = context.getBean("b");
Object obj3 = context.getBean("c");
System.out.println(obj1 +"----"+obj2 +"----"+obj3);
2、id和name不可以重复
3、bean标签中可以没有id和name属性,此时可以通过调用getBean(Class对象或全名)方法获取容器中的对象如下所示:
System.out.println(context.getBean(Person.class));
②懒加载
默认情况下,IOC容器初始化时便会把bean实例化,可以通过如下两种方式实现bean实例化懒加载(即在使用该bean对象时才实例化,这样可以节省系统资源):
a、在beans标签中添加default-lazy-init="true",则在该标签中配置的所有bean将实现懒加载;
b、在对应的bean标签中添加lazy-init="true",则该bean将实现懒加载,该属性没有继承性;
注意:bean标签中设置lazy-init的优先级高于在beans标签中设置default-lazy-init
③作用域
scope="singleton":默认值,IoC容器中只存在一个Java类对象,此时Java对象为单例,即每次从IoC容器获取的Java对象都是同一个;
scope="prototype":每次从IoC容器获取Java对象都是新的对象;
scope="request":每次HTTP请求都会创建一个新的Bean,该作用域只适用于WebApplicationContext环境;
scope="session":每次有新的会话都会创建一个新的Bean,该作用域只适用于WebApplicationContext环境;
d、自动扫描(命名空间中勾选context,引入spring-aop的jar包)
1、xml文件中输入如下代码
<context:component-scan base-package="com.zzj.test"></context:component-scan>
即可自动扫描对应位置的文件中的类
2、base-package标签属性属性值:
a、Spring 容器将会扫描该属性值指定包及其子包中的所有类;
b、该属性值支持*通配符,例如“com.lq.*.imp”表示扫描诸如com.lq.book.imp包及其子包中的类;
c、当需要扫描多个包时, 使逗号分隔;
d、resource-pattern标签属性可以指定Spring容器仅扫描特定的类而非基包下的所有类,比如resource-pattern="/*.class"表示只扫描基包下的类,基包的子包不会被扫描。
3、Sprng容器通过context:component-scan标签扫描其base-package标签属性值指定的包及其子包内的所有的类并实例化被@Component、@Repository、@Service或@Controller等注解所修饰的类。
@Component:基本注解
@Respository:持久层(一般为dao层)注解
@Service:服务层或业务层(一般为service层)注解
@Controller:控制层(一般为controller层)注解
默认情况下Spring依据默认命名策略为通过注解实例化的对象命名:类名第一个字母小写. 也可以在注解中通过@Component、@Repository、@Service或@Controller注解的value属性标识名称。
②初识spring的更多相关文章
- 初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置
在上篇博客初识Spring Boot框架中我们初步见识了SpringBoot的方便之处,很多小伙伴可能也会好奇这个Spring Boot是怎么实现自动配置的,那么今天我就带小伙伴我们自己来实现一个简单 ...
- 初识Spring security-添加security
请先查看 初识Spring security-无Security的SpringMVC 在pom.xml文件中添加包 <!-- Spring Security --> <depende ...
- 初识 Spring 框架
初识 Spring 框架可以帮助我们构建规范的.优秀的应用程序,简化烦琐的编码过程. Spring 是一个非常著名的轻量级的企业级开源框架,Spring 的目标是使 Java EE 更易用并促进良好的 ...
- 【初识Spring】对象(Bean)实例化及属性注入(xml方式)
title: [初识Spring]对象(Bean)实例化及属性注入(xml方式) date: 2018-08-29 17:35:15 tags: [Java,Web,Spring] --- #初识S ...
- 深入理解Spring(一):初识Spring
深入理解Spring(一):初识Spring 一. Spring介绍 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnso ...
- 初识Spring框架
一.Ioc 1)概念:Ioc(Inversion Of Control)控制反转,也被称为依赖注入DI(Dependency Injection),是面向对象编程的一种思想. 2)作用:用来减低程序代 ...
- 初识Spring框架实现IOC和DI(依赖注入)
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的, IoC是 ...
- 初识Spring
Spring简介 说到Spring就得提到它的作者"Rod Johnson",2002年他编写了<Expert One-on_One java EE设计与开发>一书.在 ...
- 初识Spring MVC
1.什么是Spring MVC? Spring MVC属于SpringFrameWork的后续产品,它提供了构建 Web 应用程序的全功能 MVC 模块,与Struts2一样是一种优秀MVC框架,不同 ...
- Spring学习进阶(一)初识Spring
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
随机推荐
- jsp 页面使用标签遍历
<tbody> <c:forEach items="${page.list}" var="exhiMain"> <c:set va ...
- js缓存
jsp页面加载的js有时候会有缓存 可以给引入的js加一个版本号,-------版本号不一致,会重新加载 <script type="text/javascript" src ...
- 解题报告:luogu P5755 [NOI2000]单词查找树
题目链接:P5755 [NOI2000]单词查找树 曾几何时,NOI 也有这么水的题( 裸的\(Trie\),只用维护插入即可,记得\(+1\)就好了,真没用讲的. \(Code\): #includ ...
- Daemon——守护进程
守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程.它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程常常在系统引导装入时启动, ...
- Linux--常用的linux基本命令学习大全01(适合所有人群)
常用 Linux 命令的基本使用 序号 命令 对应英文 作用 01 ls list 查看当前文件夹下的内容 02 pwd print wrok directory 查看当前所在文件夹 03 cd [目 ...
- JS中,跨域调用(本地)另一个项目的方法
IP地址,因为是本地的项目,所以我一开始写的是127.0.0.1...,但不对.应该写本机的IP地址才对!
- XPath 和 CSS
1.XPath XPath 即 XML 路径语言 (XML Path Language),他是一种用来确定 xml 文档中某部分位置的语言. xml文档(html 属于 xml)是由一系列节点构成的树 ...
- Python 中的else
在其他程序语言中,else 似乎只是与 if 关键字有缘分.而与其他的关键字没有联系,不能搭配使用,而在python中,else 除了与 if 匹配外, 还可以与for.while/ try等关键字匹 ...
- SqlParameter 类
SqlParameter 类 表示 SqlCommand 的参数,也可以是它到 DataSet 列的映射.无法继承此类. 命名空间: System.Data.SqlClient 程序集: System ...
- C 语言入门第五章--循环结构和选择结构
C语言中有三大结构,分别是顺序结构.选择结构和循环结构: 逻辑运算: 与运算: && 或运算:|| 非运算:! ==== #include<stdio.h> int mai ...