开始学习Spring(一上手要建立一个jdbctempalte有一点难)--->所以先学Spring打一下基础(以前了解过不熟悉)
开始-------->Spring
Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。
Spring框架包含许多特性,并被很好地组织在下图所示的六个模块中
![v2-2d5cb3e0a86a42b82ccce4c30eda6cf6_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/b572354ef033cdfaabb587c235cd2e06.jpeg)
1.Core 封装包是框架的最基础部分,提供IoC和依赖注入特性
2.Context(上下文) 封装包构筑于Core封装包的坚固基础上:它提供了用一种框架风格的方式来访问对象,有些像JNDI注册表。
3.DAO 提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。
4.ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。
5.Spring的 AOP 封装包提供了符合 AOP Alliance规范的面向方面的编程(aspect-oriented programming)实现,让你可以定义,例如方法拦截器(method-interceptors)和切点(pointcuts),从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。
6.Spring中的 MVC 封装包提供了Web应用的Model-View-Controller(MVC)实现。
在我的了解中就是
IoC(控制反转)容器和AOP面向切面的编程(主要是解耦)
1.IOC控制反转(Inversion of Control,控制倒转)
IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。
针对IOC容器负责容纳此前所描述的bean,并对bean进行管理
在Spring中,BeanFactory是IoC容器的核心接口。 它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。
XmlBeanFactory类将获取此XML配 置元数据,并用它来构建一个完全可配置的系统或应用。
![v2-4dd849eeda32c967416e5f399ada6a8d_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/b8c76a26066a83b0cb792c7e437ef414.png)
下面的XML的配置元素的基本 配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="..." class="...">
<!-- collaborators and configuration for this bean go here -->
</bean> <bean id="..." class="...">
<!-- collaborators and configuration for this bean go here -->
</bean> <!-- more bean definitions go here -->
</beans>
实例化
ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {"services.xml", "daos.xml"});
// an ApplicationContext is also a BeanFactory
(via inheritance) BeanFactory factory = context;
XML配置元数据的结构
XML的文件可以会被拆分
<beans> <import resource="services.xml"/>
<import resource="resources/messageSource.xml"/>
<import resource="/resources/themeSource.xml"/>
<bean id="bean1" class="..."/>
<bean id="bean2" class="..."/>
</beans>
就有可能分成几个XML的文件
里面可能会有其他的不同的bean
- bean行为的定义,这些定义将决定bean在容器中的行为(作用域、生命周期回调等等)
- 对其他bean的引用,这些引用bean也可以称之为协作bean(collaborators) 或依赖bean(dependencies).
- 创建bean实例时的其他配置设置。比如使用bean来定义连接池,可以通过属性或者构 造参数指定连接数,以及连接池大小限制等
![v2-6c3243077ddd3075ad3f09551385a536_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/615348d80cc05e0b520123f42975cccd.jpeg)
关于一些的bean的属性
![v2-ba7a7563d69e994e2bff108cf0758b7f_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/152fa775d0f81b942f7044621744f31e.png)
构造器的实例化
Spring对class并没有特殊的要求, 我们通常使用的class都适用。也就是说,被创建的类并不需要实现任何特定的 接口,或以特定的方式编码,只要指定bean的class属性即可。不过根据所采用 的IoC类型,class可能需要一个默认的空构造器。
<bean id="exampleBean" class="examples.ExampleBean"/>
<bean name="anotherExample" class="examples.ExampleBeanTwo"/>
![v2-774dac3dc21de17fe842674d7e16a278_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/cf1b09d67329453da1a398b9bc09b690.png)
用静态工厂方法实例化
静态工厂方法创建bean时,除了需要指定class 属性外,还需要通过factory-method属性来指定创建bean实例 的工厂方法。
<bean id="exampleBean" class="examples.ExampleBean2" factory-method="createInstance"/>
工厂的构造方法或更好地解耦
实例工厂方法实例化
用来进行实例化的非静态实例工厂方法位 于另外一个bean中,容器将调用该bean的工厂方法来创建一个新的bean实例。为使 用此机制,class属性必须为空,而factory-bean 属性必须指定为当前(或其祖先)容器中包含工厂方法的bean的名称,而该 工厂bean的工厂方法本身必须通过factory-method属性来设定。
<!-- the factory bean, which contains a method called createInstance() -->
<bean id="serviceLocator" class="com.foo.DefaultServiceLocator">
<!-- inject any dependencies required by this locator bean -->
</bean> <!-- the bean to be created via the factory bean -->
<bean id="exampleBean" factory-bean="serviceLocator" factory-method="createInstance"/>
容器的使用
Resource res = new FileSystemResource("beans.xml"); BeanFactory factory = new XmlBeanFactory(res);
![v2-d9c7270b74c4b3d536638867cea2b67f_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/b56c2d3b71c8f131a33465a454265e95.png)
对Spring的bean容器的了解------------->
今天完成的任务:
主要是IOC的bean容器的了解,XML里面bean有哪些组成,怎么配置bean ,还有实例化,怎么调用bean,构造器,还有工厂的怎么实例化,bean容器的使用,以前了解的时候不是很清楚,现在回过来看,知识点要清楚一些,后面用到的时候,我在来加深一些印象
因为在观察那个任务17的时候,开始要jdbctemplate,我就查了资料,主要是要的知识背景多,我就先弄最主要的Spring的基础知识,熟悉后面的才好完成,17有一点难,预计多花点时间完成
明天的任务:我还是计划完成IOC里面的依赖注入,我先把那个spring的基础知识准备一下,后面的jdbctemplate完成可能会理解的更深入一些
今天的困难: 就是刚刚开始我看这个jdbctemplate 我没有思路,后面就先学Spring慢慢的了解多一点,后面才学到jdbctemplate 的操作,开始不能跳过,不然后面的学习起来比较恼火.
就是想请师兄给我具体的讲一下,Spring 我改从哪里下手,才能针对jdbctemplate ,才能更好地完成任务上面的点,后面的知识也联系得上,我在这里开始就有点迷茫,不知道怎么入手,今天感觉学习的日报学的不好,没有那种目标明确的感觉,请师兄给我讲解一下(主要学习的迷惑)
收获:今天我对自己学习的有点不满意,但是收获就是学习IOC的bean容器的相关知识,还有在里面怎么实例化的bean还有工厂的实例化,以前有用到工厂的思想,但是不是很明白,在哪里创建,有的时候看视频里面提了一下,也不是很明白,基本上对bean的了解更深入了.
今天的感觉有点迷糊,说明自己在Spring这块知识还不够,----->请师兄详细的讲解,该怎么学习这个.(坚持不懈---:>)