1使用ApplicationContextAware实现类获取
/
获取applicationContext
/
@Service
public class ApplicationContextSupport implements ApplicationContextAware{
/
Spring 文实体
/
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
// TODO Auto-generated method stub
ApplicationContextSupportapplicationContext = applicationContext;
}
/
根据名称实体
@param name 实体名称
@return the bean
/
public static Object getBean(String name)
{
return applicationContextgetBean(name);
}
/
根据类型实体
@param type 实体类型
@return the bean
/
public static Object getBean(Class type)
{
return applicationContextgetBean(type);
}
}
2使用
(QuestionaryService) ApplicationContextSupportgetBean("questionaryServiceImpl");
-
既然是基于spring,可以这样:
ResourcePatternResolver rpr = new PathMatchingResourcePatternResolver();
Resource[] res = rprgetResources("classpath: /class"); // classpath:带号会找jar中的class
然后根据resource取clas路径就行
String className = res[0]getURL()getPath();
className = classNamesplit("(classes/)|(!/)")[1];
className = classNamereplace("/", "")replace("class", "");
Object obj = ClassforName(className);
话说我最近也在写一个这样的MVC。。要不咱两合伙? 我写的也是基于注解,不过要支持REST风格
通过bring程序获取。
最近项目中遇到一个业务场景,就是在Spring容器启动后获取所有的Bean中实现了一个特定接口的对象,第一个想到的ApplicationContextAware,在setApplicationContext中去通过ctx获取所有的bean。
后来发现好像逻辑不对,这个方法不是在所有bean初始化完成后实现的,后来试了一下看看有没有什么Listener之类的,发现了好东西ApplicationListener,然后百度一下ApplicationListener用法。
很多朋友都想知道java怎么获取注解的值?下面就一起来了解一下吧~
1、定义一个注解,用于给全局变量field字段赋值
package comhahastudyannotationvalue; import javalangannotationDocumented; import javalangannotationElementType; import javalangannotationRetention; import javalangannotationRetentionPolicy; import javalangannotationTarget; / description: 定义一个注解,用于给 全局变量 field 字段 赋值,并使用反射取值。
特别提醒: @Rentention(RetentionPolicyRUNTIME) 时,注解才会被jvm加载,才能使用反射获取。 @version v10 @author w @date 2018年8月1日下午2:37:40 / @Documented @Retention(RetentionPolicyRUNTIME) @Target(value=ElementTypeFIELD) public @interface Fields { int sort() default 0 ; String value() ; }
2、创建一个普通的类,使用 @ConsAnnotation、@Fields 注解
package comhahastudyannotationvalue; / description: 创建一个普通的类,使用 @ConsAnnotation、@Fields 注解。 @version v10 @author w @date 2018年8月1日下午2:50:23 / @ConsAnnotation(request = { "hello","world","annotation!" }) public class User { @Fields("中华人民共和国") private String userName; public String getUserName() { return userName; } public void setUserName(String userName) { thisuserName = userName; } }
3、针对 comhahastudyannotationvalueUser 类使用注解的测试
package comhahastudyannotationvalue; import javalangreflectField; import javautilArrays; / description: 针对 comhahastudyannotationvalueUser 类使用注解的测试 @version v10 @author w @date 2018年8月1日下午2:37:13 / public class ValueTest { public static void main(String[] args) throws Exception { User user = new User(); // 1、 获取 User类上的注解 @ConsAnnotation ConsAnnotation anno = usergetClass()getAnnotation(ConsAnnotationclass); String[] arr = annorequest(); Systemoutprintln(ArraystoString(arr)); // [hello, world, annotation!] // 2、 获取User类中 private String userName; 变量上的注解 @Field Field f = usergetClass()getDeclaredField("userName"); Fields anno2 = fgetAnnotation(Fieldsclass); usersetUserName(anno2value()); Systemoutprintln(usergetUserName()); // 中华人民共和国 } }
以上就是关于spring在filter里面怎么获取注解方式定义的bean全部的内容,包括:spring在filter里面怎么获取注解方式定义的bean、java 获取所有带注解的类、除了autoware其他获取注解bean的方式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)