HelloSpring
- 对IOC方式的理解(就是抽离出一个创建对象的容器),以及property依赖set注入和无参构造注入,有参构造注入包括index、type和name三种方式,前两种会造成混淆,建议使用变量名注入,可以结合使用;
- 对于复杂属性的注入:
- 单个对象在旁边配置好bean后,ref其id即可;
- 数组应用property双闭合标签,子标签array+多个value即可解决;
- List类比Array,Map应用Entry,Set没什么可说的…
- String属性value=""视为空字符串,嵌套视为null注入;
- 针对Properties对象存在Props标签,存在key属性包夹value值,
eg:value
- 自动装配:配置bean属性下的autowire为byName(通过id和set方法的名称进行反射装配)或者byType(确保类型唯一),需要注意的是两者只针对bean内的单个对象属性装配有效,基本数据类型会为默认值;
- 注解自动装配@Autowired,可以配置在set方法或者对象属性上,需要注意的是其默认是根据bean配置智能选择是byType还是byName,出现混淆情况时可追加@Qualifier(value=“qualifier”)进行名称区分,此时为具体地byName装配;
- 此外,JDK11之前,javax还默认提供@Resource注解实现与@Autowired类似的装配方式(只不过其内部装配方式的选是与@Autowired相反),同样可在value参数下指定具体地bean的id进行区分;
- 以上装配方式多适用于对象属性;
注解开发
- @Component:标注在类签名之上,等价于单独bean的配置;
- @Controller、@Repository和@Service等价于@Component,只不过在MVC架构下可以细化bean的分类,明确层级间的分工;
- @Value(“value”)加注在set方法或者字段属性上(可以没有set方法),等价于property的注入;
- @Scope(“prototype”)标注bean的作用域;
- 注意以上注解仍然需要依存于ApplicationContext.xml(提供注解支持的语句),所以还是得写,尽管其并没有内容。
- @Configuration+@Bean和@Configurationn+@ComponentScan是额外两种注解配置bean的方法,两者都是对xml的替换,前者@Configuration标注配置类,内部用@Bean标注方法并实现返回实例,即可实现对bean的装配,默认方法名对应id;后者则是在指定bean对象上标注@Component然后再配置类上标注@Configuration+@ComponentScan(“指定扫描的包名”)即可实现对指定区域bean的装配;
动态代理
继承方式(cglib)
接口方式(JDK,AOP默认执行的方式)
- 只需定义好执行InvocationHandler接口的调用处理程序类,然后在其中实现增强的方法和功能定义,JDK在运行时自动生成代理对象,需要注意的是动态代理中没有代理类的概念,这也正是“动态”的一种体现;但是仍然存在规范接口和实现接口的被代理类。
- 其中InvocationHandler的invoke方法是代理入口,即代理类的增强方法被调用时触发的程序,注意是在参数method调用invoke方法时为增强方法被调用的时机,提供三个参数:
- ProxyInstance=代理的类实例;
- Method=代理类的方法;
- Args=方法参数;
- 在需要代理的地方调用Proxy的代理生成静态方法,Proxy.newInstance()实例化代理接口,也需要三个参数:
- 接口类(被代理类)加载器,进行声明定义代理类;
- 规范接口数组;
- InvocationHandler实例;
- 之后强转返回结果就是代理类的实例,可以通过调用增强方法实现访问代理类进而访问被代理类。
- 需要注意的是一般在InvocationHandler会存在与被代理类(实现规范接口的类)的关联关系,以此来访问其中的待增强方法。
AOP
对功能进行横向拆分,区别维护,降低耦合度。
使用前需要导入aspectsJ依赖。
Spring注解的作用就体现在以注解为切入点的时候
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:
做网站、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的
卢龙网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
- 执行接口:MethodBeforeAdvice、AfterReturningAdvice等, 通过执行接口完成:编写多个功能类分别实现对应接口重写方法,之后在xml中在aopconfig中配置aop:pointcut,主要是expression的配置:
- 自定义切面类,编写要切入的方法,之后在xml里进行AOP配置:
- 自定义切面类应用注解:
整合Mybatis
org.mybatismybatis3.5.2mysqlmysql-connector-java5.1.47junitjunit4.12org.springframeworkspring-webmvc5.1.10.RELEASEorg.springframeworkspring-jdbc5.1.10.RELEASEorg.aspectjaspectjweaver1.9.4org.mybatismybatis-spring2.0.2
- 其中Mybatis-Config.xml中以及被省略掉了大多数内容,同时在Mapper中写改写的SQL,在实现类中获取会话获取mapper执行方法或者增加逻辑,调用方只管调用实现类的服务即可。
- 也可以在外部配置db.properties文件然后通过标签数显导入以及增加MapperScannerConfigurer的bean来自动配置sqlSession,Spring配置文件(版本2):
- 其中的MapperScannerConfiguer作用是,扫描basePackage包下的接口,结合注入的sqlSessionFactory为每个mapper接口生成bean(调用getMapper)等待被注入到service中。
Spring事务管理
- 首先需要注册配置事- 务管理器的bean;
- 编程式事务:利用try{}catch{}块在异常时回滚事务;
- 声明式事务:利用AOP增强数据库写入方法为事务提交方式:(需要引入约束)
- 其中事务的传播特性是指对于在多个被Spring增强的事务方法间存在的调用,也就是嵌套调用事务方法,被调用的方法会根据传播配置决定是否新建事务等,一般CUD用默认即可,R用Supports。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章名称:SpringFrameWork学习笔记-创新互联
网站URL:
http://shouzuofang.com/article/cshsjg.html