我的弹簧应用程序有问题,因为我试图包含一些安全性的东西.
在构建一个包含angularJS的小型工作应用程序后,我遵循了这个春季安全教程,但我无法启动它.当我尝试访问应用程序的任何部分时,安全模块想要重定向到http:// localhost:8080/login ...但找不到它.
出现意外错误(type = Not Found,status = 404).没有可用的消息
也许我只是错过了一件小事,但我无法弄清楚它是什么^^
这是我的代码......
文件夹结构:
src/main/java
+-Application.java
+-SecurityConfiguration.java
src/main/resources
+-static
+-index.html
+-templates
+-login.html
Run Code Online (Sandbox Code Playgroud)
pom.xml中:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.0.BUILD-SNAPSHOT</version>
</parent>
<!-- Additional lines to be added here... -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.3-1100-jdbc4</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
Application.java:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
@Configuration
@EnableAutoConfiguration
@ComponentScan
public …Run Code Online (Sandbox Code Playgroud) 我们使用Spring JavaMailSenderImpl发送Mail .以下是配置
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${host}"/>
<property name="port" value="${port}"/>
<property name="username" value="${mail.username}"/>
<property name="password" value="${mail.password}"/>
<property name="javaMailProperties">
<props>
<!-- Use SMTP transport protocol -->
<prop key="mail.transport.protocol" >${mail.transport.protocol}</prop>
<!-- Use SMTP-AUTH to authenticate to SMTP server -->
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<!-- Use TLS to encrypt communication with SMTP server -->
<prop key="mail.smtp.starttls.enable">${mail.smtp.starttls.enable}</prop>
<prop key="mail.debug">false</prop>
<prop key="mail.smtp.ssl.enable">true</prop>
</props>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
属性文件: -
host=XXXX.XXXX.XX
port=25
mail.username=xxxxxxxx
mail.password=xxxxxxx
mail.transport.protocol=smtp
mail.smtp.auth=true
mail.smtp.starttls.enable=true
Run Code Online (Sandbox Code Playgroud)
控制台日志
Exception in thread "taskExecutor-2" org.springframework.mail.MailSendException: Mail server connection failed; …Run Code Online (Sandbox Code Playgroud) public static <E extends Enum<E>> boolean validateEnum(Class<E> clazz, String s) {
return EnumSet.allOf(clazz).stream().anyMatch(e -> e.name().equals(s));
}
Run Code Online (Sandbox Code Playgroud)
以下是上述方法的示例调用
boolean isValid = validateEnum(Animal.class, "DOG");
boolean isValid = validateEnum(Color.class, "Red");
Run Code Online (Sandbox Code Playgroud)
可以使用Java 8实现相同的功能FunctionalInterface.我试过创建一个BiPredicate但是在编译错误时尝试了这个.
final BiPredicate<String,Class> biPre = (string1, clazz) -> EnumSet.allOf(clazz).stream().anyMatch(e -> e.name().equals(s));
Run Code Online (Sandbox Code Playgroud) 我无法让 SPEL 和 Spring 数据 jpa 正常工作
以下是我的存储库
package eg.repository;
public interface MyEntityRepository extends JpaRepository<MyEntity, Long>,JpaSpecificationExecutor<MyEntity> {
@Query("SELECT e FROM eg.domain.MyEntity e " +
"WHERE e.title = :#{#filter.title}"
)
Page<MyEntity> list1(@Param("filter") MyFilter filter,Pageable pageable);
}
Run Code Online (Sandbox Code Playgroud)
过滤组件
package eg.service;
import org.springframework.stereotype.Component;
@Component("filter")
public class MyFilter {
public String titleFilter() {
return "%title%";
}
private String title = "title title1";
public Long[] idFilter() {
return new Long[] {
1L, 2L
};
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我的实体
package eg.domain;
@Entity
public class MyEntity implements Serializable …Run Code Online (Sandbox Code Playgroud) 以下是我的课
public final class Test {
enum Animal {DOG,CAT};
enum COLOR {RED,YELLOW};
class Meaningless {
String animal,color;
}
public void filter(List<Meaningless> meaninglesses){
meaninglesses.stream()
.filter(meaningless -> {
try {
Animal.valueOf(meaningless.animal);
return true;
}catch(Exception e){
return false;
}
})
.filter(meaningless -> {
try {
COLOR.valueOf(meaningless.color);
return true;
}catch(Exception e){
return false;
}
})
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
}
filter方法的2次迭代实质上过滤掉了无效的枚举类型。如何从中删除重复的代码?该检查应该足够通用,以便isValidEnum在enum引入新的检查时不必更改。
理想情况下,我想做类似的事情
meaninglesses.stream()
.filter(meaningless -> isValidEnum(meaningless.animal,Animal.class))
.filter(meaningless -> isValidEnum(meaningless.color,COLOR.class))
Run Code Online (Sandbox Code Playgroud) 如何访问word匿名对象的对象属性
fun main(args: Array<String>) {
val sentence = "this is a nice sentence"
val wordLengths: List<Any> = sentence.split(' ').map {
object {
val length = it.length
val word = it
}
}
wordLengths.forEach { it:Any -> println(it) }
}
Run Code Online (Sandbox Code Playgroud) 题 :-
使用Java,您将如何允许多个线程同时在关键部分中运行,但上限为6。不应同时有6个以上的线程同时访问该线程。
我有一种感觉,该解决方案我做了(如下所示)是错误的,因为只有一个线程可以因为访问临界区同步关键字。请任何人确认这一点并发布其他解决方案(如果可能)。
我的解决方案
package multiplex;
public class Multiplex {
private static Multiplex multiplex = new Multiplex();
private volatile static int counter = 0;
/**
* @param args
*/
public static void main(String[] args) {
Runnable run = new Runnable() {
@Override
public void run() {
try {
multiplex.criticalSection();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
for(int index = 0; index < 100; index++){
Thread thread = new Thread(run);
thread.setName("Multiplex"+index); …Run Code Online (Sandbox Code Playgroud) 我想使用Bootstrap 4设计角度的多选下拉功能。下图是下图。
以下是我到目前为止的实现。
<div class="form-group">
<label>Employee privilege</label>
<select id="employeePrivelege" data-style="btn-default"
class="selectpicker form-control"
formControlName="employeePriveleges"
multiple data-max-options="2">
<option selected>Mustard</option>
<option selected>Barbecue</option>
</select>
</div>
Run Code Online (Sandbox Code Playgroud)
我有两个问题
selected上添加属性,则不会选择元素option我知道这种情况的发生是因为我不使用jQuery,并且我不想添加JQuery,因为在Angular中不建议这样做。
我的问题是
java ×5
spring ×3
java-8 ×2
java-stream ×2
lambda ×2
angular ×1
bootstrap-4 ×1
concurrency ×1
generics ×1
jakarta-mail ×1
kotlin ×1
ng-bootstrap ×1
spring-boot ×1
spring-data ×1
spring-el ×1
spring-mvc ×1
ssl ×1