spring2.5 学习笔记(4)

2019-08-29 23:15

spring2.5 学习笔记 第16页 共46页

destroy-method=\> userService类的代码 public class UserService { } 测试代码: public void init(){ System.out.println(\现在开始初始化UserService\); } private UserDao userDao = new UserDaoImpl(); public UserDao getUserDao() {return userDao; } public void setUserDao(UserDao userDao) {this.userDao = userDao;} public void add(User u){ userDao.save(u);} public void destroy(){System.out.println(\); } public void testAdd_4() throws Exception { } ClassPathXmlApplicationContext factory = new UserService service = (UserService)factory.getBean(\); System.out.println(service.getUserDao()); //因为在非webApplacationContext中不能自动destory,因为需要手动destory //而ApplicationContext没有实现destory方法,因此需要具体的实现类来destory factory.destroy(); ClassPathXmlApplicationContext(\); 第六课:annotation方式Spring

一、 开始使用annotation配置Spring

首先需要在spring的xml配置文件中加入下列红色加粗部分的代码。

这样当spring加载配置文件时,发现有标签后,会帮我加载以下四个类(用于处理annotation方式的配置):

1、AutowiredAnnotationBeanPostProcessor, 2、CommonAnnotationBeanPostProcessor, 3、PersistenceAnnotationBeanPostProcessor, 4、RequiredAnnotationBeanPostProcessor spring2.5 学习笔记 第17页 共46页

二、 @Autowired、@Qualifier

还是需要在xml文件中配置bean

(一) @Autowired

位置:可以放在成员属性前面,也可以放在getter或setter方法前面,但是建议放在setter方法前面 作用:表示该对应的成员属性可以完成自动配置功能(默认是根据byType的) 例如: xmp配置文件: 前缀部分见上面代码,以此略。。。 userService public class UserService { //表示该成员属性可以自动装配(默认根据类型byType) //annotation建议放在setter方法前面 @Autowired public void setUserDao(UserDao userDao) { } public void add(User u){ }} userDao.save(u); this.userDao = userDao; private UserDao userDao = new UserDaoImpl(); public UserDao getUserDao() {return userDao;} 说明:这样spring就可以帮我们完成自动装配功能(默认是根据byType) (二) @Qualifier 因为@Autowired默认是根据byType来自动装配注入的。当有多个相同类型的bean时,Spring就会出现异常,提示找到多个符合条件的bean,但是不知道选择哪个bean来注入。 这时我们需要另外一注解来告诉Spring用那个bean,这就是@Qualifier注解, @Qualifier使用value参数来指定注入那个bean 代码: public class UserService { } private UserDao userDao = new UserDaoImpl(); public UserDao getUserDao() {return userDao; } //表示该成员属性可以自动装配(默认根据类型byType) //当配置文件中有多个相同类型的bean时,需要使用@Qualifier注解来说明那个bean来自动装配 @Autowired public void setUserDao(@Qualifier(value=\ UserDao userDao) { } public void add(User u){ userDao.save(u);} this.userDao = userDao; spring2.5 学习笔记 第18页 共46页

三、 @Resource(重要、推荐)

还是需要在xml文件中配置bean

(一) JSR-250

JCP:Java Community Process是由多个厂家出人来构成的J2EE组织,主要是用于定Java的一些新的标准 而每一个标签都可以称之为一个JSR

而每一个新的JSR都会加一个数字是区别什么JSR,可以到官方网看看具体JSR定了哪些新的标准。

(二) @Resource 代码: import javax.annotation.Resource; public class UserService { } 说明:在这里引用了一个资源,这个资源的名称和这个setter方法后面的成员属性名称一致(userDao) 注意这个@Resource是J2EE的(import javax.annotation.Resource) @Resource默认是根据byName来的,如果没有找到相同的名称再根据byType,当然也可以指定bean的name如下: @Resource(name=\) public void setUserDao(UserDao userDao) { } 注意:一般使用@Resource而不会使用@Autowired

不足:如果没有源码,就无法使用annotation,只能使用xml

this.userDao = userDao; private UserDao userDao = new UserDaoImpl(); public UserDao getUserDao() { } return userDao; //在这里引用了一个资源,这个资源的名称和这个setter方法后面的成员属性名称一致(userDao) //注意这个@Resource是J2EE的(import javax.annotation.Resource) @Resource public void setUserDao(UserDao userDao) { } public void add(User u){userDao.save(u);} this.userDao = userDao; 四、 @Componet

以上使用@Autowired、@Resource注解时,还是需要在xml文件配置bean,这样就达不到完全使用annotation进行注解。因此现在引用@Component在那个bean前进行注解,表示那个类是需要的bean

有了@Componet注解,这样就不需要在xml文件中配置bean了。

注意:@Componet是Spring的注解(org.springframework.stereotype.Component;)

例如: 前缀部分见上面代码,以此略。。。 bean类中需要使用@Componet(或@Service、@Repository、@Controller)注解这个类是bean。

代码: spring2.5 学习笔记 第19页 共46页

import javax.annotation.Resource; import org.springframework.stereotype.Component; // @Componet注解默认bean的名称是类名首字母小写 // 也可以利用value属性指定bean的名称 @Component(value=\) public class UserService { private UserDao userDao = new UserDaoImpl(); public UserDao getUserDao() {return userDao;} //在这里引用了一个资源,这个资源的名称和这个setter方法后面的成员属性名称一致(userDao) //注意这个@Resource是J2EE的(import javax.annotation.Resource) @Resource public void setUserDao(UserDao userDao) {this.userDao = userDao;} public void add(User u){userDao.save(u);}} 注意:@Componet注解,默认bean的名称是类的首字母小写,当然也可以利用value属性指定bean名称(在annotation中属性为value可以不写,直接写值) 说明:当Spring在加载配置文件时,发现有 标签,并且后面的base-package属性指定了包名 ,就会在这个指定的包名下面搜索灰,看哪个类用@Componet进行了注解,如果有Spring就将其初始化到容器中,认为是一个bean 一般建议@Componet注解后面都指定名称。 五、 @Scope、@PostConstruct、@PreDestroy

@Scope对应于xml配置文件的scope属性 @PostConstruct对应于xml配置文件中的init-method属性 @PreDestroy对于应于xml配置文件中的destroy-method属性 例如如下: import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.annotation.Resource; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @Component(value=\) @Scope(\) public class UserService { @PostConstruct public void init(){System.out.println(\现在开始初始化UserService\);} private UserDao userDao = new UserDaoImpl(); public UserDao getUserDao() {return userDao;} @Resource public void setUserDao(UserDao userDao) {this.userDao = userDao;} public void add(User u){ userDao.save(u);} @PreDestroy public void destroy(){System.out.println(\); } spring2.5 学习笔记 第20页 共46页

六、 注解对应的jar包

1、@Autowired 2、@Qualifier 3、@Componet 4、@Resource 5、@Scope

6、@PostConstruct 7、@PreDestroy

org.springframework.beans.factory.annotation.Autowired; org.springframework.beans.factory.annotation.Qualifier; org.springframework.stereotype.Component; javax.annotation.Resource;

org.springframework.context.annotation.Scope; javax.annotation.PreDestroy; javax.annotation.PreDestroy;

第七课:AOP(面向切面编程)

一、 AOP概念

AOP:Aspect Oriented Programming(面向切面编程)

是对面向对象的思维方式的有国补充

二、 利用动态代理实现面向切面编程

场景:需要在执行方法之前加入一些日志。。。 可以使用以下三种方法

1、 继承 2、 组合

3、 动态代理(我们的实例) UserDao接口 public interface UserDao { } UserDaoImpl(UserDao接口的现实) public class UserDaoImpl implements UserDao { } UserService(业务层) public class UserService { } User(实体对象) private UserDao userDao = new UserDaoImpl(); public UserDao getUserDao() {return userDao;} public void setUserDao(UserDao userDao) {this.userDao = userDao;} public void add(User u){ userDao.save(u);} public void delete(User u){ userDao.delete(u);} @Override public void save(User u) {System.out.println(\);} @Override public void delete(User u) {System.out.println(\);} public void save(User u); public void delete(User u);


spring2.5 学习笔记(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:憨山老人年谱自叙实录文白对照

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: