您的位置 首页 > 清洁清洗

dayspring(Spring)

很多朋友对于dayspring和Spring不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

非本人总结的笔记,抄点笔记复习复习。感谢传智博客及黑马程序猿

Spring是于2003年兴起的一个轻量级的Java开发框架,由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopmentandDesign中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

Spring的核心有两个部分:IOC控制反转和Aop面向切面编程

控制反转,之前调用一个类中的不是静态的方法,创建类的对象new类,再调用。现在使用Spring的IOC之后,不需要自己手动new创建对象,交给Spring进行管理。

面向切面编程,在基本功能之上,可以添加一个额外功能,不添加额外功能,基本功能也可以运行。Aop底层原理动态代理

Spring是JavaEE的分层的一站式框架

针对JavaEE的三层结构分别有不同的方案。

Spring就是一个大工厂,可以将所有的对象创建和依赖关系维护,交给spring维护

Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能

只需要通过配置就可以完成对事务的管理,而无需手动编程

Spring对Junit4支持,可以通过注解方便的测试Spring程序

Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持

Spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

导入的核心四个jar包,需要到下面文件夹里面找

需要日志的输出,导入第三方的日志jar包

IOC:把对象的创建交给Spring管理,不需要手动创建对象

在src下面创建配置文件,名称没有固定的要求,一般是applicationContext.xml

引入约束,之前在Struts2或者Hibernate里面引入约束是dtd约束,在spring里面的配置文件映入的是schema约束,可以在文件中找到该约束

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第三步:创建类

packagecn.itcast.ioc;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestIOCDemo1{publicvoidrun1(){

第四步:对象创建

在配置文件中配置哪个类进行对象创建

IOC(控制反转)和DI(依赖注入)区别

IOC(控制反转):把对象的创建权交个spring管理

DI(依赖注入):在对象创建过程中,可以向对象所在的类里面的属性中设置值,这个过程称为依赖注入

依赖注入需要在控制反转的基础上完成

首先在类创建一个属性,必须生成set方法

packagecn.itcast.ioc;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestIOCDemo1{privateStringusername;publicvoidsetUsername(Stringusername){this.username=username;

第二步

在配置创建对象的bean标签里面配置属性的注入

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

Spring的工厂类

|----ClassPathXmlApplicationContext:解析类路径下的XML的.

UML图

BeanFactory和ApplicationContext都是Spring的工厂

BeanFactory是Spring工厂的老版本类:第一次调用getBean方法的时候实例化

ApplicationContext是Spring新版本的工厂类:在加载核心配置文件的时候,将所有的类实例化

bean管理:创建对象的过程,创建对象的过程中设置属性值

Bean的实例化的三种方式(Spring创建对象的三种方式)

第一种:使用无参的构造方法创建

packagecn.itcast.beanxml;/**

第二步:在配置文件application.xml中配置

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第三步:创建测试类

packagecn.itcast.beanxml;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestBean{@Test

1、具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加群。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加群。

3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加群。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加群。

有需要的加群:71859422我们一起学习一起交流

静态工厂:这个工厂类的里面的方法是static的,可以通过类名直接调用

实态工厂:这个工厂类的里面的方法不是static的,创建工厂的对象,再调用里面的方法

packagecn.itcast.beanxml;/**

第二步:创建静态工厂类

packagecn.itcast.beanxml;/**

第三步:在配置文件application.xml中配置

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第四步:创建测试类

packagecn.itcast.beanxml;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestBean{@Test

第三种:使用实例工厂创建

packagecn.itcast.beanxml;/**

第二步:创建静态工厂类

packagecn.itcast.beanxml;/**

第三步:在配置文件application.xml中配置

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第四步:创建测试类

packagecn.itcast.beanxml;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestBean{@Test

Spring的bean的常用配置

<bean>标签的id和name属性

id:使用xml中id约束,不可以出现特殊字符

name:出现特殊字符,如果使用了name没有id,那么name可以作为id使用

Spring整合Struts1:<beanname=”/login”class=””/>

@Test/**

<bean>上的作用范围的配置

request:WEB项目中,创建一个对象,保存到request域中.

session:WEB项目中,创建一个对象,保存到session域中.

*globalsession:WEB项目中,特殊环境.分布式开发环境.如果没有分布式环境,相当于session.

Spring的实例化bean过程中总共完成11步骤

如果Bean实现BeanNameAware执行setBeanName

如果Bean实现BeanFactoryAware或者ApplicationContextAware设置工厂setBeanFactory或者上下文对象setApplicationContext

如果Bean存在类实现BeanPostProcessor(后处理Bean),执行postProcessBeforeInitialization

如果Bean实现InitializingBean执行afterPropertiesSet

调用\\<beaninit-method="init">指定初始化方法init

如果存在类实现BeanPostProcessor(处理Bean),执行postProcessAfterInitialization

如果Bean实现DisposableBean执行destroy

调用\\<beandestroy-method="customerDestroy">指定销毁方法customerDestroy

第三步和第四步:主要让生成Bean了解Spring容器.

第五步和第八步:允许客户在Bean的生成过程中对Bean的实例进行增强.

BeanPostProcessor:工厂勾子.允许客户在生成类的过程中对类进行增强.

publicclassUser(){privateStringusername;publicvoidsetUsername(Stringusername){this.username=username;

第二种:使用有参数的构造方法注入

publicclassPerson{privateintage;publicPerson(intage){this.age=age;

第三种:使用接口注入

publicinterfaceDao{publicvoidrun(Stringpassword);

在Spring里面只是支持里面两种

创建类,声明属性,创建类有参数的构造方法

packagecn.itcast.field;/**

第二步:在配置文件里面配置

在配置文件里面进行配置,可以参数名称或者参数的位置配置值,applicationContext.xml

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第三步:创建测试类

packagecn.itcast.field;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestField{@Test

Spring使用set方法注入

packagecn.itcast.field;/**

第二步:在配置文件里面配置

在配置文件里面配置application.xml

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第三步:创建测试类

packagecn.itcast.field;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestField{@Test

Spring复杂注入,使用\\<property>引入其他bean

packagecn.itcast.field;publicclassCar{/**

packagecn.itcast.field;publicclassPerson{//把car对象注入进来

第二步:在配置文件里面配置

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第三步:创建测试类

packagecn.itcast.field;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestField{@Test

Spring3.0的SpEL的属性注入(SpEL:SpringExpressionLanguage)

<beanid="carInfo"class="cn.itcast.spring.demo6.CarInfo"></bean>

Spring的2.5支持p名称空间注入属性(会用)

为了简化XML文件配置,Spring从2.5开始引入一个新的p名称空间

packagecn.itcast.field;publicclassCar{/**

第二步:在配置文件里面进行配置

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第三步:创建测试类

packagecn.itcast.field;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestField{@Test

数组集合属性注入

在一个类中,有一个属性,属性类型是数组形式,向数组的属性里面设置值

packagecn.itcast.arraycollection;importjava.util.Arrays;/**

第二步:在配置文件里面配置

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第三步:创建测试类

packagecn.itcast.arraycollection;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestArrayCollection{@Test

list集合属性注入

packagecn.itcast.arraycollection;importjava.util.List;/**

第二步:在配置文件里面配置

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第三步:创建测试类

packagecn.itcast.arraycollection;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestArrayCollection{@Test

Set集合属性注入

packagecn.itcast.arraycollection;importjava.util.Set;/**

第二步:在配置文件里面配置

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第三步:创建测试类

packagecn.itcast.arraycollection;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestArrayCollection{@Test

Map集合属性注入

packagecn.itcast.arraycollection;importjava.util.Map;/**

第二步:在配置文件里面配置

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第三步:创建测试类

packagecn.itcast.arraycollection;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestArrayCollection{@Test

Properties属性注入

packagecn.itcast.arraycollection;importjava.util.Properties;/**

第二步:在配置文件里面配置

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第三步:创建测试类

packagecn.itcast.arraycollection;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestArrayCollection{@TestSpring的bean管理(注解配置)

回顾:注解,代码里面特殊标记,写法@注解名称(值),注解使用在类上面,方法上面,属性上面

第一步:在配置文件里面进行配置

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第二步:创建类

packagecn.itcast.annotation;importorg.springframework.stereotype.Controller;//类似于之前xml配置文件

第三步:创建测试类

packagecn.itcast.annotation;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassTestAnno{@Test

Bean管理常用的注解

这四个注解的功能是一样的,都是用来生成类的对象,可以使用在类上面

@Controller(value="hello")publicclassHello{

第二部分注解:做注入的操作,把类对象注入到另一个类中

在此类中声明要注入的对象所在类,作为一个属性,不需要set方法

使用@Autowried进行自动注入(自动装配),根据类对象名称,找到类的对象

@AutowriedprivateUserDaouserDao;

使用@Resource(name="值")实现指定哪个对象注入

@Component(value="userDao")publicclassUserDao{

Resource里面的name值和@Component里面的value值一样

创建Service类,调用两个Dao里面的方法,在Service里面得到两个dao的对象

packagecn.itcast.lianxi;importjavax.annotation.Resource;publicclassPersonService{//属性的注入使用注解方式完成

packagecn.itcast.lianxi;publicclassProductDao{publicvoidtestproduct(){

packagecn.itcast.lianxi;publicclassOrdersDao{publicvoidtestorder(){

第二步:在配置文件里面进行配置

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"

第三步:创建测试类

好了,文章到这里就结束啦,如果本次分享的dayspring和Spring问题对您有所帮助,还望关注下本站哦!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023