您的位置:首页 > 编程语言 > Java开发

spring 零散知识点

2016-01-30 23:32 316 查看
<context:annotation-config> 告诉spring 我们打算使用基于注解的自动装配 (这样只是有助于我们消除使用<constructor-arg> 和 <property>, 单还是必须要显示的声明bean)

<context:component-scan> 其除了完成 <context:annotation-config>的工作,还会自动检测和创建bean,既不需要我们现实的声明<bean>......</bean>

过滤组件扫描

<context:component-scan>

        <context:exclude-filter>

        <context:include-filter>

</context:component-scan>

@Autoware  (显示通过构造函数装配,然后是byType装配),不仅可以用来装配setter方法,还可以标注需要自动装配的任何方法,还可以对构造器进行标注,还可以直接标注属性,并删除setter方法, 当标注多个构造器时,spring会选择参数最多的哪一个构造器

属性:

required: 设置为false 表示可以装配,可以为空,防止抛出异常(spring找不到相应的bean时);

@Qualifier("specific_bean"): 标注改bean是个指定的特殊bean , 和@autoware一起使时是,当@Autoware 匹配到多个bean时,缩小到那些被@Qualifier 标注限定的范围内

JSR-330 : 为了统一各种依赖注入的编程模型,JCP发布了java 依赖注入规范, 既JSR-330

@Inject 是jsr-330 的核心部件,该注解几乎可以完全替换@Autowire,可以用来自动装配属性,方法,构造器,和@Autowire 不同,@Inject 没有require属性

@Named:其功能非常类似于@Qualifier (@Named("specific_beanName")) --(实际上@Named注解就是一个@Qualifier注解多标注的注解)

@Value: spring3.0中引入的用来标注基本数据类型的值,如int boolean,可以用来直接标注属性,方法,或者方法参数

@Value("Eruption"),其中Eruption 是一个表达式(spel),它的计算结果可以使任何类型,既@Value 可以装配任意类型的属性

Spring 只支持方法连接点,既在方法调用之前,之后,异常等等, 而AspectJ不仅支持方法连接点,还支持构造器和字段接入点,如对象的某个字段的值发生改变时执行切面逻辑  ,或者用构造器初始化对象是执行切面逻辑

JPA Hibernate 数据库之间的关系

数据库:这个我就不多介绍了(有很多种,MySql,Oracle,SQLServer等)

hibernate:一种面向对象的操作数据库操作中间产物,以面向对象的方式操作数据库(这之类的产品还有MyBatis等), 对不同数据库进行了封装,适用于所有数据库,项目中切换不同的数据库比较容易,比如我现在用的是MySql,但是公司想要用Oracle替换掉MySql,这样只需要修改配置文件即可

JPA:sun公司提出的一种规范, 主流的对象关系映射第三方都实现了这种规范,好处是比如现在公司用的是Hibernate,但是公司要求替换成MyBatis,如果没有用JPA的话,你需要在工程用把所有的Hibernate替换为MyBatis, 有了JPA 你只需修改配置文件即可

以上三种关系可以理解为,hibernate和Mybaits 对不同数据库进行了封装,使用户不必关注与数据库之间的不同,以一种统一的方式来操作不同的数据库

而JPA是对 对象关系映射第三方的一种封装,使得我们不必关心我们使用的是Hibernate还是Mybaits,在以后的工作中很方便的替换,只需要修改配置文件就好了

DAO 持久层,用来存储数据

Service:业务层,处理一些业务逻辑(比如修改密码),修改之后用DAO对密码进行提交

serializable,标记接口,用来标记实现该接口的类具有特殊的功能,既序列换和反序列化(默认java类是不能被序列化和反序列化的),(标记接口在java中很常见)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: