• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
旧街古巷〃雨未停
每天进步一点
博客园    首页    新随笔    联系   管理    订阅  订阅

spring二

spring里两个很重要的东西
1:IOC:控制反转:使用一个类里的方法;先创建一个类的实例,再调用方法;
IOC来创建只一次实例,其他人可共用,不需要新建实例;
使用IOC的好处:
1):可维护性高,便于进行单元测试,调试诊断故障比较方便;
2):可复用性高,
2:AOP:面向切面编程; 3:ApplicationContext:有3个实现类: a:ClassPathXmlApplicationContext:从当前路径检查配置文件并加载创建容器的实例 ClassPathXmlApplicationContext cpxac=new ClassPathXmlApplicationContext(String str); b:FileSystemApplicationContext:通过参数指定配置文件的位置,可访问类路径以外的其他资源 FileSystemApplicationContext fac=new FileSystemApplicationContext(String str) c:WebApplicationContext:shi spring的web容器,可以通过配置文件进行配置,加载配置文件; 4:依赖注入:接口注入;(不常用) set注入:变量私有化,提供一个set和get方法 构造器注入:使用构造方法 注解注入: <!-- 启动包扫描 --> <context:component-scan base-package="zxd.work"/> 控制层: @Controller("userController") public class UserController { @Resource(name="userServiceImp") private UserService userService; 服务层: @Service("userService") public class UserServiceImp implements UserService { @Resource(name="udao") private UserDaoImp udao; 持久层: @Repository("udao") public class UserDaoImp implements UserDao { 为属性注入值的注解 @Autowired//默认按照类型注入 @Qualifier("dataSource")按照名字注入就上下两个结合使用 //@Resource(name="dataSource")默认按照名字进行注入,若名字找不到,则按照类型匹配,一般使用Resource private BasicDataSource dataSource; 或者: @Resource(name="dataSource")//放在set上面 public void setDataSource(BasicDataSource dataSource) { this.dataSource = dataSource; } @Component可以替换@Controller,@Service,@Repsitory,但是不用; 他们的区别: 4、区别 @Autowired 和 @Resource @Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入; @Autowired默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qualifier一起使用; @Resource注解是又J2EE提供,而@Autowired是由Spring提供,故减少系统对spring的依赖建议使用@Resource的方式; @Resource和@Autowired都可以书写标注在字段或者该字段的setter方法之上。 在java代码中可以使用@Autowire或者@Resource注解方式进行装配,这两个注解的区别是: @Autowire 默认按照类型装配,默认情况下它要求依赖对象必须存在如果允许为null,可以设置它required属性为false, 如果我们想使用按照名称装配,可 以结合@Qualifier注解一起使用; @Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配,可以通过name属性指定,如果没有指定name属 性, 当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取 属性名作为bean名称寻找 依赖对象. 注意:如果没有指定name属性,并且按照默认的名称仍然找不到依赖的对象时候,会回退到按照类型装配,但一旦指定了name属性, 就只能按照名称 装配了. ***AOP网址:http://www.cnblogs.com/oumyye/p/4480196.html IOC:控制反转,创建对象实例的控制权从代码控制剥离到IOC容器控制; DI:依赖注入,一旦创建实例,为这个对象注入属性值,或者是其他对象的实例,侧重于实现; AOP:面向切面编程,典型的动态代理模式的体现,aop是对oop(面向对象)编程的一种补充和完善;oop引入封装继承多态建立一个 层次结构,模拟一个公共行为的集合;但对分散的对象引入公共行为,oop能力弱,因为是自上而下的流程执行,不适合定义 从左到右流程关系,例如日志功能,日志代码分散到所有的对象层次中,与我们分散的对象的核心代码毫无关系,导致大量 大量代码重复,不利于各模块的重用性; 解决办法:将程序中交叉的业务(日志,安全,事务)封装成 一个切面,然后注入到目标对象中。 实现AOP技术:1:动态代理技术,利用截取消息放手,对消息进行装饰,以代替原来对象行为的执行; 2:静态植入,引用特定的语法创建切面,从而编译器在编译期间植入有关的代码; <!-- 开启aop动态代理 --> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy proxy-target-class="true"/> xml里加上aop的网络配置 xmlns:aop="http://www.springframework.org/schema/aop" http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd

 

posted @ 2017-08-18 08:46  旧街古巷〃雨未停  阅读(109)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3