很多朋友对于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问题对您有所帮助,还望关注下本站哦!