我正在创建一个项目,它将响应收集多个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) 我希望从我的项目中删除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将两位数年份转换为全年,那将是很好的.
最近我下载了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路径,那么它就会发生.我无法弄清楚该变量的正确路径应该是什么.任何人都可以帮我这个.谢谢
我正在使用 Java,我得到了一个 db、SQLite 3.8.5、2 列ID(int key)和note(string). 我希望能够查询包含多个单词的所有笔记。
示例: Note1:“你好,这部电影是 foo”
Note2:“你好,这部电影是黄色的”
Note3:“你好,foo 这部电影是”(尤达,不要输入!)
给定用户过滤词:“foo” “电影”
查询结果应为注 1 和注 2。
这个正则表达式有效,但我似乎无法找到如何将正则表达式作为查询询问: .*(?=.*movie)(?=.*foo).*
BR
//我试图解决我从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)
//这个方法似乎工作正常//但是当我提交它时,它表明来自//代码大战的各种输入不正确
您如何编写在方法声明中具有“throws IllegalArgumentEception”的方法。比如这个:如果我只在 d>0 时返回 d 否则抛出 an IllegalArgumentException,我该怎么做?你使用try{}和catch{}吗?
public double getPrice(double d) throws IllegalArgumentException {
}
Run Code Online (Sandbox Code Playgroud) java ×5
2-digit-year ×1
aop ×1
groovy ×1
java-time ×1
jodatime ×1
regex ×1
spring ×1
spring-boot ×1
sqlite ×1