`

spring 自动装配、注解

阅读更多

一、spring配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"
	default-lazy-init="true">
	<description>Spring公共配置文件</description>
	
	<!-- 属性文件读入 -->
	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath*:config/jdbc.properties</value>
			</list>
		</property>
	</bean>

	<!-- 使用annotation 自动注册bean,并检查@Required,@Autowired的属性已被注入 -->
	<context:component-scan base-package="com.xinghuo.zfsjgx" />


	<!-- 使用annotation定义事务 -->
	<!-- 支持 @Transactional 标记 Enable @Transactional support -->
	<tx:annotation-driven transaction-manager="transactionManager" />

	<!-- Hibernate配置 -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
		<property name="namingStrategy">
			<bean class="org.hibernate.cfg.ImprovedNamingStrategy" />
		</property>
		
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">${hibernate.dialect}</prop>
				<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
				<!---->
				<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
				<prop key="hibernate.use_sql_comments">${hibernate.use_sql_comments}</prop>
				<prop key="hibernate.generate_statistics">${hibernate.generate_statistics}</prop>
				<!-- -->
				<prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
				<prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
				<prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
				<prop key="hibernate.cache.provider_configuration_file_resource_path">/ehcache-hibernate.xml</prop>
			</props>
		</property>
		<!-- -->
		<property name="eventListeners">
      	<map>
      		<entry key="save-update" value-ref="saveUpdateEventListener" />     		
      	</map>
    	</property>
    	
		<!--  
			<entry key="pre-insert" value-ref="vipEntityPrePersistListener" />
      		<entry key="pre-update" value-ref="vipEntityPreUpdateListener" />
		<property name="annotatedClasses">
			<list>
				<value>com.xinghuo.examples.miniweb.entity.user.User</value>
				<value>com.xinghuo.examples.miniweb.entity.user.Role</value>
				<value>com.xinghuo.examples.miniweb.entity.user.Authority</value>
			</list>
		</property>
		-->
	</bean>
	 
	<bean id="saveUpdateEventListener" class="com.xinghuo.zfsjgx.dao.VipEntityListener" ></bean>
	<!-- 事务配置 -->
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>
</beans>

 

二、manager

package com.xinghuo.zfsjgx.service.sys;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.xinghuo.zfsjgx.dao.sys.SzPcsDAO;
import com.xinghuo.zfsjgx.entity.sys.SzPcs;

/**
* SzPcsManager.java 
* 用@Transactional注明类里的每个方法都用事务的,对只读方法注明readOnly=true加强性能.
* AutoGenerated by XMP 1.2
* 2013-8-13 14:14:48
* @author 
* @see SzPcsDAO
* 
*/
 
@Service
@Transactional
public class SzPcsManager {
	/** TODO  如果是另外一种方式,请用DAO ,用此方式去在spring的配置文件中设置
	private SimpleHibernateTemplate<SzPcs, String> szPcsDAO;

	@Autowired
	public void setSessionFactory(SessionFactory sessionFactory) {
		szPcsDAO = new SimpleHibernateTemplate<SzPcs, String>(sessionFactory, SzPcs.class);
	}
	*/
	
	
	private SzPcsDAO szPcsDAO;

	@Autowired
	public void setSzPcsDAO(SzPcsDAO szPcsDAO) {
		this.szPcsDAO = szPcsDAO;
	}	
	
	
	
	//SzPcsDAO
	
	@Transactional(readOnly = true)
	public SzPcs getSzPcs(String id) {
			return szPcsDAO.get(id);
	}
	
	@Transactional(readOnly = true)
	public List<SzPcs> getAllSzPcss() {
		return szPcsDAO.findAll();
	}
	
	
	public void deleteSzPcs(String id) {
		SzPcs szPcs =  szPcsDAO.get(id);
		 szPcsDAO.delete(szPcs);
	}

	public void deleteSzPcs(SzPcs szPcs) {
		szPcsDAO.delete(szPcs);
	}
	
	public void saveSzPcs(SzPcs szPcs) {
		szPcsDAO.save(szPcs);
	}
	
	public List<SzPcs> getSzPcsList(){
		return szPcsDAO.getSzPcsList();
	}
}

 

三、bean

package com.xinghuo.zfsjgx.entity.sys;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

import com.xinghuo.zfsjgx.entity.VipEntity;

/**
 * SysUser entity.
 */
@SuppressWarnings("serial")
@Entity
@Table(name = "SYS_USER", uniqueConstraints = {})
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class SysUser extends VipEntity implements java.io.Serializable {

	// Fields

	private String userId;

	private String userPassword;

	private SysPerson sysPerson;


	// Constructors

	/** default constructor */
	public SysUser() {
	}

	/** minimal constructor */
	public SysUser(String userId) {
		this.userId = userId;
	}

	// Property accessors
	@Id
//	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seqSysUser")
//	@SequenceGenerator(name = "seqSysUser", sequenceName = "SEQ_SYS_USER", allocationSize = 1)
	@Column(name = "USER_ID", unique = true, nullable = false, insertable = true, updatable = true, length = 20)
	public String getUserId() {
		return this.userId;
	}

	public void setUserId(String userId) {
		this.userId = userId;
	}

	@Column(name = "USER_PASSWORD", unique = false, nullable = true, insertable = true, updatable = true, length = 20)
	public String getUserPassword() {
		return this.userPassword;
	}

	public void setUserPassword(String userPassword) {
		this.userPassword = userPassword;
	}
	
	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "PERSON_ID", unique = false, nullable = true, insertable = true, updatable = true)
	public SysPerson getSysPerson() {
		return sysPerson;
	}

	public void setSysPerson(SysPerson sysPerson) {
		this.sysPerson = sysPerson;
	}
}

 

 

分享到:
评论

相关推荐

    Spring 自动装配及其注解

    5. **注解自动装配**(Annotation-based Autowiring):这是最常用的方式,使用`@Autowired`、`@Qualifier`等注解进行精确控制。 三、注解驱动的自动装配 1. **@Autowired**:这是最常用的注解,用于自动装配bean。...

    Java注解机制之Spring自动装配实现原理详解

    Java注解机制之Spring自动装配...Java注解机制之Spring自动装配实现原理详解是指Spring框架中使用Java注解机制来实现自动装配功能的机制,该机制可以根据注解信息来自动将Bean对象关联起来,从而实现了自动装配功能。

    Spring实现自动装配

    1. **无注解自动装配(No Annotation Auto-Wiring)**:在XML配置文件中,通过`&lt;context:component-scan&gt;`元素扫描指定包下所有的类,将它们声明为bean,并尝试自动装配。这种方式默认是按类型匹配,如果存在多个...

    Spring自动装配解析

    Spring 2.5引入了基于注解的配置,可以使用`@Autowired`注解在字段、setter方法或构造函数上,声明需要自动装配的依赖。此外,还可以结合`@Qualifier`注解来指定具体的bean实例,避免类型匹配的冲突。 5. 自动装配...

    Spring demo 自动检测注解

    首先,`@Autowired`是Spring框架提供的一种依赖注入(DI,Dependency Injection)方式,用于自动装配bean的依赖。当我们在类的属性或方法上使用这个注解时,Spring会自动寻找匹配类型的bean并将其注入。这种方式比传统...

    基于TestNG+Mockito及自动装配注解的Spring MVC集成测试

    本篇文章将深入探讨如何结合TestNG、Mockito以及Spring的自动装配注解进行有效的集成测试。以下是对这些技术的详细说明: TestNG是一个功能强大的测试框架,它是JUnit的替代品,提供了更丰富的功能,如并行测试执行...

    spring自动装配项目struts2

    Spring提供了多种自动装配方式,如byType、byName等,可以根据配置或注解来实现。在项目中,通过配置Spring的bean定义,或者使用@Autowired注解,我们可以让Spring自动为我们的bean注入所需的依赖,简化了代码并增强...

    4Spring自动装配——annotation resource方式

    `@Autowired`是Spring中最常见的注解,用于自动装配匹配类型的Bean。然而,`@Resource`注解则提供了另一种自动装配方式,尤其是在处理Java EE规范中的资源时,如JNDI查找。 ### 二、`@Resource`注解 `@Resource`...

    spring注解 -----最简单的注解与自动装配例子

    本篇文章将深入探讨Spring中的注解,以及如何通过注解进行自动装配。 首先,我们要了解Spring的核心注解,包括@Component、@Service、@Repository和@Controller。这些注解被用来标记不同层次的Java类,方便Spring...

    Spring中的自动装配有哪些限制?.docx

    Spring会优先使用带有@Autowired注解的构造函数或setter方法,这意味着如果这些方法存在,自动装配的配置将不起作用。因此,如果你希望使用自动装配,应避免在bean定义中同时使用这两种注入方式。 2. **基本数据...

    Spring@Autowired注解与自动装配.rar

    - **自动装配候选列表**:可以使用`@Autowired`注解的`@Qualifier`注解的`value`属性,提供一个bean的名称列表,Spring会尝试从列表中找到匹配的bean。 ### 4. 配置控制 - **@Autowired注解的可选性**:使用`...

    Spring自动装配与扫描注解代码详解

    Spring自动装配与扫描注解代码详解 Spring自动装配是指Spring框架中的一种机制,用于自动装配 Bean 之间的依赖关系,而无需手动编写大量的XML配置文件。这种机制可以大大简化Spring应用程序的配置和维护工作。 在...

    模拟Spring的IoC容器实现注解自动装配

    而注解自动装配(Autowired)是Spring IoC容器的一种高级特性,它允许我们通过注解来声明对象之间的依赖,无需手动编写XML配置。现在,我们将深入探讨如何模拟Spring的IoC容器实现注解自动装配。 首先,我们需要...

    SPRINGMVC 注解范例程序

    8. **@Autowired**:Spring 自动装配注解,用于注入依赖。Spring 会自动寻找类型匹配的bean并注入,可以用于字段、构造函数、setter 方法等。 9. **@Service** 和 **@Repository**:这两个注解常用于业务层和服务层...

    spring的Annotation注解.

    `@Autowired`是Spring中最常用的注解之一,用于自动装配Bean。它默认按照类型进行匹配,即`byType`,这意味着Spring会寻找与注解类型相匹配的唯一Bean,并将其注入。如果存在多个相同类型的Bean,则可以通过`@...

    AOP中的注解自动装配通知

    总之,AOP中的注解自动装配通知是Spring框架中的重要特性,它通过注解简化了Bean的装配过程,同时也使得AOP的切面更容易实现和理解。在实际开发中,熟练掌握这些知识能帮助我们编写出更加优雅、高效的代码。

    day38 16-Spring的Bean的装配:注解的方式

    2. `@Autowired`: Spring自动装配的主要注解,用于注入Bean的依赖。当Spring容器找不到精确匹配的类型时,可以通过类型或属性名进行自动匹配。 3. `@Qualifier`: 当有多个相同类型的Bean时,`@Qualifier`可以用来...

    spring3注解详细

    @Autowired 是 Spring 提供的一种自动装配机制,它可以根据类型自动寻找并注入相应的 Bean。不推荐直接使用,因为它的行为可能不如 @Resource 明确。在使用 @Autowired 时,需要在配置文件中添加 `&lt;bean class="org....

    Spring Boot 常用注解.rar

    自动装配注解,Spring会根据类型自动将Bean注入到需要的地方,可以用于字段、构造器、方法参数。 9. **@Value** 用于注入配置文件中的属性值,可以注入基本类型或者SpEL表达式。 10. **@Conditional** 这个注解...

Global site tag (gtag.js) - Google Analytics