Spring经典总结(三)
属性注入时Spring会自动进行类型转换(String—>int)
-->
Spring经典总结
测试类代码:
public class MessageBean {
private String name;
private int age;
private List friends;
private Set cities;
private Set types;
private Map books;
private Properties dbParams;
public void setDbParams(Properties dbParams) {
this.dbParams = dbParams;
}
Spring经典总结
public void setIncludeTypes(String str) {
String[] arr = str.split(",");
types = new HashSet();
for (String type : arr) {
types.add(type);
}
}
public void setCities(Set cities) {
this.cities = cities;
}
public void setFriends(List friends) {
this.friends = friends;
}
public void show() {
/**基本数据注入测试*/
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
/**List注入测试*/
System.out.println("---她的朋友---");
for (String s : friends) {
System.out.println(s);
}
/**Set集合注入测试*/
System.out.println("---他们所在城市---");
for (String s : cities) {
System.out.println(s);
}
System.out.println("---允许上传的图片类型---");
for (String s : types) {
System.out.println(s);
}
/**Map集合注入测试*/
System.out.println("-----图书信息-----");
Set keys = books.keySet();
for (Integer key : keys) {
System.out.println("编号:" + key + " 名字:" + books.get(key));
}
/**Properties注入测试*/
System.out.println("----连接参数-----");
Set
for (Object key : dbKeys) {
System.out.println(key + ":" + dbParams.getProperty(key.toString()));
}
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setBooks(Map books) {
this.books = books;
}
}
*6.什么是AOP,解决什么问题
Aspect Oriented Programming 面向方面编程也叫面向切面编程
面向方面编程是以(OOP)面向对象编程为基础,这两种编程思想侧重点不同。OOP侧重于对象,根据需求提炼出对象结构。AOP侧重于方面对象,方面(共同处理组件)关注的是共通处理部分,例如事务管理,权限控制,日志记录等。可以通过配置将其作用到某一个或多个目标对象上。好处是实现组件重复利用,改善程序结构,提高灵活性。将共同处理组件与目标对象解耦。
AOP主要是解决一对多调用问题,一个共通组件被多个目标组件调用,降低组件关联。
*7.Spring容器AOP的基本使用
1)引入spring-aop开发包
2)编写方面组件,封装共通的处理逻辑
3)在spring配置文件中,定义方面组件,利用aop配置,将方面组件方
法和目标组件方法作用在一起。
8. AOP相关概念
*1)方面(Aspect)
方面(组件)指的是共同业务处理,可以切入到(即作用到)多个目标
对象,可以多次使用。
*2)切入点(Pointcut)
切入点是连接点(Pintcut)的集合,采用表达式指定,用于指定哪些
组件和方法作为方面组件的切入目标。
*(1)方法限定表达式
可以规定哪些方法被切入方面组件,哪些不被切入,也就是
定义目标对象,格式如下:
execution(修饰符 返回类型 方法名(参数) throws异常 )
示例1:匹配容器中Bean对象的find开始的方法
execution(* find*(..))
第一个“*”表示返回类型不限,"find*"表示以“find
”开头的所有方法,".."表示一个或多个参数(也即参
数不限)