小编sar*_*hdi的帖子

Spring @Autowired混乱(容器或会话)

在我的应用程序中,我使用自动连接User到我的服务的bean,MyService并将其用作登录用户信息的原则(因此用户不是从xml作为静态bean而是从登录用户动态生成)如果有登录的十个用户我将有十个该@AutoWired User领域的候选人.(对吗?)我可以在Spring容器中找到其中任何一个cos AutoWired,而不是会话.

告诉我,如果我错了.以及如果可能的话如何实际解决它.但是如果我的AutoWired字段被注释了怎么办呢@Scope ("Session")

像这样 :

@Component("user")
@Scope("session")
public class User 
{
String userid;
String name;
//getter setters etc
}
Run Code Online (Sandbox Code Playgroud)
@Component
public class MyService
{
    @Autowired
    private User user;

}
Run Code Online (Sandbox Code Playgroud)

当我调用MyServiceComponent 时,是否可以获取其他用户的User bean .Cos MyService只是@Component即使它User@Scope(session).

基本上,(如果我的假设是错的)我认为当你@Autowire是一个字段时,它会将容器视为整体并且容器不会被分成每个会话的子容器.

spring annotations dependency-injection autowired

12
推荐指数
2
解决办法
9885
查看次数

SonarQube:删除项目后无法重新启动

来自: Elasticsearch在崩溃后无法恢复从SonarQube删除项目

我删除了一个项目,然后去了cli并重新启动,现在它用以下方式进行了调整:

2015.05.08 15:10:57 INFO   es[o.s.p.ProcessEntryPoint]  Starting search
2015.05.08 15:10:57 INFO   es[o.s.s.SearchServer]  Starting Elasticsearch[sonarqube] on port 9001
2015.05.08 15:10:58 INFO   es[o.elasticsearch.node]  [sonar-1431061857323] version[1.4.4], pid[6991], build[c88f77f/2015-02-19T13:05:36Z]
2015.05.08 15:10:58 INFO   es[o.elasticsearch.node]  [sonar-1431061857323] initializing ...
2015.05.08 15:10:58 INFO   es[o.e.plugins]  [sonar-1431061857323] loaded [], sites []
2015.05.08 15:10:59 INFO   es[o.elasticsearch.node]  [sonar-1431061857323] initialized
2015.05.08 15:10:59 INFO   es[o.elasticsearch.node]  [sonar-1431061857323] starting ...
2015.05.08 15:11:00 INFO   es[o.e.transport]  [sonar-1431061857323] bound_address {inet[/0.0.0.0:9001]}, publish_address {inet[/192.168.78.76:9001]}
2015.05.08 15:11:00 INFO   es[o.e.discovery]  [sonar-1431061857323] sonarqube/KkVXWlQCRLGbdSgJZT90uA
2015.05.08 15:11:03 INFO   es[o.e.cluster.service]  [sonar-1431061857323] new_master [sonar-1431061857323][KkVXWlQCRLGbdSgJZT90uA][java-ci.gbst.net][inet[/192.168.78.76:9001]]{rack_id=sonar-1431061857323}, reason: …
Run Code Online (Sandbox Code Playgroud)

sonarqube

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

spring在tmp下启动spring.log

在测试期间经历了Spring Boot 使用 /tmp/spring.log 文件

但这没有帮助。我的 spring 启动应用程序中有一个 logback.xml,当我启动它时,它会在 var/tmp/spring.log 中创建一个日志。现在这不能在客户端站点上工作。有没有办法将它配置为不创建它,我的日志已经将控制台记录在我在 appender 中定义的日志文件中。我什至不知道这正在发生。并且此 spring.log 与滚动文件附加程序一起使用,这意味着它将每天继续创建日志。

我删除了:

<!--include resource="org/springframework/boot/logging/logback/base.xml"/-->
Run Code Online (Sandbox Code Playgroud)

从我的 logback.xml 但它仍然没有阻止它访问文件或创建它

任何帮助将不胜感激

编辑:我的 logback.xml

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="true">
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/fix.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>90</maxHistory>
        </rollingPolicy>
        <encoder>
            <charset>utf-8</charset>
            <Pattern>%d %-5level [%thread] %logger{0}: %msg%n</Pattern>
        </encoder>
    </appender>

    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <queueSize>512</queueSize>
        <appender-ref ref="FILE"/>
    </appender>





<logger name="com.comp.myapp" level="INFO"/>


<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
    <resetJUL>true</resetJUL>
</contextListener>

<root level="INFO">
    <appender-ref ref="FILE" />
    <!--<appender-ref ref="CONSOLE"/>-->
</root>
Run Code Online (Sandbox Code Playgroud)

由此产生的问题是,如果我使用相同的用户部署两次相同的应用程序。两个应用程序都在写入同一个文件,这是没有意义的。如果我在同一台机器上也部署了另一个 Spring Boot 应用程序,它们将写入 tmp 文件夹中的同一个 spring.log。我不明白创建“偷偷摸摸”日志背后的原因是什么(我称之为偷偷摸摸)

java logging spring-boot

3
推荐指数
2
解决办法
4631
查看次数

Springboot ssl 信任库属性不起作用

我正在运行一个 spring boot 应用程序,它是一个 web 服务客户端,并向 Jboss 上的 web 服务发送请求。

在 jboss 上添加了一个证书,从那时起我开始出现异常:

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387)
Run Code Online (Sandbox Code Playgroud)

所以我在谷歌上搜索了如何与基于证书的 Jboss 进行通信,并提出了我需要从 jboss 证书创建一个信任存储然后在我的 application.yaml 中使用它的想法

    server:
      port: 7887
      address: 127.0.0.1
      ssl:
  #      enabled: true
        trust-store: file:config/myapp.truststore
        trust-store-password: myappdomain
Run Code Online (Sandbox Code Playgroud)

这些没有用。所以我使用了更多的手册和基于理由的方法

我只是做了下面的事情,这奏效了。(对于任何有相同问题的人,这都有效;我在 config 目录中添加了 truststore,并且 config 目录与 myapp.jar 处于同一级别)

java  -Djavax.net.ssl.trustStore=config/myapp.truststore -jar myapp.jar  
Run Code Online (Sandbox Code Playgroud)

我的问题:为什么 application.yaml 配置不起作用。我是不是错过了什么。

上述方法无需密码即可工作(可能是因为 jboss 中的密钥库和证书上的密码与信任库密码相同)。

有效的方法是否存在任何安全问题或任何类型的问题。以及将来如何使 yaml 配置工作。

java ssl truststore spring-boot

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

maven bad class javax.annotation.PostConstruct

我正在努力建立一个战争项目.并在编译它给我这个错误:

[编译:编译]将432个源文件编译为C:\ Beta\ECORP5\ECORP5-web\target\classes -------------------------- -----------------------------------编译错误:------------ -------------------------------------------------\Beta\fin\fin-web\src\main\java\com\comp\fin\utils\Formatter.java:[23,-1]无法访问javax.annotation.PostConstruct坏类文件:C:\ Beta\fin\fin-web\target\endorsed\javaee-endorsed-api-6.0.jar(javax/annotation/PostConstruct.class)类文件有错误的版本50.0,应该是49.0 1错误

我无法摆脱这个错误.我正在使用java 6和jdk 1.5这里是我的POM.xml或其中的一部分没有不相关的东西:

> <**?**xml version="1.0" encoding="UTF-8"?**> <**project
> xmlns="http://maven.apache.org/POM/4.0.0"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
> http://maven.apache.org/xsd/maven-4.0.0.xsd"**>
>     

><*modelVersion>4.0.0<*/modelVersion>
>     <*parent>
>         <*artifactId>fin<*/artifactId>
>         <*groupId>com.comps<*/groupId>
>         <*version>1.0-SNAPSHOT<*/version>
>     <*/parent>
> 
>     <groupId>com.comps</groupId>
>     <artifactId>fin-web</artifactId>
>     <version>1.0-SNAPSHOT</version>
>     <packaging>war</packaging>
> 
>     <name>fin-web</name>
> 
>     <properties>
>         <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
>         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>     </properties>
> 
>     <dependencies>
>        
>         <dependency>
>             <groupId>javax</groupId>
>             <artifactId>javaee-web-api</artifactId>
>             **<version>6.0</version>**            
>         </dependency>
> 
>     </dependencies>
> 
>     <build>
>         <plugins>
> …
Run Code Online (Sandbox Code Playgroud)

war java-ee maven

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

Java Double初始化为0.0

我有一个bean,我有一个字段"CustAmount",它是双倍的,我尝试测试bean,我似乎不明白这一点:当我在我的本地机器上运行时,它在实例化时被初始化为0.0.当我在我的linux测试环境中运行相同的代码时,它仍然是null.由于检索到的数据存在差异,这意味着如果我将CustAmount作为null发送到我的后端,我会获得一些数据,但如果我将CustAmount发送为0.0,则查询将在0.0的基础上完成,并且不会向我发回任何内容.

如果代码相同,这怎么可能呢?有可能当我在java 1.5中编译新的MyBean()时,double保持为null并且在1.6中它被初始化为0.0.

我不知道这是在两个Java版本中发生的事情,但这是我最终的唯一区别.

谢谢你的任何提示.

添加代码段:

public class MyBean {

private double custAmount;

    public void setCustAmount(double custAmount) {
        this.custAmount = custAmount;
    }
public double getCustAmount() {
        return custAmount;
    }

}
Run Code Online (Sandbox Code Playgroud)

而我只是这样做

MyBean mybean =  new MyBean();
Run Code Online (Sandbox Code Playgroud)

它不是双人而是双人.赛义德..

java double

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