我是Spring的新手,并注册了一个用户.我确实喜欢这个.
@RequestMapping("/register")
public String register(@ModelAttribute User user,BindingResult result){
if(!result.hasErrors()){
userSerive.register(user);
}
return "welcome";
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但这里的问题是我user在welcome.jsp页面中不需要这个对象,所以为什么要让模型对象更重.所以我试过没有@ModelAttribute,这对我来说也适用于下面.
@RequestMapping("/register")
public String register(User user,BindingResult result){
if(!result.hasErrors()){
userSerive.register(user);
}
return "welcome";
}
Run Code Online (Sandbox Code Playgroud)
所以我只想知道两者的优点和缺点,如果我真的不需要user对象,那么这是最佳实践jsp.是@ModelAttribute做除了增加对象模型的任何其他事情,这春天隐式绑定不does.Is @ModelAttribute结合或者更安全的方法是什么?
我想在以下4种类型的请求中对我的查询进行分类.@ModelAttribute如果我不需要在视图中发送数据并且我的请求是 -
@RequestBody是必须的.背景
由于Spring MVC设计了standered servlets,并促进相同的功能servlet context和application context.在春季存在两种类型的上下文ApplicationContext和WebApplicationContext-
ApplicationContext初始化ContextLoaderListener,每个应用程序的单个实例.
WebApplicationContext每个人加载DispatcherServlet.
我们可以理解上面这样ApplicationContext延伸,WebApplicationContext所以ApplicationContext最终与之相关的东西都是其中的一部分WebApplicationContext.
疑惑
ApplicationContextAware提供哪个context对象.
public class SomeThing implements ApplicationContextAware{
@Override
public void setApplicationContext(ApplicationContext ctx) throws BeanException{
//this context object is `ApplicationContext` or `WebApplicationContext`?
}
}
Run Code Online (Sandbox Code Playgroud)context并且container似乎是我们大多数人的同义词,我想举个例子.假设我们有两个调度程序servlet一个用于
rest和另一个用于mvc.
第一个调度员 -
public class …Run Code Online (Sandbox Code Playgroud)我正在创建功能接口的实现,下面是我的代码
Consumer<Integer> consumer=new Consumer<Integer>() {
@Override
public void accept(Integer t) {
System.out.println(t);
}
};
Run Code Online (Sandbox Code Playgroud)
按照javadoc
类类型T的变量可以包含空引用或对类T的实例或作为T的子类的任何类的引用.
这里创建了匿名对象的对象,它是子类,Consumer可以通过引用变量引用consumer,这很精细.
但我看到Consumer就是FunctionalInterface,所以我也可以做这样的事情在java8-
使用Lambda
Consumer<Integer> consumer=t->System.out.println(t);
Run Code Online (Sandbox Code Playgroud)
或使用方法参考
Consumer<Integer> consumer=System.out::println;
Run Code Online (Sandbox Code Playgroud)
我知道在上述两种情况下都没有创建子类或匿名类.所以这导致我两次混淆 -
1:如果这里consumer没有引用子类或Anonymous类Consumer,那么这不违反上面提到的概念变量只能引用child/self或null?
2:内存如何分配给lamdas以及JVM在运行时如何处理?
String S1="He";
String S2="llow";
String S3="Hellow";
String S4="He"+"llow";
String S5=S1+S2;
System.out.println(S3==S4); // prints true
System.out.println(S5==S3); // prints false
System.out.println(S5==S4); // prints false
Run Code Online (Sandbox Code Playgroud)
为什么S5不从常量池中引用对象?因为S3并且S4在游泳池中这就是为什么给予真实S3==S4
但如果S5==S3&S5==S4结果为假,则意味着S5不在池中.
我们使用 Stripe 作为支付网关,我们有一个年度计划,即计划的计费周期为 1 年。
在计费周期内,用户可以更新选择更多席位,这将导致订阅计划的数量增加。
Subscription subscription = Subscription.retrieve(paymentDetails.getSubscriptionId());
int currentQuentity = subscription.getQuantity();
Map<String, Object> updateParams = new HashMap<String, Object>();
updateParams.put("quantity", (currentQuentity + changeInQuantity));
subscription.update(updateParams);
Run Code Online (Sandbox Code Playgroud)
因此,对于任何更新条带退款(如果数量减少)和费用(如果数量增加)在计费周期结束时按比例分配。
在我们的业务逻辑中,我们需要在每次数量更新时立即付款(收费或退款),而不是在计费周期结束时。有没有办法在条纹中实现这一点。
我正在配置 spring 安全性,下面是我的代码-
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(customUserDetailsService).passwordEncoder(encoder);
}
@Bean(name="encoder")
public BCryptPasswordEncoder getPasswordEncoder(){
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
...
}
Run Code Online (Sandbox Code Playgroud)
一旦我应用了@Autowire-
@Override
@Autowire
protected void configure(HttpSecurity http) throws Exception {
...
}
Run Code Online (Sandbox Code Playgroud)
这会在容器中引发异常,没有类型为“HttpSecurity”的 bean,这是预期的。
但是当我申请时@Autowire——
@Override
@Autowire
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(customUserDetailsService).passwordEncoder(encoder);
}
Run Code Online (Sandbox Code Playgroud)
没有例外?这个AuthenticationManagerBuilder豆子在豆厂里怎么样?
当我用这样的私有方法更改我的 bean 注册时 -
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(customUserDetailsService).passwordEncoder(getPasswordEncoder());
}
@Bean(name="encoder")
private BCryptPasswordEncoder …Run Code Online (Sandbox Code Playgroud) public static void main(String s[]) {
System.out.println(new Binary().meth());
}
String meth(){
String source = "{Hi|Hello|Hey}, how are you {today|doing}?";
List<String> list1=new ArrayList<String>();
List<String> list2=new ArrayList<String>();
String[] strg=source.split("{");
for(String str: strg){
String[] data=str.split("}");
list1.add(data[0]);
list2.add(data[1]);
}
Random random = new Random();
String[] req=new String[list1.size()];
int i=0;
for(String str: list1){
req[i++]= str.split("|")[random.nextInt(str.split("|").length)];
}
int j=0;
String result="";
for(String str: list2){
result=result+req[j++]+str;
}
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
在分裂字符串上的字符串{给我跟随错误 -
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition
{
at java.util.regex.Pattern.error(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud) java ×6
spring ×4
spring-mvc ×2
data-binding ×1
exception ×1
heap-memory ×1
hibernate ×1
java-8 ×1
lambda ×1
string ×1