马士兵spring教程学习总结

-----

IoC 

1、name和id 的区别就是name 里面可以放一些特殊字符。不是邪人整些特殊字符放进去干嘛?

2、scope范围 默认就是singleton模式。至于session request等模式,不整spring MVC是没有必要用的。struts里面可以方便的操作这些东西。

prototype是每次都复制一个bean对象,注意:struts2里面的action,就要用这种scope="prototype"的。struts的规定就是这样的.

3、bean里面的property,注入对象用ref,注意类属性用value,还有一些集合注入,稍微看下即可。

4、autowire自动装配,默认是不自动装配的。一般有byName和byType。就是说如果类里面有个属性对象名为userDAO,在xml里面配置了一个id名为userDAO的bean,那么这时候就可以autowire="byName"就可以了,会直接注入userDAO,不需要再设置property了。用的很少。

5、lazy-init属性:启动容器时(new ClassPathXmlApplicationContext("ApplicationContext.xml")时 ),是实例化装载所有bean的。如果加载了这个属性lazy-init="true",那么就先不加载他,什么时候用到什么时候加载。仅仅用在你的程序巨慢的时候需要手动kill bean,一般用不到。

6、init-method , destroy-method 是指在容器初始化时,该bean要先执行的函数和容器毁灭时要执行的函数。注意:只对singleton模式有效。对prototype模式无效。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

7、要用annotation,

一要在namespace加上xmlns:context="http://www.springframework.org/schema/context"  以及xsi对应的二个值

二是加上<context:annotation-config/>,写上这句,实际上就是初始了四个bean(文档里有该四bean),用来处理annotation

8、1)@Autowired 就是自动的从容器里找一个和参数对应类型相同的bean来注入,所以容器里(applicationContext.xml)里只能有一个该类型的bean,有两个就要报错了。有两个咋整,处理办法如下:

@Autowired

public  void  setUserDAO( @Qualifier("u") User user)

通常qualifier是要显式写在bean的子属性里,但是for fallback match, 也就可以不写,以bean 的id来表示了。。。

原则上autowired可以写在任何方法上。

2)@autowired(required=false) 意思就是说要是没有那个bean也没啥关系,就不注入了。

9、推荐使用@Resource 而不使用@Autowired

10、bean的属性scope,这里是 举例@scope("prototype") ;init-method 和 destroy-method对应 @PostConstruct 和 @PreDestroy




------

AOP

11、 <aop:aspectj-autoproxy /> <!-- 启动AOP annotaiton方式 | aspectj注解的方式。容器启动过程中,有代理需要产生,就会自动扫描到并产生-->

内部是aspectj生成的,aspectj是一个专门生成代理的框架

12、@Aspectj @Before 要实现切面,必须是spring 帮你管起来的bean,自己new出来的没戏,因为你是让spring帮你产生代理。

注意 @Before引入的时候是aspectj里面的before ,而不是Junit里面的。

13、创建切面类和切面逻辑。首先在类上加注解:

@Aspect -- 表示切面类
@Component -- 表示交给spring管理

然后,类中某方法加注解,比如:@Before("execution(public void com.mavict.dao.Impl.UserDAOImpl.save(com.mavict.model.User))")

这就交给spring,由spring自动产生动态代理来处理这个切面逻辑,无需其他操作了。




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值