小编Ahm*_*our的帖子

Spring可以在抽象类中自动装配吗?

Spring无法自动装载我的对象?是否可以在抽象类中自动装配对象.假设所有模式都在application-context.xml中提供

问题:基础和扩展类(如果有)@Service @Component应该是什么注释?

abstract class SuperMan {

    @Autowire
    private DatabaseService databaseService;

    abstract void Fly();

    protected void doSuperPowerAction(Thing thing) {

        //busy code

        databaseService.save(thing);

    }
}
Run Code Online (Sandbox Code Playgroud)

扩展课程

public class SuperGirl extends SuperMan {

    @Override
    public void Fly() {
        //busy code
    }

    public doSomethingSuperGirlDoes() {

        //busy code

        doSuperPowerAction(thing)

    }
Run Code Online (Sandbox Code Playgroud)

应用程序的context.xml

<context:component-scan base-package="com.baseLocation" />
<context:annotation-config/>
Run Code Online (Sandbox Code Playgroud)

spring abstract-class autowired

57
推荐指数
3
解决办法
8万
查看次数

Objects.hash()vs Objects.hashCode(),需要澄清

好的,所以在Java 7中我们有

o.hashCode();
Objects.hashCode(o);

    Objects.hash(o);
Run Code Online (Sandbox Code Playgroud)

前两个与零点检查大致相同,但最后一个是什么?

提供单个对象引用时,返回的值不等于该对象引用的哈希代码.

这是为什么?我的意思是,我们不需要3种做同样事情的方法,我理解......但为什么我们需要Objects.hash()呢?你什么时候选择使用一个与另一个?

hashcode java-7

53
推荐指数
3
解决办法
4万
查看次数

如何获取Java列表的长度?

如果我有一个List<List<String>>Java数据,我可以通过代码得到第一个列表的长度:

int lengthData = data.get(0).size();
Run Code Online (Sandbox Code Playgroud)

但是如何在不遍历列表列表的情况下获取结构中的列表数量?

也许我有点不清楚.我有结构:

List<List<String>> data 
Run Code Online (Sandbox Code Playgroud)

我明白了:

int i = data.size();
Run Code Online (Sandbox Code Playgroud)

将等于1,因为它是根列表.所以我想知道的是有多少个子列表.遍历这样的结构:

for (List<String> l : data) {                     
     total ++;                
}
Run Code Online (Sandbox Code Playgroud)

只给我一个我觉得奇怪的结果.

我有以下形式的数据:

List 1 ==> 1, 2, 3, 4
List 2 ==> 3, 8. 9, 1
Run Code Online (Sandbox Code Playgroud)

等等这些是根列表的子列表.

java list

50
推荐指数
2
解决办法
19万
查看次数

返回一个空数组

这可能是一个愚蠢的问题,但是foo()和之间有什么区别bar()吗?


private static File[] foo() {
    return Collections.emptyList().toArray(new File[0]);
}
Run Code Online (Sandbox Code Playgroud)
private static File[] bar() {
    return new File[0];
}
Run Code Online (Sandbox Code Playgroud)

我试图想出返回空数组的最佳方法,而不是null.

java arrays

48
推荐指数
5
解决办法
12万
查看次数

log4j2为FileAppender指定tomcat home目录的相对路径

我正在尝试为我的本地运行的tomcat服务器配置log4j2.我无法将日志传递到与tomcat安装相关的位置.

如果我指定一个绝对路径它的工作原理.如果我使用相对路径,它输出到的位置System.getProperty("user.dir").

但是,当我尝试使用它${catalina.home}${catalina.base}它不起作用.如果我在启动时输出这两个系统属性,则会定义它们并指向正确的位置.

也,

  • Tomcat 7.0.26
  • servlet 2.5
  • log4j2.0 beta 8
  • 我们正在使用slf4j和log4j2.
  • 我通过环境变量设置所有记录器是异步的-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector.

我的感觉是Tomcat在处理log4j2.xml时可能没有完全初始化?任何想法将不胜感激!

这是我的log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="debug" name="LoggingConfig"> 
  <appenders>
    <FastFile name="ALog" fileName="${catalina.home}/logs/test.log" immediateFlush="true" append="true">
      <PatternLayout>
        <pattern>%d %p %c{1.} [%t] %m%n</pattern>
      </PatternLayout>
    </FastFile>
  </appenders>

  <loggers>
    <logger name="a.namespace.dir" level="info" additivity="false">
      <appender-ref ref="ALog"/>
    </logger>

    <root level="info">
      <appender-ref ref="ALog"/>
    </root>
  </loggers>

</configuration>
Run Code Online (Sandbox Code Playgroud)

来自catalina.out

2013-07-31 11:22:00,313 DEBUG Calling createAppender on class org.apache.logging.log4j.core.appender.FastFileAppender for element FastFile with params(fileName="${catalina.home}/logs/test.log", append="true", name="ALog", immediateFlush="true", suppressExceptions="null", PatternLayout(%d …
Run Code Online (Sandbox Code Playgroud)

logging tomcat fileappender log4j2

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

Flyway 3.0迁移校验和不匹配

将Flyway Maven插件从2.3升级到3.0后,我得到:

[错误]无法在项目xxx上执行目标org.flywaydb:flyway-maven-plugin:3.0:migrate(default-cli):org.flywaydb.core.api.FlywayException:验证失败.发现应用迁移与可用迁移之间存在差异:迁移校验和不匹配迁移V003__data_feed_sources_locations.sql:DB = 942424992,Classpath = 1117634405 - > [帮助1]

在其他一些项目上也有类似的错误.

如果我降级回2.3,迁移运行正常.这是否与用于计算校验和的不同平台编码有关?

任何解决方法,或更好的解决方案?

maven flyway

44
推荐指数
4
解决办法
7万
查看次数

Hibernate @ManyToOne引用了一个未知实体

我收到以下Hibernate异常:

@OneToOne or @ManyToOne on Matchup.awayTeam references an unknown entity: Team

简化的Matchup类如下所示:

@Entity public class Matchup implements Serializable 
{
   protected Team awayTeam;

   @ManyToOne 
   @JoinColumn(name="away_team_id")
   public Team getAwayTeam() {
      return awayTeam;
   }
}
Run Code Online (Sandbox Code Playgroud)

简化的Team类看起来像这样:

@Entity
public class Team implements Serializable {
    protected List<Matchup> matchups;

    @OneToMany(mappedBy="awayTeam", targetEntity = Matchup.class,
    fetch=FetchType.EAGER, cascade=CascadeType.ALL)
    public List<Matchup> getMatchups() {
       return matchups;
    }
}
Run Code Online (Sandbox Code Playgroud)

笔记:

  • Matchup和Team都有子类.我不确定这是否会影响这种情况.
  • Matchup和Team都列在我的persistence.xml中作为包含.
  • 如果我在两个getter方法上放置@Transient注释,则错误消失.

任何人都可以阐明为什么会发生这种异常吗?

java hibernate jpa

43
推荐指数
4
解决办法
6万
查看次数

CMake:如何获取目录的所有子目录的名称?

我有两个与CMake相关的问题

1)假设我们有一个变量${MY_CURRENT_DIR},它包含一个包含几个子目录的目录路径:mydir1,mydir2和mydir3.我想检测这些子目录并将其名称放入${SUBDIRS}(不是这些目录的完整路径,只是它们的名称).如何自动完成?

2)假设${SUBDIRS}包含"mydir1 mydir2 mydir3".如何更换

ADD_SUBDIRECTORY(mydir1)
ADD_SUBDIRECTORY(mydir2)
ADD_SUBDIRECTORY(mydir3)
Run Code Online (Sandbox Code Playgroud)

循环结束${SUBDIRS}

非常感谢你.

cmake

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

如何使用webpack在js文件中加载CDN或外部供应商javascript lib,而不是在html文件中

我正在使用react starter kit进行客户端编程.它使用react和webpack.没有index.html或任何要编辑的html,所有js文件.我的问题是,如果我想从云加载供应商js lib,我该怎么做?

在html文件中很容易做到这一点. <script src="https://forio.com/tools/js-libs/1.5.0/epicenter.min.js"></script>

但是,在js文件中,它只使用npm安装的包.如何在没有html文件的情况下导入上面的lib?我尝试导入和require,它们只适用于本地文件.

更新10/21/15到目前为止,我尝试了两个方向,既不理想.

  1. @minheq是的,有一个html文件类型的反应启动工具包.它是src/components/Html下的html.js.我可以将cloud lib及其所有依赖项放在那里:
        <div id="app" dangerouslySetInnerHTML={{__html: this.props.body}} />
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
        <script src="https://forio.com/tools/js-libs/1.5.0/epicenter.min.js"></script>
        <script src="/app.js"></script>
        <script dangerouslySetInnerHTML={this.trackingCode()} />
    </body>
Run Code Online (Sandbox Code Playgroud)

好消息是它有效,我不需要在js文件中做任何其他事情,没有导入或要求.但是,现在我有两个以不同方式加载的jquery库.一个在这里,另一个通过npm和webpack.我想知道以后会给我带来麻烦.如果我在浏览器窗口中键入无主路径,由于服务器端加载,我使用的react-routing给出了'未定义变量'错误.所以这个解决方案不是很好.

  1. 使用webpack externals功能.这记录为:link."当你想将现有的API导入到包中时,你也可以使用外部选项.你想在CDN中使用jquery(单独的标签),但仍然想在你的包中要求("jquery").将其指定为external:{externals:{jquery:"jQuery"}}." 但是,我发现一些地方的文档都非常挑剔如何准确地做到这一点.到目前为止,我不知道如何使用它来替换<script src="https://forio.com/tools/js-libs/1.5.0/epicenter.min.js"></script>html.

javascript node.js reactjs webpack

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

使用nio.file.DirectoryStream以递归方式列出目录中的所有文件;

我想列出指定目录中的所有FILES和该目录中的子目录.不应列出任何目录.

我目前的代码如下.它无法正常工作,因为它只列出指定目录中的文件和目录.

我怎样才能解决这个问题?

final List<Path> files = new ArrayList<>();

Path path = Paths.get("C:\\Users\\Danny\\Documents\\workspace\\Test\\bin\\SomeFiles");
try
{
  DirectoryStream<Path> stream;
  stream = Files.newDirectoryStream(path);
  for (Path entry : stream)
  {
    files.add(entry);
  }
  stream.close();
}
catch (IOException e)
{
  e.printStackTrace();
}

for (Path entry: files)
{
  System.out.println(entry.toString());
}
Run Code Online (Sandbox Code Playgroud)

问候.

java nio file directorystream

38
推荐指数
4
解决办法
7万
查看次数