我有以下用作图表一部分的类:
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 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) 我一直在尝试将我的项目更新到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) 我正在构建一个 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 维持我的 …
我正在使用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>.如何使用它?
谢谢!
我有一个Spring应用程序,可以使用两个不同的持久性API:
使用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-database或spring.profiles.active=graph-database).
问题:当配置文件是"关系数据库"时,如何启用"OpenEntityManagerInViewFilter",当配置文件是"图形数据库"时,如何禁用它?
谢谢!
相关问题:
DelegatingFilterProxy.