KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > springframework > aop > framework > autoproxy > DefaultAdvisorAutoProxyCreator


1 /*
2  * Copyright 2002-2006 the original author or authors.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package org.springframework.aop.framework.autoproxy;
18
19 import org.springframework.beans.factory.BeanNameAware;
20
21 /**
22  * BeanPostProcessor implementation that creates AOP proxies based on all candidate
23  * Advisors in the current BeanFactory. This class is completely generic; it contains
24  * no special code to handle any particular aspects, such as pooling aspects.
25  *
26  * <p>It's possible to filter out advisors - for example, to use multiple post processors
27  * of this type in the same factory - by setting the <code>usePrefix</code> property
28  * to true, in which case only advisors beginning with the DefaultAdvisorAutoProxyCreator's
29  * bean name followed by a dot (like "aapc.") will be used. This default prefix can be
30  * changed from the bean name by setting the <code>advisorBeanNamePrefix</code> property.
31  * The separator (.) will also be used in this case.
32  *
33  * @author Rod Johnson
34  * @author Rob Harrop
35  */

36 public class DefaultAdvisorAutoProxyCreator extends AbstractAdvisorAutoProxyCreator implements BeanNameAware {
37
38     /** Separator between prefix and remainder of bean name */
39     public final static String JavaDoc SEPARATOR = ".";
40
41
42     private boolean usePrefix;
43
44     private String JavaDoc advisorBeanNamePrefix;
45
46
47     /**
48      * Set whether to exclude advisors with a certain prefix
49      * in the bean name.
50      */

51     public void setUsePrefix(boolean usePrefix) {
52         this.usePrefix = usePrefix;
53     }
54
55     /**
56      * Return whether to exclude advisors with a certain prefix
57      * in the bean name.
58      */

59     public boolean isUsePrefix() {
60         return this.usePrefix;
61     }
62
63     /**
64      * Set the prefix for bean names that will cause them to be included for
65      * auto-proxying by this object. This prefix should be set to avoid circular
66      * references. Default value is the bean name of this object + a dot.
67      * @param advisorBeanNamePrefix the exclusion prefix
68      */

69     public void setAdvisorBeanNamePrefix(String JavaDoc advisorBeanNamePrefix) {
70         this.advisorBeanNamePrefix = advisorBeanNamePrefix;
71     }
72
73     /**
74      * Return the prefix for bean names that will cause them to be included
75      * for auto-proxying by this object.
76      */

77     public String JavaDoc getAdvisorBeanNamePrefix() {
78         return this.advisorBeanNamePrefix;
79     }
80
81     public void setBeanName(String JavaDoc name) {
82         // If no infrastructure bean name prefix has been set, override it.
83
if (this.advisorBeanNamePrefix == null) {
84             this.advisorBeanNamePrefix = name + SEPARATOR;
85         }
86     }
87
88
89     /**
90      * Consider Advisor beans with the specified prefix as eligible, if activated.
91      * @see #setUsePrefix
92      * @see #setAdvisorBeanNamePrefix
93      */

94     protected boolean isEligibleAdvisorBean(String JavaDoc beanName) {
95         return (!isUsePrefix() || beanName.startsWith(getAdvisorBeanNamePrefix()));
96     }
97
98 }
99
Popular Tags