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

马士兵spring教程学习总结

2013-10-20 10:40 323 查看
-----

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自动产生动态代理来处理这个切面逻辑,无需其他操作了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: