Spring注解

Spring注解:简化配置文件开发

注意在spring4.x使用注解需要导入spring-aop.jar   spring-aop-4.2.4.RELEASE   jar包

IoC注解: 替代了配置文件的<bean></bean>    为我们new一个对象

@Component  (作用:会自动new一个对象)  默认id是类名首字母小写

@Component ("自定义id"):可以用在所有类头上,通用注解

mvc3层

Dao层:       @Repository  用于dao层类或接口上 

Service层:       @Service

Controller层:   @Controller 

@Repository   @Service  @Controller  是@Component 的子类



DI注解:给对象注入属性值   写在属性的头上 或者set方法上

SpringDI 注解

一个类型对应一个对象时:

@Autowired  自动按类型装配(前提一个类型只有一个对象)  写在属性的头上 或者set方法上

@Qulifier("bean id/name"):指定要注入的bean  id/name

注意一个类型对应多个对象时一定要使用@Qulifier

javaDI注解: 不稳定 会出问题            不建议使用

一个类型对应一个对象时:

@Resource  自动按名称注入  (找不到名称按类型注入)

private Ink ink;

如果一个类型对应多个对象时:

@Resource(name="bean id/name")


普通基本类型使用@Value("值")注解 进行注入

spring整合 Junit 需要导入 spring-test.jar

注意:
在属性头上使用注解进行注入,无需再添加set方法
反射:
1.Spring通过反射得到该属性:Field
2.Field.setAccessible(true);:打开访问权限
3.Field.set(对象名,属性值):实现DI


spring bean作用域:

singleton(单例)
prototype(多例,每次spring为我们创建新对象)

request(一次请求一个对象)

sessiom(一次会话一个对象)

globalsession

spring 默认使用单例(就一个对象)

使用@Scope更改bean的作用域

scope也可以在<bean></bean>中使用


好处单例:  


好处:节省堆内存;坏处:有可能产生线程安全问题
多例:
好处:可以避免线程安全问题;坏处:每次都会创建新对象,浪费堆内存

手写单例:

单例:对象唯一 

1.构造方法私有

2.对外提供共有方法,供外界访问该唯一对象

饥汉/饿汉模式  eager 饥渴,渴望

懒汉模式   lazy

为什么要使用spring整合 hibernate 等各种框架?

1.核心业务对象全部交给spring创建个管理.对代码进行解耦.方便后期统一维护

2.Spring对框架整合后 可以优化功能

3.spring把一些非核心代码(功能)进行了封装 ,通过springAOP实现无侵入化整合    例如事务控制 ,日志记录

Spring 整合Hibernate  的过程

通过Spring 的IOC和DI进行整合

1.导 IOC包 ,注解( spring-aop.jar ) 包   , hibernate包,  数据库驱动包  ,日志包     数据库连接池包, spring事务控制

2.建立db.properties

3.建立applicationContext.xml

4 通过spring读取.db.properties 

          <!--读取db.properties  -->
 <context:property-placeholder location="classpath:db.properties"/>

5.通过spring创建ComboPooledDataSource (c3p0数据源)

6.通过spring创建 LocalSessionFactorybean(SessionFactory)

7.建立实体POJO

8.使用hibernate注解进行映射

9.Dao 实现类继承HibernateDaoSupport          support支持

hibernateTemplate封装了CRUD操作

    hibernateDaoSupport----继承>hibernateTemplate----->sessionFactory   为了使用hibernateTemplate 

             为了使用hibernateTemplate- 必须注入sessionFactory    

10.使用spring @Transactional注解实现事务控制 

10.1加载spring整合hibernate 事务控制管理器  HibernateTransactionManager 

10.2开始事务注解驱动

10.3使用@Transactional  (不加它 在测试类只能进行查找,不能够对数据库进行处理)

  

 Spring 整合HIbernate常用类

ComboPooledDataSource(c3p0连接池)

LocalSessionFactoryBean 是SessionFactory的一个实现类

封装的是getCurrentSession  

HibernateTransationManager,

hibernateTemplate.find():Query.list(),返回值为list

HibernateTemplater相当于Session





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值