Spring学习笔记

7.3 依赖注入

  • 设值注入:setter方法
  • 构造注入:构造器

7.5 Spring 容器中的Bean

    Spring超级大工厂—生产Bean

  • 开发者:

        ①开发Bean

        ②配置Bean

  • Spring框架:

        ①根据配置文件创建Bean实例

        ②调用Bean实例方法完成“依赖注入”

     词汇:lazy:延迟;autowire:自动装配

容器中Bean作用域 

     配置方法:scope=”prototype” 或者 @Scope("prototype") 修饰xxxAction

  • singleton:单例模式,只生成一个实例,每次请求该Bean都获得相同的实例。(默认)
  • prototype:每次请求该id的Bean都会新建一个Bean实例返回给程序。
  • request
  • session
  • global session

7.6 Spring 3.0提供的Java配置管理

Annotation(注释)

@Configuration:修饰Java配置类

@Bean:修饰一个方法,将该方法返回值定义成容器中的一个Bean

@Value:修饰一个Field,用于为该Field配置一个值,相当于配置一个变量

@Lazy:指定该Bean是否取消预初始化

@DependsOn:常用强制初始化其指定的其他Bean

7.7 创建Bean的三种方式    

  • 调用构造器创建Bean(大多数时候通过new关键字调用构造器创建);
  • 调用静态工厂方法创建Bean
  • 调用实例工厂方法创建Bean

8.2 Spring“零配置”支持

Spring提供标注Spring Bean的几个Annotation(均修饰在Bean类的前面)

1. 自动搜索如下Annotation修饰的Bean类,并注册成实例

@Component:标注一个普通的Spring Bean类

@Controller("adminAction"):标注一个控制器组件类(一般修饰action)

@Service("adminService"):标注一个业务逻辑组件类(一般修饰service)

@Repository("adminDAO"):标注一个DAO组件类(一般修饰dao)

2. 指定Bean的作用域,默认为Singleton

@Scope("prototype")

3. 配置依赖

@Resource(name=”stoneAxe”),与<property…/>元素的ref属性效果相同

4. Spring 4.0自动装配和精确装配

@Autowired:修饰带多个参数的方法时,自动到容器中寻找匹配该方法参数类型的Bean,并以找到的Bean作为参数调用该方法;修饰实例变量时,Spring会把容器中与该类型匹配的Bean设置为该实例变量的值。

8.4 SpringAOP

AOP(Aspect Orient Programming),面向切面编程,理解原理P644

基本概念

  • 切面 Aspect
  • 连接点 Joinpoint
  • 增强处理 Advice
  • 切入点 Pointcut

8.6 Spring的事务

     参考:http://www.blogjava.net/robbie/archive/2009/04/05/264003.html

     Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。      DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用Hibernate进行数据访问时,DataSource实际为SessionFactoryTransactionManager的实现为HibernateTransactionManager

     

8.7 Spring整合Struts 2

8.8 Spring整合Hibernate

Hibernate Template 和 HibernateDaoSupport

     1. Hibernate Template常用方法,可完成大多数DAO对象的 CRUD操作:

  • delete(Object entity): 删除指定持久化实例。
  • deleteAll(Collection entities): 删除集合内全部持久化类实例。
  • find(String queryString): 根据 HQL 查询字符串来返回实例集合。
  • findByNamedQuery(String queryName): 根据命名查询返回实例集合。
  • get(Classentity Class,Serializable id): 根据主键加载特定持久化类的实例。
  • save(Object entity): 保存新的实例。
  • saveOrUpdate(Object entity): 根据实例状态,选择保存或者更新。
  • update(Object entity): 更新实例的状态,要求entity 是持久状态。
  • setMaxResults(intmax Results): 设置分页的大小。

     2. HibernateDaoSupport常用方法:

  • public final HibernateTemplate getHibernateTemplate()
  • public final void setSessionFactory(SessionFactory sessionFactory)

示例代码:

public void deleteProjectById(Integer projectId) {
    // TODO Auto-generated method stub
    Project project = this.getHibernateTemplate().get(Project.class, projectId);
    this.getHibernateTemplate().delete(project);
    this.getHibernateTemplate().flush();
}

 

未完待续...

posted @ 2015-08-11 09:26  NightOwc  阅读(196)  评论(0编辑  收藏  举报