J2EE一些日常整理1(日后分类)

dao类是什么?

 

DAO类都是进行数据操作的类,

是对于数据库中的数据做增删改查等操作的代码。

DAO(Data Access Object) 数据访问对象是一个面向对象的数据库接口,它显露了 Microsoft Jet 数据库引擎(由 Microsoft Access 所使用),并允许 Visual Basic 开发者通过 ODBC 像直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或小范围本地分布使用。

DAO层一般有接口和该接口的实现类,接口用于规范实现类,实现类一般用于用于操作数据库! 一般操作修改,添加,删除数据库操作的步骤很相似,就写了一个公共类DAO类 ,修改,添加,删除数据库操作时直接调用公共类DAO类。

mybatis注解方式为什么没有实现类的dao接口

   1.mybatis注解方式通过没有实现类的dao接口进行数据库操作的原理,一句话概括,就是jdk proxy,就是jdk代理

         1)原理上:JDK动态动态代理的原理是根据 InvocationHandler 中的invoke()方法,由jdk为你的接口手动生成了一个实现了对应接口的类,因此,你的接口可以调用,这是理解mybatis接口没有实现类能被调用的关键。
         2)功能上:可以看出mybatis中的接口就是XML文件的描述,一方面这样做的目的是和spring集成,将接口交给spring管理;另一方面是为了更加方便的管理XML文件(使用接口的package+interface作为namespace,method作为ID)

为什么dao层一对应就可以获取信息

当dao层的这些方法被调用时

        就会把封装好的参数实体过激给paramT(如果是String,就paramString)

        然后拿着这个pramT去执行xml中对应的sql

        由于已经建立了两者的映射

        因此,在xml中可以直接通过#{属性名}取到相应的值从而进行sql执行

        通常,在查询中还要讲执行结果封装成对象,再封装成集合,然后返回

 

Jsp的use bean是什么意思

JavaBeans的解释:JavaBeans是java中的一种常见的类。最初的设计用于java的GUI,通过拖动组件就可以建立一个Button,为此需要Button这个类有一个无参构造方法,用于反射创建。为了方便调节Button的背景颜色,宽高等属性,需要统一的一套获取属性和设置属性的方法,即规范中的getXxx()和setXxx()。这样就能用反射获取Button的各项属性,然后在通过对应的get和set方法进行设置。并且在完成GUI的设计后,需要能够在重启IDE的情况下打开原来的设计,所以还需要能过够序列化。为了安全,需要将属性私有。Button要能点击出现事件,所以还要能绑定事件。属性、方法、事件,这样就成了初代的JavaBean,作为一个组件存在,方便复用。通过调用不同的组件就可以快速拼装出一个新产品。当然这是可视化的JavaBean,本篇谈论的是另一类不可视化的JavaBean在jsp中的使用。在jsp中的JavaBean,有以下要求,要区分和可视化JavaBean的不同,不需要事件和序列化。

理解scope

1、scope是用于设置JavaBean 的,但为什么说成是JSP Scope?

scope确实只是设置JavaBean,但却是体现了JSP 中的所有变量与对象的作用域的划分。如request、application等都有setAttribute方法,因为request是存在于一次完成HTTP 请求的,所以设置的属性的作用域也就是request,对application设置的属性则为application。除了JavaBean真正存在scope属性外,其他的对象或属性是没有表明scope的,也没必要,如Request对象本就表明了它的作用域为一次完整请求期间。

2、逆向理解scope

将JavaBean的scope属性设置为某个值,就确定了该JavaBean的作用域,反之,将变量(对象也是变量)存储在哪个JSP 内置对象中,那它的scope(实际不存在,只是概念)也就确定了。具体:

——>变量存入application,则作用域为"application",因为application对象是单例的,所以存储的变量对所有用户是公共的;

——>变量存入session,则作用域为"session";

——>变量存入request,则作用域为"request";

——>变量存入pageContext,则作用域为"page";

 

setProperty是什么意思?

<jsp:setProperty>用来设置已经实例化的Bean对象的属性

session理解

 

Web应用程序是使用HTTP协议传输数据的。而HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话,无法辨别这个请求是哪一个用户发出的,这样的话就会造成数据混乱,用户的数据没有安全的保障,整个程序处于混乱的状态,这显然是不行的——于是会话跟踪技术应运而生,弥补了HTTP协议的不足之处。

会话跟踪是web程序中最常用的技术,通过跟踪用户的整个会话,来辨别是否是同一用户,用于确认用户的身份,保证用户所有的请求操作都属于同一个会话,保证了用户信息的安全私密性,也使得程序井然有序,常用的会话跟踪技术有两种Cookie和Session,这里我们讲Session

一.什么是Session?

在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(Session),是一种记录客户状态的机制,他不同与Cookie,Session是保存在服务器端,。客户端浏览器访问服务器的时候,服务器把客户端信息以类似散列表的结构形式记录在服务器上。这就是Session。

二.Session的工作原理

Cookies的工作原理是:由于服务器从连接上不能辨别用户和记录用户的操作信息,所以引入的Session,而Session就好像一个用户独有的“信息仓库”,当客户端进行第一次请求,服务器就会生成一个"信息仓库和仓库钥匙"给这个客户端,当客户端再次请求(请求+“仓库钥匙”),服务器从“仓库钥匙”上辨认出,这就是xx用户的请求打开专有的“信息仓库”,这样的话我们就可以辨别每个请求对应的用户身份和信息,不会造成数据混乱。

当服务器需要为客户端的请求创建一个Session的时候,服务器首先检查这个客户端的请求里是否已包含了Session id,如果Session id存在则说明已经为此客户端创建过Session,服务器就按照Session id把这个Session检索出来使用,r如果没有找到该Session,就会重新创建新的Session,如果客户端请求不包含Session id,则为此客户端创建一个Session并且生成该Session独有的Session id,Session id的值应该是不会重复的24字母组成的的字符串,这个Session id将被在本次请求中返回给客户端保存,用作下次请求进行服务器身份判断,会话状态的保持就是一次次的对接“暗号”中保持进行的。

三.Session的常用方法

四.Session的超时时间设置

Tomcat的Session超时时间默认为30分钟(也就是指客户端如果有30的时间没有和服务器保持会话,则服务器就默认为此Session已经无用,会自动清除此Session,释放服务器资源),在实际项目中通常我们不希望我们的服务器的Session超时时间如此的长,所以我们可以设置Session的超时时间

1.session.setMaxInactiveInterval(600);参数单位是秒,即在客户端与服务端连续10分钟没有进行会话,Session将失效。

2.在项目的web.xml中设置,参数单位是分钟,设置为0或-1,则永久不会失效

<session-config>

<session-timeout>1</session-timeout>

</session-config>

3.服务器中设置,如Tomcat,找到根目录下conf/web.xml中找到<session-config>,设置参数,单位分钟

4.人工进行Session销毁:

HttpSession session = request.getSession();

session.invalidate();

如果前三种方法都设置了,则优先级1>2>3

如若我们要提示用户Session已过期,我们应该在过滤器中进行判断,由request.getSession(); 得到的Session是否为空,jsp页面应该禁用它自己创建Session(这会影响判断用户Session是否超时过期)

五.Session在客户端禁用Cookie的环境下的使用

 一般保存Session id是用Cookie保存,该Cookie为服务器自动生成的,(它的有效时间一般设为–1,表示仅当前浏览器内有效,关闭浏览器就会失效),再次请求由该Cookie携带Session id访问服务器,但客户端有时会禁用Cookie,因此还可以通过URL重写,就是把session id直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,另一种是作为参数附加在URL后面

当我们把客户端的Cookie功能禁用,这个时候就用到我们的URL重写的技术,response中提供了两个方法进行URL的重写,encodeRedirectURL与encodeURL,它们使用的时候会先判断Session是否超时,是创建新Session,否则进行判断客户端是否禁用Cookie,是则在返回的URL中加上Session id,否则直接返回URL,前者用于重定向,仅与res.sendRedirect一起使用

1.jsp页面使用:<a href="<%=response.encodeURL("http://localhost:8080/school/selectUser")%>">查询</a>

from表单等用法相同

2.jstl使用:<a href="<c:url value='http://localhost:8080/school/selectUser'/>">查询</a>

3. Java代码使用:

(1)response.encodeURL(String url);然后通过jstl,response等方式写到页面上

(2) encodeRedirectURL方法用于重定向地址,response.sendRedirect(response.encodeRedirectURL(String url));

4.通过过滤器设置每个请求的URL带Session id参数

5.手动的创建Cookie,把Session id放入Cookie中

6.表单隐藏域使用(极其不推荐):(<input type="hidden"

name="JSESSIONID" value="CDAE18ABD46C4BE442DA8335B85A6536”>)

六.Session的优缺点

优点:

1.Session中能够存取复杂的的数据,比如Java对象,使得数据交流更加简单有效

2.Session存储在服务器中,安全性隐私性较高

3.Session实例是轻量级的,不需要占用服务器太多资源

缺点:

1.因为Session保存在服务器,但有大量的Session保存在服务器,会耗费大量服务器内存

2.Cookie依赖性,因为Session id存储在Cookie中,Cookie被禁用,就没有Session id,就找不到Session,造成Session失效的假象

3.不可跨域性,比如A网站登录访问B网站,它的Session并不能传递过去,不能公用,这就涉及跨域问题(想了解的自行百度)

4.Session容易丢失,比如服务器重启

七.对Session的容易出错的认知

1.Session的创建

Session不是只要客户端访问服务器就被创建,例如你访问静态资源服务器就不会生成Session,Session的生成与HttpServletRequest.getSession()语句有关,Tomcat服务器生成Session时就会执行这一句,所以当程序执行这个语句Session才被创建(代码中可不写,编译会加上)

2.Session关闭浏览器就过时,失效

关闭浏览器失效的是存储Session id的Cookie,而Session id对应的Session还在服务器中保存着(除非手动的调用清除Session方法和Session过时),所以就造成了Session"失效","过时","被清除"的假象

客户端打开两次,一次为A,一次为B,在session没有失效之前它们的所使用的的Session是相同的

 

servlet的组成,以及servlet是什么?

 

HttpServlet中的doGet()和doPost()由service()方法根据提交请求的方式(GET/POST)来调用。默认为GET

 

体系结构:
    Servlet:接口
        |
    GenericServlet:抽象类
        |
    HttpServlet:抽象类
        |
    自定义servlet

servlet常用方法:
    void init(ServletConfig config):初始化
    void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑
    void destroy():销毁

    ServletConfig getServletConfig() :获取当前servlet的配置对象

GenericServlet常用方法:
    除了service方法没有显示,其他都实现了
    空参的Init() 若我们自己想对servlet进行初始化操作,重写这个init()方法即可

HttpServlet常用方法:
    service做了实现,把参数强转,调用了重载的service方法
        重载的service方法获取请求的方式,根据请求方式的不同调用相应doXxx()方法
    doGet和doPost方法

html中type,name,id,value的区别

 

type浏览器中用于出入的控件(比方说type="text",这就是一个文本框;type="button",这就是一个按钮)
type可选的值如下:
button 按钮
checkbox 复选按钮组件
file 文件上传组件
hidden 隐藏域
image 图片区域
password 密码输入文本框
radio 单选按钮组件
reset 重置表单按钮
submit 提交表单按钮
text 文本输入框
***********************************************************************
id是唯一标识符,不允许有重复值(类似数据表的主键,pk),可以通过它的值来获得对应的html标签对象。(如果在同一页面代码中,出现重复的id,会导致不可预料的错误)
js代码:document.getElementById("id_value")
根据指定的id获得它的对象引用
***********************************************************************
name和id的功能是一样的,同样用来标识html标签,但唯一不同的是name允许有重复的值。
js代码:document.forms[0].name或document.getElementsByName("name")
根据指定的name获得它的对象引用数组
***********************************************************************
value代表某个html标签的值

 

history.back()的作用

back() 方法可加载历史列表中的前一个 URL(如果存在)。

调用该方法的效果等价于点击后退按钮或调用 history.go(-1)。

 

 

<%=%>等其他语段的作用

首先,我们要了解jsp运行原理。JSP的本质就是一个Servlet,JSP的运行之前会先被Tomcat服务器翻译为.java文件,然后在将.java文本编译

为.class文件,而我们在访问jsp时,处理请求的就是那个翻译后的类。

  1.<% %>叫做脚本片段,其中写的内容会翻译在Servlet的Service方法中,显然我们可以在Service方法中定义局部变量或者调用其他方法,但是不能

在Service中再定义其他的方法,也就是我们可以在<%%>中定义局部变量或者调用方法,但不能定义方法。在jsp页面可以有多个脚本片段,但是多

个脚本片段之间要保证结构完整。


  2.<%!%>称作声明,其中写的内容将来会直接翻译在Servlet类中,因为我们可以在类中定义方法和属性以及全局变量,所以我们可以在<%!%>中声

明方法、属性、全局变量。

  3.<%=%>称作jsp表达式,用于将已经声明的变量或者表达式输出到网页上面。


  4.直接写在jsp页面<body></body>中的代码称作模板元素,将来会Servlet的Service方法中的out.write("___")中,作为输出内容。

 

Spring的工作原理就是让一个对象的创建不用new就可以自动的生产,在运行时与xml Spring的配置文件来动态的创建对象和调用对象,而不需要通过代码来关联

spring原理

Spring的概念

Spring是一种多层的J2EE应用程序框架,其核心就是提供一种新的机制管理业务对象及其依赖关系。它是一种容器框架,用于创建bean,维护bean之间的关系,它可以管理web层,持久层,业务层等,可以配置各个层的组件并且维护各个层的关系

Spring特点

(1)轻量级:轻量级是针对重量级容器(EJB)来说的,Spring的核心包就不到1M大小,而使用Spring的核心包所需的资源也很小,所以可以在小型设备中使用。

(2)非入侵式:Spring目标是一个非入侵式的服务框架。原因是所有框架都是提供大量的功能供用户去使用,从而简化开发时间和成本,但由于大量的使用了框架的API,使应用程序和框架发生了大量的依赖性,无法从框架中独立出来,更加无法使程序组件在其他程序中使用。

(3)容器:Spring提供了容器功能,容器可以管理对象的生命周期、对象与对象间的关系、我们可以通过编写XML来设置对象关系和初始值,这样容器在启动之后,所有的对象都直接可以使用,不用编写任何编码来产生对象。Spring有两种不同的容器:Bean工厂以及应用上下文

Spring工作原理

Spring内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象和调用对象里的方法的 。

Spring还有一个核心就是AOP面向切面编程,可以为某一类对象进行监督和控制(也就是在调用这类对象的具体方法的前后去调用你指定的模块)从而达到对一个模块扩充的功能。这些都是通过配置类达到的。

Spring目地就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的

为什么要使用spring

 

1 依赖注入(DI)

 大部分的Spring的新手(我)在学习之初对依赖注入这个词感到迷茫,事实上它并没有那么复杂,应用依赖注入会使得代码变得更简单、更容易理解。

通常,我们开发的java应用都是由多个类组成,它们之间相互协作来完成特定的业务逻辑。每个对象之间相互联系,导致高度耦合的代码。

 

2 面向切面编程(AOP)

AOP:允许你把遍布应用各处的功能分离出来形成可重用的组件。

比方说,系统中的日志、事务管理。安全服务等,通常会分散到你的每一个组件中,哪怕只是调用某个方法,但他依然会使你的代码变得混乱并且不易修改。某个组件应该只关心如何实现自身的业务逻辑,与其无关的代码(日志,安全等)应该少出现甚至不出现。

 

AOP使得这些组件具有更高的内聚性以及更加关注与自身业务,完全不需要涉及其他系统服务,甚至你的核心业务根本不知道它们(日志模块,安全模块)的存在。

 

初识Spring(为什么要使用Spring?)

  Spring,英文翻译是春天的意思,而在Java中,是一个开放源代码的设计层面框架(手动滑稽,程序员的春天),他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。

 

起源

  你可能正在想“Spring不过是另外一个的framework”(英语释义:框架,骨架;结构,构架)。当已经有许多开放 源代码(和专有)J2EE framework时,我们为什么还需要Spring Framework?

  Spring是独特的,因为若干个原因:

  它定位的领域是许多其他流行的framework没有的。Spring致力于提供一种方法管理你的业务对象。

  #业务对象业务对象(Business Object,BO)是对数据进行检索和处理的组件。是简单的真实世界的软件抽象。业务对象通常位于中间层或者业务逻辑层。

 

  Spring是全面的和模块化的。Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的。因此从你的学习中,你可得到最大的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。

  它的设计从底部帮助你编写易于测试的代码。Spring是用于测试驱动工程的理想的framework。

  Spring对你的工程来说,它不需要一个以上的framework。Spring是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构。它也涉及到其他framework没有考虑到的内容。

 

背景

  

  Rod Johnson在2002年编著的《Expert one on one J2EE design and development》一书中,对Java EE 系统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。以此书为指导思想,他编写了interface21框架,这是一个力图冲破J2EE传统开发的困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。同年他又推出了一部堪称经典的力作《Expert one-on-one J2EE Development without EJB》,该书在Java世界掀起了轩然大波,不断改变着Java开发者程序设计和开发的思考方式。在该书中,作者根据自己多年丰富的实践经验,对EJB的各种笨重臃肿的结构进行了逐一的分析和否定,并分别以简洁实用的方式替换之。至此一战功成,Rod Johnson成为一个改变Java世界的大师级人物。

  传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务、事务处理等。

  Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。

 

框架特征   

  轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

  控制反转——Spring通过一种称作控制反转(IoC)的技术促进了低耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

  面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

  容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。

  框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

  MVC——Spring的作用是整合,但不仅仅限于整合,Spring 框架可以被看做是一个企业解决方案级别的框架。客户端发送请求,服务器控制器(由DispatcherServlet实现的)完成请求的转发,控制器调用一个用于映射的类HandlerMapping,该类用于将请求映射到对应的处理器来处理请求。HandlerMapping 将请求映射到对应的处理器Controller(相当于Action)在Spring 当中如果写一些处理器组件,一般实现Controller 接口,在Controller 中就可以调用一些Service 或DAO 来进行数据操作 ModelAndView 用于存放从DAO 中取出的数据,还可以存放响应视图的一些数据。 如果想将处理结果返回给用户,那么在Spring 框架中还提供一个视图组件ViewResolver,该组件根据Controller 返回的标示,找到对应的视图,将响应response 返回给用户。

  所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。

 

特点

  1.方便解耦,简化开发

  通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

  2.AOP编程的支持

通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。

  3.声明式事务的支持

  在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

  4.方便程序的测试

  可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。例如:Spring对Junit4支持,可以通过注解方便的测试Spring程序。

  5.方便集成各种优秀框架

  Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。

  6.降低Java EE API的使用难度

  Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。

  7.Java 源码是经典学习范例

  Spring的源码设计精妙、结构清晰、匠心独运,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。Spring框架源码无疑是Java技术的最佳实践范例。如果想在短时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究Spring源码将会使你收到意想不到的效果。

好处

总结起来,使用Spring有如下优点:

 1.低侵入式设计,代码污染极低

 2.独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺

 3.Spring的DI机制降低了业务对象替换的复杂性,提高了组件之间的解耦

 4.Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用

 5.Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问

 6.Spring并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部

 

简而言之,我们使用Spring有如下的原因:

  1.Spring是 开源轻量级 框架

    2.一站式框架,内部支持对多种优秀开源框架的集成。

    3.Spring 核心 主要有两部分:

  (1)AOP:面向切面编程,扩展功能不是修改源代码实现。

  (2)IOC:控制反转。创建对象不是通过new方式来实现,而是交给Spring配置来创建对象。


 

 

 


 


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值