小编Deb*_*was的帖子

自动转换为多个域对象的集中式Bean

我正在创建一个项目,它将响应收集多个bean对象,将其保存到数据库并返回事务的状态.可以从客户端发送多个对象.对于每个对象,它们具有单独的数据库,因此是单独的控

所以我计划创建一个框架,它可以接受来自多个控制器的多个对象,并只发送一个集中对象.但我不知道如何在控制器中使用集中对象作为返回类型(目前我将它们作为返回Object).以下是我的代码:

控制器:

@RestController
@RequestMapping("/stat/player")
public class PlayerController {

    @Autowired
    private StatService<PlayerValue> statPlayer;

    @RequestMapping("/number/{number}")
    public Object findByNumber(@PathVariable String number) { // Here returning Object seem odd
        return statPlayer.findByNumber(number);
    }
}
Run Code Online (Sandbox Code Playgroud)

服务:

@Service
@Transactional(isolation = Isolation.READ_COMMITTED)
public class PlayerServiceImpl implements StatService<PlayerValue> {

    @Autowired
    private PlayerRepository repository;

    @Override
    public PlayerValue findByNumber(String number) {
        Optional<PlayerEntity> numberValue = repository.findByNumber(number);
        return numberValue.map(PlayerEntity::toValue).orElse(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

在服务中我返回了PlayerValue对象,但我想将此对象包装到集中式Bean ResponseValue中.我为此创造了一个方面

@Aspect
@Component
public class Converter {
    private static final Logger LOG = LoggerFactory.getLogger(Converter.class);

    @Pointcut("within(@org.springframework.web.bind.annotation.RestController *)") …
Run Code Online (Sandbox Code Playgroud)

java aop spring design-patterns spring-boot

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

如何使用Java 8时间API将两位数年份转换为全年

我希望从我的项目中删除Joda-Time库.

我想把两位数转换成全年.Joda-Time的以下代码可以实现此目的.以下是joda-time的以下代码

DateTimeFormatter TWO_YEAR_FORMATTER = DateTimeFormat.forPattern("yy");
int year = LocalDate.parse("99"", TWO_YEAR_FORMATTER).getYear();
System.out.println(year);
Run Code Online (Sandbox Code Playgroud)

产出:1999年

这是我期望的输出,这在我的情况下是有意义的.但是,当我使用java.time API尝试相同的过程时,它会生成DatetimeParseException.以下是java.time API的以下代码:

DateTimeFormatter TWO_YEAR_FORMATTER = DateTimeFormatter.ofPattern("yy");
int year = LocalDate.parse("99", TWO_YEAR_FORMATTER).getYear();
System.out.println(year);
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

Exception in thread "main" java.time.format.DateTimeParseException: Text '99' could not be parsed: Unable to obtain LocalDate from TemporalAccessor: {Year=2099},ISO of type java.time.format.Parsed
    at java.base/java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:2017)
    at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1952)
    at java.base/java.time.LocalDate.parse(LocalDate.java:428)
    at scratch.main(scratch.java:10)
Caused by: java.time.DateTimeException: Unable to obtain LocalDate from TemporalAccessor: {Year=2099},ISO of type java.time.format.Parsed
    at java.base/java.time.LocalDate.from(LocalDate.java:396)
    at java.base/java.time.format.Parsed.query(Parsed.java:235)
    at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
    ... 2 more
Run Code Online (Sandbox Code Playgroud)

我没能看到堆栈跟踪的原因.如果有人可以帮助我理解以下场景并且还解释如何使用Java 8时间API将两位数年份转换为全年,那将是很好的.

java 2-digit-year jodatime java-time

9
推荐指数
3
解决办法
1184
查看次数

安装Groovy

最近我下载了Groovy-2.3.6并尝试在Linux系统上安装它.我按照http://groovy-lang.org/install.html的说明进行操作.我设置了GROOVY_HOME变量.

export GROOVY_HOME=/home/work/Software/groovy-2.3.6
Run Code Online (Sandbox Code Playgroud)

然后我将我的环境路径变量设置为Groovy bin文件夹

  export PATH=$PATH:/home/work/Software/groovy-2.3.6/bin
Run Code Online (Sandbox Code Playgroud)

已创建JAVA_HOME变量.

现在,当我尝试运行任何Groovy命令时,它会生成以下错误

Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/groo/tool/GroovyStarter
Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.tools.GroovyStarter
      at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: org.codehaus.groovy.tools.GroovyStarter.  Program will exit.
Run Code Online (Sandbox Code Playgroud)

我正在通过一些网站来解决这个问题.我发现如果我设置了错误的GROOVY_HOME路径,那么它就会发生.我无法弄清楚该变量的正确路径应该是什么.任何人都可以帮我这个.谢谢

groovy

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

使用正则表达式进行 SQLite 查询

我正在使用 Java,我得到了一个 db、SQLite 3.8.5、2 列ID(int key)note(string). 我希望能够查询包含多个单词的所有笔记。

示例: Note1:“你好,这部电影是 foo”
Note2:“你好,这部电影是黄色的”
Note3:“你好,foo 这部电影是”(尤达,不要输入!)
给定用户过滤词:“foo” “电影”

查询结果应为注 1 和注 2。

这个正则表达式有效,但我似乎无法找到如何将正则表达式作为查询询问: .*(?=.*movie)(?=.*foo).*

BR

java regex sqlite

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

用Java补充DNA序列

//我试图解决我从Codewars得到的问题//问题如下/*脱氧核糖核酸(DNA)是一种在细胞核中发现的化学物质,带有生物体发育和功能的"指令".

如果您想了解更多http://en.wikipedia.org/wiki/DNA

在DNA串中,符号"A"和"T"是彼此的互补,如"C"和"G".你有DNA的一面功能(字符串,Haskell除外); 你需要获得另一个互补的一面.DNA链从不是空的或根本没有DNA(再次,除了Haskell).*/

    public class DnaStrand {

        public static String makeComplement(String dna) {
             StringBuilder builder = new StringBuilder();

             for(int i=0;i<dna.length();i++){
                  char c = dna.charAt(i);
                  if(dna.charAt(i) == 'T'){
                      builder.append('A');
                  }
                  if(dna.charAt(i) == 'A'){
                      builder.append('T');
                  }
                  if(dna.charAt(i) == 'C'){
                      builder.append('G');
                  }
                  if(dna.charAt(i) == 'G'){
                      builder.append('T');
                  }   
             }
             return builder.toString();
        }
    }
Run Code Online (Sandbox Code Playgroud)

//这个方法似乎工作正常//但是当我提交它时,它表明来自//代码大战的各种输入不正确

java

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

如何在方法声明中使用“throws IllegalArgumentException”

您如何编写在方法声明中具有“throws IllegalArgumentEception”的方法。比如这个:如果我只在 d>0 时返回 d 否则抛出 an IllegalArgumentException,我该怎么做?你使用try{}catch{}吗?

public double getPrice(double d) throws IllegalArgumentException {

}
Run Code Online (Sandbox Code Playgroud)

java illegalargumentexception

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