小编Gré*_*e C的帖子

如何为循环图节点编写hashCode()函数?

我有以下用作图表一部分的类:

public class MyNode {

    private String name;

    private Set<MyNode> parents;

    private Set<MyNode> children;

    // getters and setters
}
Run Code Online (Sandbox Code Playgroud)

当我使用Eclipse时Source / Generate hashCode() and equals(),它会生成以下方法:

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((children == null) ? 0 : children.hashCode());
    result = prime * result + ((name == null) ? 0 : name.hashCode());
    result = prime * result + ((parents == null) ? 0 : parents.hashCode()); …
Run Code Online (Sandbox Code Playgroud)

java eclipse hashcode

9
推荐指数
1
解决办法
949
查看次数

如何配置aspectj maven插件以使用Java 7?

使用Java 7的aspectj插件有哪些适当的配置/版本/插件版本?

我正在尝试从Java 6升级到Java 7,而aspectj编译器似乎没有编译Java 7.我在Aspectj插件和maven编译器插件的插件配置中将java源和目标版本指定为1.7.我在我的代码中引入了Java7特定的语法,添加了几个语言功能,如switch in switch和diamond operator.在构建期间,我从aspectj获取有关Java7语法的错误.事情出错的第一个迹象是:

[INFO] --- aspectj-maven-plugin:1.4:compile (default) @ site ---
[ERROR] Cannot switch on a value of type String. Only int values or enum constants are permitted
[ERROR] Cannot instantiate the type HashSet<?>
[ERROR] Syntax error on token "<", ? expected after this token
Run Code Online (Sandbox Code Playgroud)

如果我从aspectj maven插件中删除执行部分,因此它不运行,并使用mvn clean install,新代码编译正常.所以我认为这是与aspectj错误配置的东西.这是我的插件配置:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java-version>1.7</java-version>
    <org.aspectj-version>1.6.11</org.aspectj-version>
</properties>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <version>1.4</version>
            <dependencies>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjrt</artifactId>
                    <version>${org.aspectj-version}</version>
                </dependency>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjtools</artifactId>
                    <version>${org.aspectj-version}</version>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>test-compile</goal> …
Run Code Online (Sandbox Code Playgroud)

plugins aspectj maven java-7

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

升级到Spring Security 4.0.0后出现403错误

我一直在尝试将我的项目更新到Spring Security 4.0.0.我想我已经非常广泛地阅读了迁移指南,但即使我可以成功登录并浏览页面,我在每个 Ajax请求上都会收到403错误.3.2.7一切正常.

这是我的"手动登录"配置文件:

<b:beans xmlns:b="http://www.springframework.org/schema/beans"
    xmlns="http://www.springframework.org/schema/security"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- HTTP security configurations -->
    <http use-expressions="true" auto-config='true' disable-url-rewriting="false">
        <intercept-url access="permitAll" pattern="/" /><!-- To permit "/" allows the use of web.xml's <welcome-file> -->
        <intercept-url access="permitAll" pattern="/home" />
        <intercept-url access="permitAll" pattern="/login" />
        <intercept-url access="permitAll" pattern="/pages/exceptions/**" />
        <intercept-url access="permitAll" pattern="/javax.faces.resource/**" />
        <intercept-url access="permitAll" pattern="/resources/**" />
        <intercept-url access="permitAll" pattern="/j_spring_security_check"/>
        <intercept-url access="hasRole('ROLE_ADMIN')" pattern="/administration/**" />
        <intercept-url access="isAuthenticated()" pattern="/**" />
        <logout …
Run Code Online (Sandbox Code Playgroud)

spring-security

6
推荐指数
1
解决办法
4744
查看次数

传统 3 层架构与带 IOC 的 3 层架构

我正在构建一个 3 层架构,其中包含表示层 (PL)、业务逻辑层 (BLL) 和数据访问层 (DAL)。
传统的 3 层架构逻辑指出,BLL 应充当 PL 和 DAL 之间的中介。PL 甚至不应该知道数据库的存在,而 DAL 不应该知道 BLL 或 PL 的存在。

实施上述操作将在 3 个不同的物理项目之间创建以下依赖关系,如下所示

  • PL 项目 -> BLL DLL 参考
  • BLL 项目 -> DAL DLL 参考
  • DAL 项目 -> 无参考


然而,通过在 BLL 中定义接口供 DAL 实现并通过构造函数注入使用 DI,在 BLL 和 DAL 之间应用 IOC 的概念将改变依赖关系,如下所示

  • PL 项目 -> BLL DLL 参考、DAL DLL 参考(用于具体类型到 BLL 对象构造函数的 DI)
  • BLL 项目 -> 无参考
  • DAL 项目 -> BLL DLL 参考(用于 BLL 接口的实现)

那么IOC和传统的三层有冲突吗?

理想情况下,我希望实现以下目标,同时通过 DI 维持我的 …

dependency-injection 3-tier inversion-of-control

5
推荐指数
1
解决办法
3116
查看次数

如何读取从IdP收到的SAML属性的值?

我正在使用Spring Security SAML 1.0.1,我想知道名称为"eduPersonAffiliation"的SAML属性的值.我编写了一个实现org.springframework.security.saml.userdetails.SAMLUserDetailsService接口的类,在loadUserBySAML方法中,我这样做:

@Override
public Object loadUserBySAML(SAMLCredential credential) throws UsernameNotFoundException {
    String eduPersonAffiliationAttributeName = "";
    // We need to use the "name" of the attribute to retrieve the value (not the friendly name)
    for (Attribute attribute : credential.getAttributes()) {
        if ("eduPersonAffiliation".equals(attribute.getFriendlyName())) {
            eduPersonAffiliationAttributeName = attribute.getName();
        }
    }
    Person user = usersService.getUser(
             credential.getAttribute(eduPersonAffiliationAttributeName).WHAT_TO_CALL_HERE?);
    return loadUserByUser(user);
}
Run Code Online (Sandbox Code Playgroud)

getUser方法需要一个String,该String应该是已连接用户的登录名.问题听起来很愚蠢,但如何在给定属性名称的情况下访问属性值?我看到一个org.opensaml.saml2.core.getAttributeValues返回a 的方法List<XMLObject>.如何使用它?

谢谢!

java spring-security spring-saml

5
推荐指数
1
解决办法
7092
查看次数

使用Spring配置文件启用/禁用web.xml过滤器

我有一个Spring应用程序,可以使用两个不同的持久性API:

  • Spring Data JPA
  • Spring Data Neo4j

使用Spring Data JPA时,我需要在"web.xml"中声明"OpenEntityManagerInViewFilter"来进行延迟加载:

<filter>
    <filter-name>OpenEntityManagerInViewFilter</filter-name>
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>OpenEntityManagerInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

问题是我在使用Spring Data Neo4j时无法保持此过滤器.保持启用状态会导致以下运行时错误:

No qualifying bean of type [javax.persistence.EntityManagerFactory] is defined
Run Code Online (Sandbox Code Playgroud)

我想选择与Spring配置文件一起使用的数据库(例如spring.profiles.active=relational-databasespring.profiles.active=graph-database).

问题:当配置文件是"关系数据库"时,如何启用"OpenEntityManagerInViewFilter",当配置文件是"图形数据库"时,如何禁用它?

谢谢!

相关问题:

spring web.xml spring-profiles

3
推荐指数
1
解决办法
1918
查看次数