我正在使用Spring Security 3.2和Spring 4.0.1
我正在努力将xml配置转换为Java配置.当我在我的过滤器中注释AuthenticationManager时@Autowired,我得到一个例外
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.security.authentication.AuthenticationManager] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过注射AuthenticationManagerFactoryBean但是也失败了类似的例外.
这是我正在使用的XML配置
<?xml version="1.0" encoding="UTF-8"?> <beans ...>
<security:authentication-manager id="authenticationManager">
<security:authentication-provider user-service-ref="userDao">
<security:password-encoder ref="passwordEncoder"/>
</security:authentication-provider>
</security:authentication-manager>
<security:http
realm="Protected API"
use-expressions="true"
auto-config="false"
create-session="stateless"
entry-point-ref="unauthorizedEntryPoint"
authentication-manager-ref="authenticationManager">
<security:access-denied-handler ref="accessDeniedHandler"/>
<security:custom-filter ref="tokenAuthenticationProcessingFilter" position="FORM_LOGIN_FILTER"/>
<security:custom-filter ref="tokenFilter" position="REMEMBER_ME_FILTER"/>
<security:intercept-url method="GET" pattern="/rest/news/**" access="hasRole('user')"/>
<security:intercept-url method="PUT" pattern="/rest/news/**" access="hasRole('admin')"/>
<security:intercept-url method="POST" …Run Code Online (Sandbox Code Playgroud) 我是Maven的新手.我正在尝试为springMVC + Hiberante创建maven项目但是我遇到了很多错误..任何人都可以解决我的问题请查看我的pom.xml以下
<?xml version="1.0" encoding="UTF-8"?><project>
<modelVersion>4.0.0</modelVersion>
<groupId>Spring3HibernateMaven</groupId>
<artifactId>Spring3HibernateMaven</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<description></description>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<!-- <plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.0</version>
</plugin> -->
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.9.Final</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.10</version> …Run Code Online (Sandbox Code Playgroud) 我已经实现了Spring社交+ Spring安全性,如Spring安全性示例(以及spring security java config)中所述.我当时报告了几个问题(请参阅https://jira.springsource.org/browse/SEC-2204)所有这些问题都已解决,我的安全性正常.
但是,我想更改我的安全实现并使用RESTful身份验证.Spring oauth/oauth2(http://projects.spring.io/spring-security-oauth/)解决了这个问题,但我看不出Spring Social如何适应这张图片?虽然幕后春天与Facebook/Twitter的社交谈话与oauth,我不认为Spring Social的注册形式和其他特征是为了一个宁静的api而建立的.
任何例子或想法肯定会有所帮助.谢谢.
这篇文章的最新消息:(4/6/2014)
似乎还有很长的路要走,但解决了在主系统上保留用户记录的问题.我很好奇是否有其他方法可以做到这一点?请指教.谢谢
我想知道是否有可能在运行时检索该类来自的jar的版本号?
我知道有可能找到该类来自的jar:
MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();
Run Code Online (Sandbox Code Playgroud)
但是版本怎么样?
(假设它不在文件名:))
所有
我正在评估Hibernate 4(4.1.0)和Spring 3(3.1.0)中出现的Multi-Tenancy功能,但是无法使用HibernateTransaction设置.我已经定义了如下设置.
LocalSessionFactoryBean:
@org.springframework.context.annotation.Configuration
public class Configuration {
@Inject private DataSource dataSource;
@Inject private MultiTenantConnectionProvider multiTenantConnectionProvider;
@Bean
public LocalSessionFactoryBean sessionFactory() throws IOException{
LocalSessionFactoryBean bean = new LocalSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setPackagesToScan("com");
bean.getHibernateProperties().put("hibernate.multi_tenant_connection_provider", multiTenantConnectionProvider);
bean.getHibernateProperties().put("hibernate.multiTenancy", "SCHEMA");
bean.getHibernateProperties().put("hibernate.tenant_identifier_resolver", new CurrentTenantIdentifierResolverImpl());
bean.setConfigLocation(new ClassPathResource("/hibernate.cfg.xml"));
return bean;
}
}
Run Code Online (Sandbox Code Playgroud)
Configuration.xml:
<context:component-scan base-package="com.green" />
<context:annotation-config />
<!-- Enable annotation style of managing transactions -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- Declare a datasource that has pooling capabilities -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" p:driverClass="${app.jdbc.driverClassName}"
p:jdbcUrl="${app.jdbc.url}" p:user="${app.jdbc.username}" p:password="${app.jdbc.password}"
p:acquireIncrement="5" p:idleConnectionTestPeriod="60" …Run Code Online (Sandbox Code Playgroud) 我@Controller在一个spring-mvc环境中很简单.这是控制器:
@Controller
public class MessageController {
private static Logger LOG = LoggerFactory
.getLogger(MessageController.class);
@RequestMapping(value = "/messages/{userId}/{messageId}", method = RequestMethod.GET)
public Message getMessage(@PathVariable("userId") String uid,
@PathVariable("messageId") String msgid) {
LOG.trace("GET /message/{}/{}", uid, msgid);
return new Message();
}
}
Run Code Online (Sandbox Code Playgroud)
这是servlet-mapping web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Messaging Service</display-name>
<servlet>
<servlet-name>messaging</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>messaging</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
当我通过jetty启动应用程序并运行请求时/messages/abc/def,我得到以下日志:
INFO: Mapped "{[/messages/{userId}/{messageId}],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public ....Message ....MessageController.getMessage(java.lang.String,java.lang.String)
WARNING: No mapping found for HTTP request with URI …Run Code Online (Sandbox Code Playgroud) 我有一个带有该签名的Spring MVC服务:
@RequestMapping(method = RequestMethod.POST, value = "/addUser", consumes = "application/json")
public @ResponseBody User addUser(@RequestBody User user) {
Run Code Online (Sandbox Code Playgroud)
这在context.xml中
<bean id="jacksonMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter" />
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
我发一个Post请求,总是给我一个400error-> Bad请求.我写了一个过滤器来读取请求内容,这是:
编辑json:
{
"email": "Anchor",
"latitude": 40.3139461,
"longitude": -3.8810229,
"name": "a",
"online": true,
"password": "a",
"deviceRegId": "APA91bGnD1EuqEm9cpoHsenC-HEphQJRniEnhPovK24QkKkLBXrDesSCP6CFlyOKwR1huwSI28Wd-DdN0N8MDKle7myYB7Dznzc3Z11ZOv3jMlJEIegykpnnnYScrElw2czQEa4pKFeQW7BklUsUS-IB15LMqH_Ag"
}
Run Code Online (Sandbox Code Playgroud)
编辑:用户类
public class User implements Serializable{
@JsonProperty("deviceRegId")
private java.lang.String deviceRegistrationID;
@JsonProperty("email")
private java.lang.String email;
@JsonProperty("latitude")
private java.lang.Double latitude;
@JsonProperty("longitude")
private java.lang.Double longitude;
@JsonProperty("name")
private java.lang.String name;
@JsonProperty("online")
private …Run Code Online (Sandbox Code Playgroud) 我正在使用spring数据jpa和querydsl并且被困在如何编写简单的好查询到左连接两个表.假设我有一个Project实体和一个在Project中定义了OneToMany关系的Task实体,我想做的事情如下:
select * from project p left join task t on p.id = t.project_id where p.id = searchTerm
select * from project p left join task t on p.id = t.project_id where t.taskname = searchTerm
Run Code Online (Sandbox Code Playgroud)
在JPQL,它应该是:
select distinct p from Project p left join p.tasks t where t.projectID = searthTerm
select distinct p from Project p left join p.tasks t where t.taskName = searthTerm
Run Code Online (Sandbox Code Playgroud)
我有一个ProjectRepository接口,它扩展了JpaRepository和QueryDslPredicateExecutor.这让我可以访问方法:
Page<T> findAll(com.mysema.query.types.Predicate predicate, Pageable pageable)
Run Code Online (Sandbox Code Playgroud)
我知道,左连接可以通过创建一个新的JPAQuery(EntityManager的)可以轻松实现.但我没有实体管理器与弹簧数据的JPA明确注入.有没有建立一个谓词左加入很好的和简单的方法?希望有人在这里经历了这一点,并能够给我一个例子.谢谢.
弗雷.
我在检索AWS S3中文件夹内的所有对象(文件名)时遇到问题.这是我的代码:
ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
.withBucketName(bucket)
.withPrefix(folderName + "/")
.withMarker(folderName + "/")
ObjectListing objectListing = amazonWebService.s3.listObjects(listObjectsRequest)
for (S3ObjectSummary summary : objectListing.getObjectSummaries()) {
print summary.getKey()
}
Run Code Online (Sandbox Code Playgroud)
它返回正确的对象但是带有前缀,例如foldename/filename
我知道我可以使用java或substring来排除前缀,但我只想知道AWS SDK中是否有方法.
请解释为什么它不起作用,也可以发布解决方案来解决这个问题.非常感谢你提前.
public class Run extends JFrame{
/** Fields **/
static JPanel jpanel;
private int x, y;
/** Constructor **/
public Run() {
/** Create & Initialise Things **/
jpanel = new JPanel();
x = 400; y = 400;
/** JPanel Properties **/
jpanel.setBackground(Color.red);
jpanel.setPreferredSize(new Dimension(20, 30));
/** Add things to JFrame and JPanel **/
add(jpanel);
/** JFrame Properties **/
setTitle("Snake Game");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setCursor(null);
setResizable(false);
setSize(new Dimension(x,y));
setLocationRelativeTo(null);
setVisible(true);
}
/** Set the Cursor **/
public void setCursor() {
setCursor (Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); …Run Code Online (Sandbox Code Playgroud)