(1)控制反转(IOC)与依赖注入(DI)的认识:两者说的是同一件事情,也就是在Spring中,为了实现灵活性(比如实现连接不同类型数据库的要求,通常使用配置文件),类在运行过程中动态的生成某些特殊的方法与属性
(2)先说依赖注入:某些特殊的方法与属性依赖容器(即Spring)帮我们注入到运行过程中的。
(3)控制反转:原来某些类的生成是由我们自己控制的(比如services类中的DAO),现在是由运行环境上下文(即Spring)帮我们实现控制
(4)好处:耦合性降低,修改起来方便
(5)是交给容器而不是接口
Bean的生命周期问题
(1) Spring里面的“Bean”有一个生命周期问题,一般情况下使用这两种:singleton与prototype。
(2) 为毛会有生命周期这个问题呢?因为如果你的Bean name为一个action或者类名,如果有要求你必须生成两个同名称但不是同一个的类,这里就可以将Bean的生命周期声明为prototype
连接池
连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好任何需要她的线程使用。
a) 为什么会有连接池这个概念:对于大多数应用程序,当它们正在处理通常需要数毫秒完成的事务时,仅需要能够访问JDBC链接的一个线程。当不处理事务时,这个连接即被闲置。相反,连接池允许其他需要的线程使用。
b) 连接池的优点:
i. 减少连接时间创建时间
ii. 简化的编程模式
iii. 受控的资源使用
c) 技术思想:将数据库连接作为对象存储在一个Vector对象中,一旦数据库建立连接之后,不同的数据库访问请求就可以共享这些连接。
Spring注解的一个小问题
@Autowired
publicvoid setUserDao(@Qualifier(value = "u") UserDao userDao) {
this.userDao = userDao;
}
解析:
(1) @Autowired 这玩意儿是自动装配,也就是说当我程序运行的时候Spring会帮我自动的注入值,自动装配的意思就是它会筛选到底是那个值将被注入进去。
(2) @Autowired 在这个位置的意思是标识这个函数方法,也就说其他的在进入这个类之后先去找的标签。
(3) @Autowired 默认是按byname,不多你想用类型,使用@Qualifier
(4) @Qualifier(value ="u")在这里就是做一个筛选,对于这个方法而言是说她只匹配UserDao userDao这样的方法调用,然而这还不够,还有一条筛选条件就是@Qualifier(value ="u")。
(5) @required初始化的时候必须给它配上,configration time必须注入进去。其实这东西写不写都没事,这玩意儿类似于@override,他会在你还没有运行期间就给你检查,检查一下这个东西你必须在配置上给我注入,没要注入就报错。
Spring_17_Annotation_Resource_Component
(1) JSR-250是什么意思?也就说common annotationsfor the Java Platform,是一个JCP订制的标准,目前Spring3.0是支持JSR-250标准下面的绝大多数属性。
(2) @resource就是申明了我现在引入的是一个资源,这个资源的名字是和你的引入对象类型一样的,默认是ByName,如果想用byType的话可以这样写:@resource(name = ””)
(3) @component也就是声明了一个模块组件,在另外一个类看来她就是一个资源,也就是别人可以@resource,
Spring_AOP
(1)AOP是面向切面编程