关于带注释控制器的Spring AOP建议

我试图使用AOP在带注释的控制器之后进行一些处理。 一切都在运行,没有错误,但建议没有被执行。 这是控制器代码: @Controller public class HomeController { @RequestMapping(“/home.fo”) public String home(ModelMap model) { model = new ModelMap(); return “home”; } } 和application-config中的设置 和实际的建议 public class TestAdvice implements AfterReturningAdvice { protected final Log logger = LogFactory.getLog(getClass()); public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable { logger.info(“Called after returning advice!”); } } […]

使用Java创建.eml(电子邮件)文件

谁知道怎么做? 我收到了电子邮件的所有信息(正文,主题,从,到,cc,密送),需要生成一个.eml文件。

找出对象列表是否包含具有指定字段值的内容?

我有一个从数据库收到的DTO列表,他们有一个ID。 我想确保我的列表包含具有指定ID的对象。 显然,在这种情况下使用期望字段创建一个对象将无济于事,因为contains()调用Object.equals(),它们将不相等。 我找到了一个类似的解决方案:创建一个接口HasId ,在我的所有DTO中实现它,并inheritanceArrayList,其中contains(Long id)一个contains(Long id)方法的新类。 public interface HasId { void setId(Long id); Long getId(); } public class SearchableList extends ArrayList { public boolean contains(Long id) { for (T o : this) { if (o.getId() == id) return true; } return false; } } 但在这种情况下,我不能将List和ArrayList强制转换为SearchableList ……我会接受它,但我想确保我不是在发明自行车。 编辑(2016年10月): 当然,随着Java 8中lambda的引入,这样做的方法很简单: list.stream().anyMatch(dto -> dto.getId() == id);

Hibernate本机查询 – char(3)列

我在Oracle中有一个表,其中SC_CUR_CODE列是CHAR(3) 当我做: Query q2 = em.createNativeQuery(“select sc_cur_code, sc_amount from sector_costs”); q2.setMaxResults(10); List rs2 = q2.getResultList(); for (Object[] o : rs2) { System.out.println(“>>> cur=” + o[0]); } 我看到cur=E和cur=U而不是cur=EUR和cur=USD o[0]是java.lang.Character 我怎样才能获得EUR和USD的全部价值?

不是线程安全的对象发布

在实践中阅读Java并发,第3.5节:提出索赔 public Holder holder; public void initialize() { holder = new Holder(42); } 除了创建2个Holder实例的明显线程安全危险之外,该书声称可能会出现一个可能的发布问题,对于Holder类来说更是如此 public Holder { int n; public Holder(int n) { this.n = n }; public void assertSanity() { if(n != n) throw new AssertionError(“This statement is false.”); } } 可以抛出AssertionError! 这怎么可能 ? 我能想到的唯一可以允许这种荒谬的行为是,如果Holder构造函数不会被阻塞,那么当构造函数代码仍在不同的线程中运行时,将为该实例创建一个引用。 这可能吗 ?

从请求URL获取哈希参数

我有这样的url – http://www.coolsite.com/daily-plan/#id=1解析该字符串并读取哈希值(#id =之后的值)的最简单方法是什么? 谢谢

列出所有已部署的rest端点(spring-boot,jersey)

是否可以使用spring boot列出我配置的所有rest端点? 执行器在启动时列出所有现有路径,我想要类似于我的自定义服务,所以我可以检查启动是否所有路径都配置正确并使用此信息进行客户端调用。 我该怎么做呢? 我在服务bean上使用@Path / @GET注释,并通过ResourceConfig#registerClasses @GET注册它们。 有没有办法查询所有路径的配置? 更新:我通过注册REST控制器 @Bean public ResourceConfig resourceConfig() { return new ResourceConfig() { { register(MyRestController.class); } }; } Update2:我希望有类似的东西 GET /rest/mycontroller/info POST /res/mycontroller/update … 动机:当spring-boot应用程序启动时,我想打印出所有已注册的控制器及其路径,因此我可以停止猜测要使用哪些端点。

受保护的成员访问java中不同的包 – 一个好奇心

package packageOne; public class Base { protected void display(){ system.out.println(“in Base”); } } package packageTwo; public class Derived extends packageOne.Base{ public void show(){ new Base().display();//this is not working throws compilation error that display() from the type Base is not visible new Derived().display();//is working display();//is working } } 这两个包有两个不同的文件。 但为什么会这样呢?

来自CA的PKCS12 Java密钥库和java中的用户证书

我最近负责用Java模拟Apple产品(iPhone配置实用程序)。 我一直有点困惑的部分之一是关于Exchange ActiveSync的一部分。 在那里,它允许您从钥匙串中选择一个证书作为您的EAS帐户的凭据。 经过一些研究,我发现它实际上是在创建一个PKCS12密钥库,插入我选择的证书的私钥,并将其编码为XML。 到目前为止还没什么大不了的。 如果我使用Keychain Access创建一个.p12文件,它上传没有问题。 但是当我尝试将其转移到Java时,我遇到了一个问题。 假设我将之前使用过的.s12文件中的一个作为.cer文件导出(这是我们期望在环境中获得的)。 现在当我将它上传到Java时,我得到一个Certificate对象如下… KeyStore ks = java.security.KeyStore.getInstance(“PKCS12”); ks.load(null, “somePassword”.toCharArray()); CertificateFactory cf = CertificateFactory.getInstance(“X.509”, new BouncyCastleProvider()); java.security.cert.Certificate userCert = cf.generateCertificate(new FileInputStream(“/Users/me/Desktop/RecentlyExportedCert.cer”)); 但是当我尝试…… ks.setCertificateEntry(“SomeAlias”, userCert); 我得到例外…… java.security.KeyStoreException: TrustedCertEntry not supported 所以从证书我转移到键。 但是使用这些证书(我也获得了CA证书),我只能访问公钥,而不是私钥。 如果我试图像这样添加公钥… java.security.cert.Certificate[] chain = {CACert}; ks.setKeyEntry(“SomeAlias”, userCert.getPublicKey().getEncoded(), chain); 我明白了…… java.security.KeyStoreException: Private key is not stored as PKCS#8 […]

用于检索domain.tld的正则表达式

我需要一个Java中的正则表达式,我可以用来从任何url中检索domain.tld部分。 所以https://foo.com/bar,http://www.foo.com#bar,http://bar.foo.com都将返回foo.com。 我写了这个正则表达式,但它匹配整个url Pattern.compile(“[.]?.*[.x][az]{2,3}”); 我不确定我是否匹配“。” 性格正确。 我试过了 ”。” 但我从netbeans得到一个错误。 更新: tld不限于2或3个字符, http://www.foo.co.uk/bar应返回foo.co.uk.