小编The*_*ous的帖子

Spring:带有和不带@ModelAttribute的绑定对象

我是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)

这很好用,但这里的问题是我userwelcome.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如果我不需要在视图中发送数据并且我的请求是 -

  1. 查询字符串即GET中的表单数据
  2. 请求有效负载或主体,即POST中的表单数据
  3. json数据在ajaxified GET请求中
  4. POST请求中的json数据 - 我想这两者都不会绑定.@RequestBody是必须的.

data-binding spring modelattribute

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

之间的关联:SpringIocContainer | ApplicationContext | 的WebApplicationContext

背景

阅读1 2 3 4 5 6链接后我得出以下结论 -

由于Spring MVC设计了standered servlets,并促进相同的功能servlet contextapplication context.在春季存在两种类型的上下文ApplicationContextWebApplicationContext-

ApplicationContext初始化ContextLoaderListener,每个应用程序的单个实例. WebApplicationContext每个人加载DispatcherServlet.

我们可以理解上面这样ApplicationContext延伸,WebApplicationContext所以ApplicationContext最终与之相关的东西都是其中的一部分WebApplicationContext.

疑惑

  1. 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)
  2. context并且container似乎是我们大多数人的同义词,我想举个例子.假设我们有两个调度程序servlet一个用于 rest和另一个用于mvc.

    第一个调度员 -

    public class …
    Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc ioc-container

11
推荐指数
1
解决办法
936
查看次数

内存如何分配给lambda | 它是如何通过非超类引用变量引用的

我正在创建功能接口的实现,下面是我的代码

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在运行时如何处理?

java lambda heap-memory java-8

7
推荐指数
3
解决办法
747
查看次数

在连接两个String s1和s2时,生成的输出String s3将在java中创建堆或常量池吗?

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不在池中.

java string

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

每次数量更新时立即支付条纹

我们使用 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)

因此,对于任何更新条带退款(如果数量减少)和费用(如果数量增加)在计费周期结束时按比例分配。

在我们的业务逻辑中,我们需要在每次数量更新时立即付款(收费或退款),而不是在计费周期结束时。有没有办法在条纹中实现这一点。

stripe-payments

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

Spring:通过私有方法注册bean

我正在配置 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)

java spring spring-mvc

2
推荐指数
1
解决办法
5214
查看次数

线程"main"中的异常java.util.regex.PatternSyntaxException:非法重复

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 exception

0
推荐指数
1
解决办法
866
查看次数

映射者:Hibernate

我是新的hibernate我通过几个(走了1,2对)的教程hibernate,甚至在我的项目实施,我得出了以下结论-

mapped by 意味着对象的另一面是所有者

这只是针对数据库的观点,实际上我是如何在数据库中创建关系的,一般mapped by用来避免不必要的表.

从java的角度来看,这对你的代码没有影响,运行的相同代码即使我们删除mapped by也会表现完全相同mapped by.

我的上述理解是否正确,如果没有,请您解释一下这种情况有何不同?

java spring hibernate

0
推荐指数
1
解决办法
148
查看次数