小编Eri*_* B.的帖子

是否有办法@Autowire需要构造函数参数的bean?

我正在使用Spring 3.0.5并尽可能地为我的班级成员使用@Autowire注释.我需要自动装配的bean之一需要其构造函数的参数.我查看了Spring文档,但似乎找不到任何关于如何注释构造函数参数的引用.

在XML中,我可以将其用作bean定义的一部分.@Autowire注释是否有类似的机制?

例如:

@Component
public class MyConstructorClass{

  String var;
  public MyConstructorClass( String constrArg ){
    this.var = var;
  }
...
}


@Service
public class MyBeanService{
  @Autowired
  MyConstructorClass myConstructorClass;

  ....
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,如何使用@Autowire注释在MyBeanService中指定"constrArg"的值?有没有办法做到这一点?

谢谢,

埃里克

spring constructor autowired spring-annotations spring-bean

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

如何将自定义CA根证书添加到Windows中的pip使用的CA Store?

我刚刚从python.org安装了Python3,并且无法安装包pip.根据设计,网络上有一个中间人的数据包检测设备,通过使用自己的证书重新签名所有ssl连接来检查所有数据包(包括ssl).部分GPO将自定义根证书推送到Windows密钥库.

使用Java时,如果我需要访问任何外部https站点,我需要手动更新JVM中的cacerts以信任自签名CA证书.

我如何为python实现这一目标?现在,当我尝试安装软件包时pip,可以理解,我得到了很多[SSL: CERTIFICATE_VERIFY_FAILED]错误.

我意识到我可以使用--trusted-host参数忽略它们,但我不想为我正在尝试安装的每个包执行此操作.

有没有办法更新python使用的CA证书存储?

python windows ssl pip

56
推荐指数
5
解决办法
8万
查看次数

如何在@Transactional方法中手动强制提交?

我正在使用Spring/Spring-data-JPA,并发现自己需要在单元测试中手动强制提交.我的用例是我正在进行多线程测试,其中我必须使用在生成线程之前持久化的数据.

不幸的是,鉴于测试在一个@Transactional事务中运行,即使是一个flush也没有让它可以被生成的线程访问.

   @Transactional   
   public void testAddAttachment() throws Exception{
        final Contract c1 = contractDOD.getNewTransientContract(15);
        contractRepository.save(c1);

        // Need to commit the saveContract here, but don't know how!                
        em.getTransaction().commit();

        List<Thread> threads = new ArrayList<>();
        for( int i = 0; i < 5; i++){
            final int threadNumber = i; 
            Thread t =  new Thread( new Runnable() {
                @Override
                @Transactional
                public void run() {
                    try {
                        // do stuff here with c1

                        // sleep to ensure that the thread is not …
Run Code Online (Sandbox Code Playgroud)

java spring jpa spring-transactions spring-data

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

我在哪里可以找到JPA2 Maven依赖?

我正在尝试构建一个依赖于JPA2的实现不可知的maven模块.不幸的是,唯一的Maven JPA依赖是基于JPA1,因此,我不能使用EntityManager.detach()方法,因为它只是JPA2选项.

理想情况下,我希望能够在我的Pom中指定我的javax.persistence依赖项,并要求app/container提供JPA2实现.不幸的是,我找不到任何这样的依赖.

在这一点上,我唯一的选择是将hibernate-jpa-2.0-api 1.0.0.FINAL声明为提供的依赖项吗?

dependencies maven jpa-2.0

32
推荐指数
3
解决办法
6万
查看次数

从main()方法中获取可执行jar的名称

我创建了一个可执行jar并使用commons-cli为用户提供了在启动客户端时指定命令行参数的能力.一切正常.但是,当我打印jar的用法语句时,我想显示以下内容:

usage: java -jar myprog.jar <options> <file>
--help Display the help message
--debug Enable debugging
....
Run Code Online (Sandbox Code Playgroud)

使用commons-cli可以轻松打印所有选项.然而,"使用"线是头部刮擦.我似乎无法找到从args []获取传递给应用程序的"myprog.jar"名称的方法.

这有什么简单的方法吗?我可以使用一个非常复杂的方法从我的类的类加载器返回跟踪并找出它是否包含在jar中,但这似乎是一个相当难看的答案,应该是一个非常简单的问题.

private String getPath(Class cls) {
    String cn = cls.getName();
    String rn = cn.replace('.', '/') + ".class";
    String path =
            getClass().getClassLoader().getResource(rn).getPath();
    int ix = path.indexOf("!");
    if(ix >= 0) {
        return path.substring(0, ix);
    } else {
        return path;
    }
}
Run Code Online (Sandbox Code Playgroud)

java program-entry-point apache-commons-cli

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

如何用maven创建基于spring的可执行jar?

我有一个基于Maven的Spring-WS客户端项目,我想打包成一个jar.在eclipse中,一切都运行正常.当我尝试将其打包为可执行jar时,我得到ClassNotFound异常,因为Spring jar没有包含在我的应用程序jar中.

所以我添加了maven-shade-plugin来包含我的应用程序jar中的所有依赖项.当我查看我的app jar时,我看到包含所有依赖项的所有类文件(所有库jar都被爆炸).

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>com.cws.cs.Client</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>

        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

我的问题是在打包过程中,我的多个spring依赖项有不同的META-INF/spring.schemas文件相互覆盖.因此,我的最后一个jar有一个不完整的spring.schemas文件.

因此,当我尝试运行我的可执行jar时,我收到Spring错误消息,因为spring.schemas文件不完整(Spring-WS的jar覆盖了Spring-core的spring.schemas文件),因此无法找到文件.

我的可执行jar的META-INF/spring.schemas:

http\://www.springframework.org/schema/web-services/web-services-1.5.xsd=/org/springframework/ws/config/web-services-1.5.xsd
http\://www.springframework.org/schema/web-services/web-services-2.0.xsd=/org/springframework/ws/config/web-services-2.0.xsd
http\://www.springframework.org/schema/web-services/web-services.xsd=/org/springframework/ws/config/web-services-2.0.xsd
Run Code Online (Sandbox Code Playgroud)

而不是Spring-beans.jar META-INF/spring.schemas:

http\://www.springframework.org/schema/beans/spring-beans-2.0.xsd=org/springframework/beans/factory/xml/spring-beans-2.0.xsd
http\://www.springframework.org/schema/beans/spring-beans-2.5.xsd=org/springframework/beans/factory/xml/spring-beans-2.5.xsd
http\://www.springframework.org/schema/beans/spring-beans-3.0.xsd=org/springframework/beans/factory/xml/spring-beans-3.0.xsd
http\://www.springframework.org/schema/beans/spring-beans-3.1.xsd=org/springframework/beans/factory/xml/spring-beans-3.1.xsd
http\://www.springframework.org/schema/beans/spring-beans.xsd=org/springframework/beans/factory/xml/spring-beans-3.1.xsd
http\://www.springframework.org/schema/tool/spring-tool-2.0.xsd=org/springframework/beans/factory/xml/spring-tool-2.0.xsd
http\://www.springframework.org/schema/tool/spring-tool-2.5.xsd=org/springframework/beans/factory/xml/spring-tool-2.5.xsd
http\://www.springframework.org/schema/tool/spring-tool-3.0.xsd=org/springframework/beans/factory/xml/spring-tool-3.0.xsd
http\://www.springframework.org/schema/tool/spring-tool-3.1.xsd=org/springframework/beans/factory/xml/spring-tool-3.1.xsd
http\://www.springframework.org/schema/tool/spring-tool.xsd=org/springframework/beans/factory/xml/spring-tool-3.1.xsd
http\://www.springframework.org/schema/util/spring-util-2.0.xsd=org/springframework/beans/factory/xml/spring-util-2.0.xsd
http\://www.springframework.org/schema/util/spring-util-2.5.xsd=org/springframework/beans/factory/xml/spring-util-2.5.xsd
http\://www.springframework.org/schema/util/spring-util-3.0.xsd=org/springframework/beans/factory/xml/spring-util-3.0.xsd
http\://www.springframework.org/schema/util/spring-util-3.1.xsd=org/springframework/beans/factory/xml/spring-util-3.1.xsd
http\://www.springframework.org/schema/util/spring-util.xsd=org/springframework/beans/factory/xml/spring-util-3.1.xsd
Run Code Online (Sandbox Code Playgroud)

我很难过.我不确定是否/如何将所有内容打包为单个可执行jar.我不知道这是一个阴影插件配置问题,还是我试图做一些不可能的事情.我不得不手动创建自己的spring.schemas文件(其他的串联)似乎是不正确的.

我可能有点跳了一下枪.在挖掘插件的更多信息时,我注意到我之前错过的AppendingTransformer.但是,我关心的是如何知道哪些其他文件有同样的问题?我发现/抓住了这个特殊的Spring问题.我不知道任何其他可能正在做类似事情的库......

任何建议,将不胜感激.

java spring spring-ws maven maven-shade-plugin

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

如何让maven在maven.build.timestamp中显示本地时区?

在Maven 3.2.2+中,maven.build.timestamp已根据MNG-5452重新定义以UTC显示时间.

有没有办法指定我想在我当地时区而不是UTC中提供时区信息?我简要地浏览了maven源代码,但是无论如何都没有看到我想要TZ是本地TZ而不是UTC.

java timezone maven

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

可以在JSR 330中使@Inject成为可选项(如@Autowire(required = false)吗?

Spring的@Autowire可以被配置成,如果没有匹配的自动装配候选人被发现春天不会引发错误:@Autowire(required=false)

是否有等效的JSR-330注释? @Inject如果没有匹配的候选人,总是会失败.有没有办法可以使用,@Inject但如果找不到匹配的类型,框架就会失败?我无法在那个程度上找到任何文件.

java spring dependency-injection cdi

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

对如何处理CORS OPTIONS预检请求感到困惑

我刚开始使用Cross Origin Resource Sharing并尝试让我的webapp响应CORS请求.我的webapp是在Tomcat 7.0.42上运行的Spring 3.2应用程序.

在我的webapp的web.xml中,我启用了Tomcat CORS过滤器:

<!-- Enable CORS (cross origin resource sharing) -->
<!-- http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter -->
<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>   
Run Code Online (Sandbox Code Playgroud)

我的客户端(使用AngularJS 1.2.12编写)正在尝试访问启用了基本身份验证的REST端点.当它发出GET请求时,Chrome首先预检请求,但是从服务器收到403 Forbidden响应:

Request URL:http://dev.mydomain.com/joeV2/users/listUsers
Request Method:OPTIONS
Status Code:403 Forbidden
Request Headers:
   OPTIONS /joeV2/users/listUsers HTTP/1.1
   Host: dev.mydomain.com
   Connection: keep-alive
   Cache-Control: max-age=0
   Access-Control-Request-Method: GET
   Origin: http://localhost:8000
   User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36
   Access-Control-Request-Headers: accept, authorization
   Accept: */*
   Referer: http://localhost:8000/
   Accept-Encoding: gzip,deflate,sdch
   Accept-Language: en-US,en;q=0.8
Response Headers:
   HTTP/1.1 …
Run Code Online (Sandbox Code Playgroud)

tomcat spring-mvc cors angularjs preflight

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

如何让Lombok和AspectJ一起工作?

我刚刚在SO上发布了关于龙目岛没有生成我的getter/setter的问题.事实证明它与AspectJ相冲突.如果我禁用AspectJ,则适当地生成getter/setter.

我的猜测是ajc编译器无法识别lombok.

Lombok和AspectJ是互斥的吗?两种技术一起工作吗?

java aspectj lombok

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