初识Spring笔记

1. 控制反转---- Spring通过一种称作控制反转IoC   Inversion of Control)的技术促进了低耦合, 当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。IOC 把对象的创建交给了 Spring,降低了我们代码类和类之间的耦合度,方便我们对程序进行扩展和维护

2. 面向切面----Spring提供了面向切面(AOP   Aspect Oriented Programming)的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transation)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑。在不修改原有代码的基础上增加新的功能,在日志和异常处理方面很常用

**spring注解

 注解类:相当于一种标记,加上注解就等于为程序打上了某种标记,没加,则等于没加某种标记,看你有什么标记,就去执行相应的命令和干相应的事。

 

(1) spring作用在类上的注解有@Component、@Responsity、@Service以及@Controller;而@Autowired和@Resource是用来修饰字段、构造函数或者设置方法,并做注入的。

(2) 当注解作用在类上时,表明这些类是交给spring容器进行管理的,而当使用@Autowired和@Resource时,表明我需要某个属性、方法或字段,但是并不需要我自己去new一个,只需要使用注解, spring容器会自动的将我需要的属性、方法或对象创造出来。这就是通常所说的依赖注入和控制反转。

3. applicationContext.xml 的配置的一些标签

 

id:唯一标识,不能重复

name:设置名字,如果有 id 的话可以和别的重复,否则不能

class:类的全名:包名 + 类名

scope:设置创建模式
singleton:单例,只有一个对象,默认的,最常用的(默认)
prototype:多例,每次都是一个新的对象

init-method / destroy-method:在对象创建和销毁的时候调用的方法,
只有在 singleton 下有效,并且方法不能有参数

lazy-init:默认 false 在 bean factories 创建的时候,创建注册过的所有单例类
bean factories 在第一使用 getBean 获取单例对象的时候创建
设置为 true 就是懒加载,只有第一次使用的时候才会去创建对象

autowire:自动把注册过的 bean 关联到当前 bean 对应的属性上
byType:如果注册过的 bean 的类型和属性的类型一致,那么进行赋值操作

  这个会实现自动赋值操作

byName:根据注册过的 bean 的名字自动注入属性

 

4. DI:Dependency Inject 依赖注入 创建对象时动态为属性赋值 

  两种方式:setter 注入和 构造方法注入,IOC 是 Spring 帮我们创建对象,DI 是 Spring 帮我们为属性赋值

1. 通过 setter 方法进行设置

  <property name="name" value="奥迪双钻">

2. 通过构造方法进行设置(index 是参数的索引,从 0 开始 , index 和 type 可以省略)

  <constructor-arg name="price" value="200"></constructor-arg>

3. 使用 SpEL 语言赋值:写一些简单的 java 代码

  <property name="name" value="#{'bmw'.toUpperCase()}"></property>

  <property name="name" value="#{user.name + ' 的汽车'}"></property>

4. p 标签: 需要引入 xmlns:p="http://www.springframework.org/schema/p"      

  在 bean 标签的属性中使用 p:属性名="" 进行赋值操作

  对象赋值需要使用 ref,包括 p 标签也是 p:属性名-ref="bean 的 id"

  <property name="owner" ref="user"></property>

5. 集合的赋值

    <list></list>  ArrayList
    <set></set>    HashSet
    <map>      HashMap
      <entry>
        <key></key>
        <value></value>
      </entry>
    </map>


    <props>       Properties
        <prop key="">value</prop>
        <prop key="">value</prop>
    </props>

5. 切入点和切入点表达式

切入点:
before:方法执行前,=== 参数校验
after:方法执行后,无论是否产生异常 === 清理资源
after-returing:方法正常执行完毕 === 修改返回值
after-throwing:方法抛出异常 === 包装异常信息
around:方法执行前后两个点

pointcut:切入点表达式
execution(修饰符 返回值 包名.类名.方法名(参数类型))
修饰符:可以省略
返回值:不能省略,可以使用 * 代替
包名:com 不能省,可以使用 * 代替,
中间的包名也可以使用 * 代替,如果想省略需要写 .. 代替
类名,方法名:不能省略,可以使用 * 代替
参数:如果只有一个参数可以使用 * 代替,如果有多个参数可以使用 .. 代替

6. web 项目

在web.xml 中作如下设置

        <listener>
                <listener-class>
                        org.springframework.web.context.ContextLoaderListener
                </listener-class>
        </listener>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>                   

 

 

posted @ 2017-09-07 21:11  清泉***  阅读(161)  评论(0编辑  收藏  举报