Spring使用(未更完版)

一、Spring的核心

1.IoC控制反转

        指的是原先的容器要调用者去创建,使得控制权在调用者手里,这时需要调用者管理这些容器,非常不方便。然后就出现了Spring,这位大侠将容器创建权拿到手里,启动Spring时就创建了容器,调用者可直接调用,简化开发。

总结:将控制权交给Spring容器

2.AOP面向切面编程

运行期间通过动态代理实现程序功能统一维护的一种技术,是OOP(面向对象编程)的一种延续,利用AOP可以对业务各个部分进行隔离,从而使得业务之间耦合度降低,提高程序可重用性,提高开发效率

Tips:计算器代表我们的业务

二、Spring容器对象结构图(仅展示一部分)

BeanFactory:顶级接口容器

            --》ListableBeanfactory(接口)

                     --》ApplicationContext 拓展BeanFactory,拓展aop(接口)

                             --->ClassPathXmlApplicationContext(实现类)加载类路径xml配置

                     --》WebApplicationCotext 拓展了ApplicationContext接口,支持web环境(接口)

                              --》ConfigurableWebApplicationContext(接口) 拓展了ApplicationContext接口,支持web环境                            

                                -->AnnotationConfigWebApplicationContext 加载Class类配置值(实现类)

                                -->XmlWebApplicationContext 加载XML配置

三、Spring的使用

xml文件

     必须要有beans根标签,并且beans标签中必须引入beans。xsd模板定义文件

     bean标签的class不能配置接口类,必须是个可实例化的类

     bean标签的id必须唯一,不可重复

     xml配置文件放在src类路径下,名字随意

如果有两个相同id会怎么样呢?   

1.同一个xml配置文件里不能存在id相同的两个bean,否则Spring容器启动时会报错,因为id标识bean里面的唯一标识符,启动Spring容器时会验证id的唯一性重复会报错,发生在解析xml转化为BeanDefinition的一个阶段,两个不同的xml文件,自然就可以存在相同的id啦。

2.IoC容器加载bean时会将相同的bean进行覆盖Spring3.X版本后发生了变化,这时提供了@Confinguration注解去声明配置类,使用@Bean注解去声明,以这种形式 取代了XML配置,若声明了同一个Bean,只会得到第一个实例对象。使用第二个同(类型/名字)Bean会报错,发生在Spring的IoC容器的Bean初始化之后的依赖注入阶段

四、初始化Spring容器对象

1.当前加载类路径下xml配置,使用ClassPathXmlApplicationContext创建Spring容器

2.ApplicationContext接口中的三个getBean重载方法,两个按照bean的id获取对象,一个按照类型获取对象

3.getBean方法得到的对象,是同一个对象,即Spring管理的bean对象,默认单例状态

4.当执行new  ClassPathXmlApplicationContext对象时,SysuserServiceImpl对象的构造器会立即执行,在该行代码出打断点,查看对象内数据

五、Spring快速入门

5.1添加mysql驱动和Druid连接池包

什么是连接池?

在应用程序和数据库中间的一个缓冲池,用来管理数据库连接的复用和分发,为了提高访问数据库的性能和可拓展性

5.2修改XML配置文件的DataSource

5.3初始化Spring容器对象

注意

1.bean标签的init-method属性用来指定bean实例化后立即执行的初始化方法,destroy-methods属性指定spring容器销毁后执行的释放资源方法

2.只有显示执行了ApplicationContext的close方法才能够触发destroy-method

3.property标签的name属性值是DruidDataSource类中的成员变量名,value是赋值,等价于调试了set方法,配置bean标签与如下代码效果类似

六、Bean标签属性详解

七、IoC

7.1Bean标签配置

在XML中配置bean标签注册bean对象到Spring容器,一般jar包中类需要注册进Spring容器使用bean标签配置

7.2工厂实例化bean

构建对象比较复杂的情况下使用工厂实例化bean,比如sqlSessionFactory对象的构建,如果需要吧mybatis的sqlSessionFactory对象交给spring荣光其,可使用工程实例化bean

7.2.1静态工厂实例化bean

static修饰  表示静态工厂方法

7.2.2实例工厂实例化bean

1.工厂方法没有static修饰,必须要先实例化出工厂对象,再调用工厂对象的实例方法

2.factory-bean属性值是工厂bean对象的id值,表示引用对象

7.3 包扫描

一般开发人员自定义的类才使用包扫描方式注册进Spring容器

注意点

1.context:compoent-scan不仅仅识别这四个注解

2.通过注解方式注册的bean,默认id是类名  首字母小写,可以自定义id

3.这四个注解目前没区别,效果都是将bean注册到spring容器,后续springMVC框架有区别,要有良好的代码习惯

4.不可把注解放在接口类上

8.DI依赖注入

指的是组件之间依赖关系再运行期决定,形象的说,由容器动态的将某个依赖关系注入到组件之中

8.1Set注入

注意点

1.property标签的ref和value两个属性的选择,如需要注入的值是容器中的bean对象,则使用ref指定引用bean的id,如果注入的主是简单类型(String,Date,Integer 等),则使用value指定值

2.另一种set注入方法,引入p命名空间,在bean节点中以“p:属性名=属性值”的方式为属性注入值

8.3构造器注入

注意点

1.consytuctor-arg标签中的name属性表示形参名;index属性表示形参索引号

8.3集合注入

8.4内部bean注入

以上8.3案例中userList属性的注入即内部bean注入,当前bean对象不能呗其他对象引用

8.5自动装配

通过注解方式来进行DI注入;一般和包扫描结合使用

如果没有指定name属性,并且按照默认的名称找不到依赖对象的,@Resource注解会回退到按类型装配,但一旦指定了name属性,就只能按照名称进行装配

注意点

1.@Autowored和@Resource俩注解的区别

@A 默认按照类型装配,类型匹配不上,再按照形参名称装配

@R 默认按照名称装配,名称不配不上,则按照类型装配咯

9.类中常用注解

@Scope用于指定scope作用域的(用在类或方法上)等价于bean标签的scope属性

@PostConstruct用于指定初始化方法(用在方法上)等价于bean标签的init-method属性

@PreDestory用于指定销毁方法(方法)等价于bean标签的destory-method属性

10.XML常用标签

1.contetx:property-placeholder标签,导入类路径下的properties文件到spring容器

定义dao.xml文件

注意点

context:property-placeholder标签的ignore-unresolvable属性是当引入了多个properties文件时必须指定的属性

2.import标签:导入其他spring风格的xml文件

Spring.xml总配置中通过import标签包含dao.xml

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值