由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问个spring的问题
相关主题
spring annotationhibernate问题
spring di的project请大侠推荐一本PYTHON的入门书
interface是oo feature吗java如何保护传入的参数不被函数改动?
赵策怎么看OOP hell的问题?xml schema beginner question
有JAVA底子学习web service那些库或者framework有没有什么好方法谁在实际工作中写过c#或Java的custom attribute?
弯曲用j2ee spring , Jpa , jersey 这些老技术的公司还多么学python的必要性有多大?
@Autowired可以多次装配一个被@Component修饰的类吗?工欲善其事,必先正其名
哪位大侠有如下书籍的电子版,或者下载地址,多谢写crawler
相关话题的讨论汇总
话题: year话题: car话题: annotation话题: qualifier话题: autowired
进入Programming版参与讨论
1 (共1页)
Y**G
发帖数: 1089
1
假定我自己定义了一个qualifier: Year用来描述汽车制造的年份
@Qualifier
public @interface Year {
int value();
}
如果我需要2010年生产的汽车,我可以用
...
@Autowired
@Year(2010)
private Car car;
...
我怎么可以表达“我要2010年以后生产的汽车”?
下面的写法不工作:
...
@Autowired
@Year(value>2010)
private Car car;
...
Y**G
发帖数: 1089
2
我的前提条件是容器的配置是正确的,2010以后的汽车只有一辆,不会没有。autowire
不会出现问题。
z****e
发帖数: 54598
3
等下,spring允许你自己写annotation了?
你用spring的话,应该用不到@interface吧?
o****e
发帖数: 44
4
跟spring有毛关系
o****e
发帖数: 44
5
yes, you can create a custom qualifier annotation, all you need to do is to
define an annotation that’s itself annotated with @Qualifier.

【在 z****e 的大作中提到】
: 等下,spring允许你自己写annotation了?
: 你用spring的话,应该用不到@interface吧?

o****e
发帖数: 44
6
要实现lz的想法办法有几个。没那么复杂,lz想多了。
这跟spring真没关系。lz你的year interface只有一个int 变量,你给“value>2010”
这个进去,算啥?必须是int才行啊。
你这个写法,就不是java了,是人类语言了。lol。
直接写多一个annotation最简单,
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.beans.factory.annotation.Qualifier;
@Target({ElementType.FIELD,ElementType.PARAMETER,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface NewerThanYearTwoOTen{
}
@NewerThanYearTwoOTen
@Year(2018)
public class NewBMWBENZshittyCar implements Car{
...
}
@Autowired
@NewerThanYearTwoOTen
private Car car;
简单粗暴。bingo, you get a NewBMWBENZshittyCar.
或者用你的办法,就得这样。跟spring没关系了。
if (obj.isAnnotationPresent(year.class)) {
Annotation annotation = obj.getAnnotation(Year.class);
Year year = (Year) annotation;
if(year.value > 2010){
//do whatever you want here;
}
}
o****e
发帖数: 44
7
马来个鸡蛋,我是不是闲的很蛋痛?nnd。全看pornhub算了。
d****i
发帖数: 4809
8
楼主明显想多了,这个用annotation显然是overkill了,而且由于用了reflection而使
得性能下降。最简单粗暴的就是把year放到Car里面, 这样既符合面向对象的基本原则
,又不会因为滥用annotation和反射而导致性能下降:
public class Car {
private int year;

public boolean isGreaterThanGivenYear(int given) {
return year > given ? true : false;
}

//other methods.....
}
Y**G
发帖数: 1089
9
把Year放到Car里面去,那怎么用autowired呢?
Y**G
发帖数: 1089
10
假定我自己定义了一个qualifier: Year用来描述汽车制造的年份
@Qualifier
public @interface Year {
int value();
}
如果我需要2010年生产的汽车,我可以用
...
@Autowired
@Year(2010)
private Car car;
...
我怎么可以表达“我要2010年以后生产的汽车”?
下面的写法不工作:
...
@Autowired
@Year(value>2010)
private Car car;
...
相关主题
弯曲用j2ee spring , Jpa , jersey 这些老技术的公司还多么hibernate问题
@Autowired可以多次装配一个被@Component修饰的类吗?请大侠推荐一本PYTHON的入门书
哪位大侠有如下书籍的电子版,或者下载地址,多谢java如何保护传入的参数不被函数改动?
进入Programming版参与讨论
Y**G
发帖数: 1089
11
我的前提条件是容器的配置是正确的,2010以后的汽车只有一辆,不会没有。autowire
不会出现问题。
z****e
发帖数: 54598
12
等下,spring允许你自己写annotation了?
你用spring的话,应该用不到@interface吧?
o****e
发帖数: 44
13
跟spring有毛关系
o****e
发帖数: 44
14
yes, you can create a custom qualifier annotation, all you need to do is to
define an annotation that’s itself annotated with @Qualifier.

【在 z****e 的大作中提到】
: 等下,spring允许你自己写annotation了?
: 你用spring的话,应该用不到@interface吧?

o****e
发帖数: 44
15
要实现lz的想法办法有几个。没那么复杂,lz想多了。
这跟spring真没关系。lz你的year interface只有一个int 变量,你给“value>2010”
这个进去,算啥?必须是int才行啊。
你这个写法,就不是java了,是人类语言了。lol。
直接写多一个annotation最简单,
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.beans.factory.annotation.Qualifier;
@Target({ElementType.FIELD,ElementType.PARAMETER,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface NewerThanYearTwoOTen{
}
@NewerThanYearTwoOTen
@Year(2018)
public class NewBMWBENZshittyCar implements Car{
...
}
@Autowired
@NewerThanYearTwoOTen
private Car car;
简单粗暴。bingo, you get a NewBMWBENZshittyCar.
或者用你的办法,就得这样。跟spring没关系了。
if (obj.isAnnotationPresent(year.class)) {
Annotation annotation = obj.getAnnotation(Year.class);
Year year = (Year) annotation;
if(year.value > 2010){
//do whatever you want here;
}
}
o****e
发帖数: 44
16
马来个鸡蛋,我是不是闲的很蛋痛?nnd。全看pornhub算了。
d****i
发帖数: 4809
17
楼主明显想多了,这个用annotation显然是overkill了,而且由于用了reflection而使
得性能下降。最简单粗暴的就是把year放到Car里面, 这样既符合面向对象的基本原则
,又不会因为滥用annotation和反射而导致性能下降:
public class Car {
private int year;

public boolean isGreaterThanGivenYear(int given) {
return year > given ? true : false;
}

//other methods.....
}
Y**G
发帖数: 1089
18
把Year放到Car里面去,那怎么用autowired呢?
h*********8
发帖数: 404
19
ben mo dao zhi
1 (共1页)
进入Programming版参与讨论
相关主题
写crawler有JAVA底子学习web service那些库或者framework有没有什么好方法
FMP 进驻 Programming 版弯曲用j2ee spring , Jpa , jersey 这些老技术的公司还多么
discussion: why do we need entry_points in python (setup_t (转载)@Autowired可以多次装配一个被@Component修饰的类吗?
scalar compiler error on annotation哪位大侠有如下书籍的电子版,或者下载地址,多谢
spring annotationhibernate问题
spring di的project请大侠推荐一本PYTHON的入门书
interface是oo feature吗java如何保护传入的参数不被函数改动?
赵策怎么看OOP hell的问题?xml schema beginner question
相关话题的讨论汇总
话题: year话题: car话题: annotation话题: qualifier话题: autowired