我有一些Spring托管类(通过xml配置),其中一个是SessionFactory,它被注入到另一个Spring托管类中。每当该类需要一个新的会话时,它就调用SessionFactory上的createSession。
public class SessionFactory {
public final Session createSession(String username){
Session session = new SessionImpl(username);
return session;
}
}
public class SessionImpl implements Session{
private String username;
@Override
@Transactional
public void doSomething(){
// Does something
}
public void setUsername(String username){
this.username = username;
}
public String getUsername(){
return username;
}
}
public class Service {
private SessionFactory sessionFactory; // Set by Spring through xml config
public void doSomethingServicy(){
}
public void setSessionFactory(SessionFactory sessionFactory){
this.sessionFactory = sessionFactory;
}
}
我认为@Transactional注释放在了错误的地方。
不是会话应该是事务性的;它应该应用于实现用例的基于接口的服务方法。那是典型的Spring成语。我建议遵循它。
我使用方法遇到了麻烦,无论我用什么方法尝试,我都得到了: null 我的代码:
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd“> 但面对这个例外: 任何帮助都将不胜感激...
问题内容: 如果我正在编写用于创建对象的静态工厂方法,那么如何为该工厂类使用’@Component’批注并指示(带有一些批注)创建该类bean所应使用的静态工厂方法?以下是我的意思的伪代码: 问题答案: 恐怕您目前无法执行此操作。但是,使用Java配置非常简单: 在这种情况下,不需要任何Spring注释。当然,您可以改用优质的XML。
问题内容: 我正在学习“ 有效的Java” ,书中并未建议我认为一些标准的东西,例如对象的创建,我的印象是构造函数是最好的方法,书中说我们应该利用在静态工厂方法中,我不能说出一些优点,而在缺点中却有缺点,所以我在问这个问题,这是使用它的好处。 优点: 静态工厂方法的一个优点是,与构造函数不同,它们具有名称。 静态工厂方法的第二个优点是,与构造函数不同,不需要每次调用它们时都创建一个新对象。 静态工
我是Spring Boot的新手,我想用Spring Boot制作一个rest Web服务。我需要使用Jpa/Hibernate在数据库中保存一些数据。当我用@Entity注释我的域模型类,并将应用程序作为Spring boot应用程序启动时(顺便说一下,我的应用程序类有一个@EntityScan()注释)我得到以下错误: 在类路径资源 [组织/Spring框架/启动/自动配置/orm/jpa/H
我在Spring对bean实例化有疑问。 根据Spring参考文档,在“实例化bean”一节中提到 “容器本身通过反射式调用它的构造函数直接创建bean,有点等同于使用新运算符Java代码”。 这意味着Spring容器使用反射来创建bean。然而,在少数情况下,容器还对类使用静态工厂方法来创建bean。我所知道的容器使用静态工厂方法的唯一情况是“当构造函数是私有的”。 所以我的疑问是,既然容器使用