如何在不创建实现它的类的情况下为接口创建代理?
我有一个具体的例子:我有一个接口,Contact,需要创建一个充当联系人的代理对象.此代理对象将用于运行一些TestNG测试.
我尝试过使用JDK方法,但只能找到需要实际实现该接口的示例.
我还发现jasssist可以帮助我解决这个问题,并尝试实现一个似乎有效的简单示例,直到我出现Out of Memory错误.这是我正在做的事情的片段:
import javassist.util.proxy.MethodFilter;
import javassist.util.proxy.MethodHandler;
import javassist.util.proxy.ProxyFactory
protected final T createMock(final Class<T> clazz) {
final ProxyFactory factory = new ProxyFactory();
factory.setInterfaces(new Class[] { clazz });
factory.setFilter(new MethodFilter() {
public final boolean isHandled(final Method m) {
// ignore finalize()
return !m.getName().equals("finalize");
}
});
final MethodHandler handler = createDefaultMethodHandler();
try {
return (T) factory.create(new Class<?>[0], new Object[0], handler);
} catch (final Exception e) {
e.printStackTrace();
}
return null;
}
private MethodHandler createDefaultMethodHandler() {
return new MethodHandler() { …Run Code Online (Sandbox Code Playgroud) 我正在使用Graph API为我实现一个解决方案,此时,我可以发布到我的Feed,如帖子,评论它们,但我不能喜欢评论(没有一个) ,我收到消息:未捕获OAuthException:(#100)参数url是必需的.谁能帮忙?
我的程序中有一个按钮,当按下时,它会带你到我的wiki页面关于该程序.我使用以下行来执行此操作:
java.awt.Desktop.getDesktop().browse(new java.net.URI("http://supuh.wikia.com/wiki/BHT"));
Run Code Online (Sandbox Code Playgroud)
问题是,无论程序运行的环境如何,我总是会收到以下错误:
java.security.AccessControlException: access denied (java.awt.AWTPermission showWindowWithoutWarningBanner)
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?请注意,这仅适用于一个程序.我制作的任何其他程序都可以使用相同的方法,没有问题.
在我的程序开始时,添加了这个钩子.没有它,程序运行良好......
System.setSecurityManager(new SecurityManager()
{
@Override
public void checkExit(int status)
{
closeFile(status);
}
});
Run Code Online (Sandbox Code Playgroud)
需要这个钩子,但是这个browse(URI uri)方法不适用于它.解决方案?
我正在寻找带有Java API的嵌入式数据库用于测试目的.我还需要pl/sql支持,因为我们在生产中使用oracle,迁移是用pl/sql编写的.
我想测试我的DAO对象,我需要在使用迁移脚本进行单元测试的过程中在内存中创建db.
现在我们使用HSQLDB,但它不支持pl/sql.
你能推荐一下吗?
我正在使用Spring 3 MVC,我在注入Objects时遇到了问题.我创建了控制器对象@Controller.我用@ServiceObject 创建了一个服务对象.我用AutoWire在服务器中注入了服务对象.我创建了DAO对象,并注入了服务对象,并测试了应用程序,它运行正常.然后我戴上@Transactional了DAO,然后它也运行良好.但是,当我把@Transactional服务对象,它给我的问题.在部署时,在控制器上它称为"
上下文初始化失败:org.springframework.beans.factory.BeanCreationException:创建名为'loginController'的bean时出错:注入自动连接的依赖项失败; 嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配方法:public void com.erudicus.controller.LoginController.setLoginService(com.erudicus.model.service.LoginServiceImpl); 嵌套异常是java.lang.IllegalArgumentException:参数类型不匹配".
这是代码控制器
@Controller
public class LoginController {
private static Logger LOG = Logger.getLogger(LoginController.class);
private LoginServiceImpl loginService = null;
public LoginServiceImpl getLoginService() {
return loginService;
}
@Autowired
public void setLoginService(LoginServiceImpl loginService) {
this.loginService = loginService;
}
@RequestMapping(value="/login" , method= RequestMethod.GET)
public String login(Model model) {
model.addAttribute(new Login());
return "login";
}
@RequestMapping(value="/loginDetails", method=RequestMethod.POST)
public ModelAndView create(@Valid Login login, BindingResult result) {
}
}
Run Code Online (Sandbox Code Playgroud)
服务对象
@Service
public …Run Code Online (Sandbox Code Playgroud) 构建的一个选项是在构建时打包特定于环境的属性(例如,使用maven配置文件)
另一个选择是设置-Denv=production您的生产环境,并在启动时加载/${env}/config.properties.(春天允许这样,但它可以手动完成)
我用过这两个.前者意味着没有额外的环境配置.后者允许在多个环境中使用相同的构建.
问题:任何其他重要的利弊,或几乎相同的方法将被选择?
这是我无法理解的.
在java.lang.Object所述clone()与定义protected改性剂.根据定义,它可以通过名称在其自己的类定义中访问,通过名称在从它派生的任何类中,并通过名称在同一个包中的任何类的定义中.
这里的Sample类在另一个包中,显然它无法clone()从Object类中访问.但是,由于Sample隐含地来源Object,为什么它无法访问它?该定义并未说明它必须满足两个条件(在同一个包内并且也是一个子类).
public class Sample {
public Object foo() throws CloneNotSupportedException {
...
return someObject.clone();
}
}
Run Code Online (Sandbox Code Playgroud) 我对 JPA 还很陌生,正在尝试进行基本的实体设置。
我知道表属性映射到 java 类型,例如映射到字符串的 varchar。
在我的表中,我有一个列代码,它是一个char(2), 并存储一个两个字母的代码。
我将如何在实体中使用它?我尝试使用字符串,但似乎这不是要使用的正确映射。
我知道这是一个很长的问题,但我想问一切,因为我已经坚持这些东西超过2周,而且我在这个星期内解决这个问题.请指导我这件事.
我正在使用EclipseLink jpa版本2,Spring 3,jdk6,MySQL5和tomcat7.
我在每个DAO类中都配置了以下内容.
@PersistenceContext
private EntityManager em;
Run Code Online (Sandbox Code Playgroud)
我在Spring xml中有以下内容:
<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource">
<property name="url" value="jdbc:mysql://localhost:3306/xxxxx"/>
<property name="username" value="xxxx"/>
<property name="password" value="xxxx"/>
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
</bean>
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
<property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter" ref="jpaVendorAdapter"/>
<property name="jpaDialect" ref="jpaDialect"/>
</bean>
<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
<property name="jpaDialect" ref="jpaDialect"/>
</bean>
<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter" >
<property name="showSql" value="true"/>
<property name="generateDdl" value="true" />
</bean>
<bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.EclipseLinkJpaDialect"/>
Run Code Online (Sandbox Code Playgroud)
来自Persistence.xml:
<persistence-unit name="xxxxx" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<-- class mappings -->
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)
我对自己的所作所为感到困惑:
是EntityManager春天注射的吗?(我知道这 …
我试图在一个非常简单的Hibernate示例中填充一些实体对象.我的数据库由两个表组成,"部门"(Id,Name)和"Employees"(Id,DepartmentsId,FirstName,LastName).我的SQL查询只是Employees与Departments的左连接.
我已经设置了Hibernate文档中指定的注释,但每当我尝试序列化实体时,Hibernate进入无限循环并最终抛出StackOverFlowError异常.回答我的另一个问题的人能够确定堆栈溢出正在发生,因为"Department"对象包含一组"Employee"对象,每个对象都包含一个"Department"对象,其中包含一组Employee对象等.等等
根据上面链接的文档,这种类型的双向关系应该是合法的(Department中的"mappedBy"参数应该用来表示Hibernate;我也尝试使用在下面的代码中注释掉的"joinColumn"注释)我读过的其他内容表明Hibernate 应该足够聪明,不要在这种情况下进入无限循环,但它不适用于我的例子.如果我通过从Employee类中删除Department对象将双向关系更改为单向关系,一切正常,但显然这会导致丢失大量功能.
我还尝试了旧的xml映射文件的注释,并为子表设置了"inverse"参数,但它仍然会产生同样的问题.我怎样才能使这种双向关系按照预期的方式运行?
部门:
package com.test.model;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.JoinTable;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.JoinColumn;
import org.hibernate.Hibernate;
import org.hibernate.proxy.HibernateProxy;
@Entity
@Table(name="Departments"
,catalog="test"
)
public class Department implements java.io.Serializable {
private Integer id;
private String name;
public Set<Employee> employees = new HashSet<Employee>(0);
public Department() {
}
public Department(String name) {
this.name = name;
}
public Department(String name, Set employees) { …Run Code Online (Sandbox Code Playgroud)