小编Hap*_*eer的帖子

如何从ApplicationContext对象获取属性值?(不使用注释)

如果我有:

@Autowired private ApplicationContext ctx;
Run Code Online (Sandbox Code Playgroud)

我可以使用其中一个getBean方法获取bean和资源.但是,我无法弄清楚如何获得属性值.

显然,我可以创建一个具有@Value属性的新bean,如:

private @Value("${someProp}") String somePropValue;
Run Code Online (Sandbox Code Playgroud)

我在ApplicationContext对象上调用什么方法来获取该值而不自动装配bean?

我通常使用@Value,但是有一种情况是SPeL表达式需要是动态的,所以我不能只使用注释.

spring spring-el

43
推荐指数
3
解决办法
4万
查看次数

ctrl-click转到我单击的方法的声明.对于具有一个实现的接口,我如何才能直接进入该实现?

我经常需要调试编写的java代码,以便有一个接口和该接口的一个实现.

例如,将有一个接口Foo,其中只有一个实现称为FooImpl.在下面的代码中,如果我按住doThings,它会跳转到Foo.java,当我真的想去FooImpl.java看看实现时.

public void doStuff(Foo foo) {
    foo.doThings();
}   
Run Code Online (Sandbox Code Playgroud)

当我在界面结束时,我必须使用ctrl-shift-r来打开FooImpl.如果我可以做一些事情,那就非常好了,请点击doThings,然后在FooImpl.java中点击.如果工作区中有多个实现,那么它可能只会弹出一个框来告诉我它们是什么.

eclipse中是否有插件或现有函数可以执行此操作?我知道我可以去Foo.java然后获得层次结构并转到实现,但是当只有一个接口实现时,这比所需的点击次数多.

java eclipse keyboard-shortcuts

38
推荐指数
4
解决办法
3万
查看次数

使用Android陀螺仪代替加速度计.我发现很多点点滴滴,但没有完整的代码

传感器融合视频看起来很棒,但没有代码:http://www.youtube.com/watch?v = C7JQ7Rpwn2k&feature = player_detailpage#t = 1315s

这是我的代码,它只使用加速度计和指南针.我还在3个方向值上使用卡尔曼滤波器,但这里显示的代码太多了.最终,这可行,但结果是太过于紧张或太迟,这取决于我对结果的处理方式以及制作滤波因子的程度.

/** Just accelerometer and magnetic sensors */
public abstract class SensorsListener2
    implements
        SensorEventListener
{
    /** The lower this is, the greater the preference which is given to previous values. (slows change) */
    private static final float accelFilteringFactor = 0.1f;
    private static final float magFilteringFactor = 0.01f;

    public abstract boolean getIsLandscape();

    @Override
    public void onSensorChanged(SensorEvent event) {
        Sensor sensor = event.sensor;
        int type = sensor.getType();

        switch (type) {
            case Sensor.TYPE_MAGNETIC_FIELD: …
Run Code Online (Sandbox Code Playgroud)

android accelerometer orientation gyroscope

25
推荐指数
2
解决办法
2万
查看次数

在Spring中使用jpa/hibernate,如何保持会话打开以避免延迟初始化异常?

我目前在实体bean中标记集合,因为当我尝试在使用EntityManager加载bean之后尝试访问集合属性时,急于避免获得延迟初始化异常.

如果我将集合保留为延迟加载,如何保持会话打开?我想过尝试@Transactional,但即使这样有效,我也不想这样做,因为通过长方法保持事务处理是不对的.

spring hibernate jpa lazy-loading

19
推荐指数
2
解决办法
2万
查看次数

在Android上如何制作奇形怪状的剪裁区域?

以下是如何创建圆形的剪裁区域:

Path path = new Path();
path.addCircle(200,200,100,Direction.CW);
c.clipPath(path); // c is a Canvas
Run Code Online (Sandbox Code Playgroud)

现在Canvas上有一个剪裁区域,可以防止在该圆圈范围之外绘制任何东西.但是,如果我想将剪裁区域塑造成甜甜圈(或其他),该怎么办?

我尝试使用创建第二个Path并在其上使用toggleInverseFillType,然后将其添加到原始路径,但这似乎不起作用.

或者,不是使用Path,而是可以创建一个Bitmap用作蒙版,并以某种方式将其设置为Canvas上的剪贴蒙版?

编辑:答案正是我需要一个小的补充.在画布上执行多个操作时,请始终在第一个clipPath调用上使用Op.REPLACE.这将替换该Canvas上的任何现有clipPath.

作为参考,我在这里发现了6个不同的Region.Op值的含义.想象一下有2个圆圈的维恩图."B"是2个圆圈重叠的部分."A"是不重叠的左圆."C"是不重叠的右圆.

c.clipPath(a,Region.Op.REPLACE);
c.clipPath(b,???);

Region.Op.DIFFERENCE         -> A..            
Region.Op.INTERSECT          -> .B.            
Region.Op.REPLACE            -> .BC            
Region.Op.REVERSE_DIFFERENCE -> ..C            
Region.Op.UNION              -> ABC
Region.Op.XOR                -> A.C
Run Code Online (Sandbox Code Playgroud)

"." 表示未绘制的部分.对不起,如果不是特别清楚.没有图形很难很好地描述.

android dalvik masking android-canvas

18
推荐指数
1
解决办法
2万
查看次数

在Android中,我可以通过编程方式检测指南针尚未校准吗?

我发现当我启动游戏时,指南针经常出现问题.物体将飞来飞去,而不是它们应该在的地方.但是,如果我将手机移动到八字形(或者只是随机向一定方向挥动),所有东西都会在半分钟内卡入到位.

指南针未校准时,硬件是否知道?我是否有可能检测到这一点并弹出一条消息告诉用户"你的机器人指南针需要校准.请以水平的八字形动作移动手机,直到此消息消失."

android compass-geolocation

16
推荐指数
1
解决办法
4194
查看次数

在spring bean中是否可以使用可以使用事务的shutdown方法?

在spring bean的destroy方法中,我想执行一些查询来清理数据库中的一些东西.Spring似乎无法以任何方式找到它.

错误始终如下:

破坏方法的调用上的名字豆失败"someBean":org.springframework.beans.factory.BeanCreationNotAllowedException:错误创建名为"transactionManager的"豆:辛格尔顿bean创建时不允许使用这家工厂的单身人士都在破坏(不要求在destroy方法实现中来自BeanFactory的bean!)

以下将告诉spring在不再需要bean之后调用shutdownDestroy.但是,我在尝试使用事务时遇到上述错误.

<bean id="someId" name="someName" class="someClass"
 destroy-method="shutdownDestroy"/>
Run Code Online (Sandbox Code Playgroud)

使用以下命令启用公共生命周期注释时也是如此:

<bean class="org.springframework. ... .CommonAnnotationBeanPostProcessor"/>
Run Code Online (Sandbox Code Playgroud)

然后用方法标记方法@PreDestroy.该方法也不能使用事务.

有没有办法做到这一点?

编辑:谢谢!我有bean实现SmartLifecycle并添加以下内容,它的工作非常好.

private boolean isRunning = false;

@Override
public boolean isAutoStartup() {return true;}

@Override
public boolean isRunning() {return isRunning;}

/** Run as early as possible so the shutdown method can still use transactions. */
@Override
public int getPhase() {return Integer.MIN_VALUE;}

@Override
public void start() {isRunning = true;}

@Override
public void stop(Runnable callback) {
    shutdownDestroy();
    isRunning = false;
    callback.run();
}

@Override
public void …
Run Code Online (Sandbox Code Playgroud)

spring shutdown

13
推荐指数
1
解决办法
2万
查看次数

包com.sun.xml.internal.bind.v2.model.annotation不存在

我正在尝试使用jaxb序列化异常的解决方案.(http://forums.java.net/jive/thread.jspa?messageID=256122)

我需要为该解决方案实现的类需要引用以下com.sun类.

import com.sun.xml.internal.bind.v2.model.annotation.AbstractInlineAnnotationReaderImpl;
import com.sun.xml.internal.bind.v2.model.annotation.Locatable;
import com.sun.xml.internal.bind.v2.model.annotation.RuntimeAnnotationReader;
import com.sun.xml.internal.bind.v2.model.annotation.RuntimeInlineAnnotationReader;
Run Code Online (Sandbox Code Playgroud)

当我在Eclipse中编译并运行我的代码时,它工作正常.但是当我使用Maven编译代码时,它无法抱怨com.sun包,例如"package com.sun.xml.internal.bind.v2.model.annotation不存在".

eclipse和maven都使用JDK 1.6,所以我不明白为什么会这样.JDK中不是那些com.sun类吗?

编辑:我最终决定它是不可能的.我只是创建了一个新的bean并复制了我需要的信息并使用了它.

java maven-2 exception jaxb

8
推荐指数
1
解决办法
2万
查看次数

如何使用JPQL从连接表中删除条目?

我有一个JPA对象,它具有这样的多对多关系:

@Entity
public class Role {
    //...

    @ManyToMany(fetch=FetchType.EAGER)
    @JoinTable(
    name="RolePrivilege",
    joinColumns=
        @JoinColumn(name="role", referencedColumnName="ID"),
    inverseJoinColumns=
        @JoinColumn(name="privilege", referencedColumnName="ID")
    )
    private Set<Privilege> privs;
}
Run Code Online (Sandbox Code Playgroud)

RolePrivilege没有JPA对象,所以我不确定如何编写JPQL查询来从角色对象的privs字段中删除条目.例如,我试过这个,但它不起作用.它抱怨没有映射Role.privs.

DELETE FROM Role.privs p WHERE p.id=:privId
Run Code Online (Sandbox Code Playgroud)

我不知道还有什么可以尝试的.我当然可以编写一个从连接表RolePrivilege中删除的本机查询.但是,我担心这样做会与本地缓存的对象发生严重的交互,本地缓存的对象不会被本机查询更新.

是否甚至可以编写JPQL来删除连接表中的条目?如果不是,我可以只加载所有Role对象并从每个对象的privs集合中删除条目,然后保留每个角色.但是,如果一个简单的JPQL查询可以同时完成所有操作,那么这似乎很愚蠢.

collections jpa jpql

7
推荐指数
1
解决办法
8678
查看次数

java注释列表是否应该在最后一个条目后允许额外的逗号?

我不小心在我的一个注释列表的末尾留下了一个额外的逗号,但它在我的机器上编译得很好.例如:

@NamedQueries({ @NamedQuery(name="name1",query="FROM Foo"), @NamedQuery(name="name2",query="FROM Bar"), })

注意第二个@NamedQuery之后的额外逗号.它似乎在我的机器上正常编译,但是其他人在他们的机器上编译代码时遇到了问题,所以我删除了它.但我现在很好奇它是否应该被允许,如果允许的话,什么版本的java允许它.

我无法在网上任何地方找到任何参考.

java annotations

7
推荐指数
1
解决办法
871
查看次数