Spring配置_总结

1、xml

一、< bean>创建对象

  <bean> 标签:
  		属性:id指定放入容器中的名字
  				class: 指定类
  				id+class -->默认构造函数
  				class+ factory-method --> 该类的静态方法,创建bean
  				factory-bean +factory-method -->调用容器类的方法
  				scope 指定作用范围
  				init-method  指定类中初始化方法
  				destroy-method   指定类中,对象销毁时,执行的方法

二、 bean的依赖注入,bean 的子标签

  1、<constructor-arg>标签: 使用有参构造函数,用该标签指定每一个值
  		属性:
  			type: 指定传入参数类型
  			index:指定第几个参数
  			name: 指定参数的名称(前三个属性,都是定位参数的,一般只用name)
  			value:指定值
  			ref:   指定容器中的类,为该值
  

  2、<property>标签:指定使用set方法赋值
  		属性:
  			name属性:指定使用的set方法(除set后面的内容,且第一个字母小写)
  			value属性:指定值
  			ref属性	:指定容器中的类,为该值


  3、注入集合的标签:
  		用于给List注入的:<list>    <set>   <array>   
  		用于给map注入的: <map>     <props>

  	这些标签,写在<constructor-arg>或者<property>下面(给其指定的属性赋值)
  		(1)在<list> <array> <set>,直接写多个<value>,value标签内部写值
  		 (2)在 <map> 使用 
  					<entry key="map的键" value="map的值"/> 
  			     或 <entry key="map的键">
  							<value>map的值</value>
  					 </entry>

  		 (3)在 <props> 标签中,使用 <prop key="键">值</prop>

三、扫描包、各种支持

  	当使用注解的方式注入bean,指定扫描的包位置
  	<context:component-scan base-package="要扫描的包位置" />
  	
  	开启spring对注解aop支持
  	<aop:aspectj-autoproxy/>

  	开启注解支持事务-
  	 <tx:annotation-driven transaction-manager="容器中配置的事务管理器"/>
  	
  	引入外部property配置文件
  	 <context:property-placeholder location="classpath:配置文件"/>

四、AOP相关配置

1、 <aop:config>为aop配置的总标签,下面可以配置:
  		 多个<aop:aspect/>、<aop:advisor/>、<aop:pointcut/>

2、<aop:aspect/>切面标签:
		该标签指定切面类,并指定哪些方法配置到什么类上
		属性:
			id:切面的唯一标识
			red:指定容器中的切面类
 
 3、五种常用的通知标签:
 	   <aop:before />、<aop:after-returning/>、
 	   <aop:after-throwing />、<aop:after/>
 	   <aop:around />
  这些标签在<aop:aspect/>切面标签内部
  指定该切面类中的什么方式为什么通知,并指定通知谁
  		属性: 
  			method:  指定前面类的方法
  			pointcut:指定切入点表达式,对哪个方法增强
  			pointcut-ref:指定<aop:pointcut/>标签配置切入点

五、声明式事务

  1、配置事务管理器的Bean对象,并且注入数据源

     <bean id="名称"class="事务管理器">
        <!--注入数据源-->
        <property name="dataSource" ref="dataSource"/>
     </bean> 
  	(事务管理器spring提供了3中,DataSourceTransactionManager常用)

  2、配置 事务通知 并且 配置事务的属性
    使用 <tx:advice id="事务通知ID" transaction-manager="事务管理器"/> 标签
     (1)属性:
             id属性: 事务通知的唯一标标志
             transaction-manager属性: 指定容器中的事务管理器
     (2)在该标签的内部配置事务的属性
            <tx:advice id="txAdvice" transaction-manager="transactionManager">
                 <!-- 配置事务的属性 -->
                 <tx:attributes>
                      <!--配置属性 -->
                      <!-- 当使用aop指定要使用事务的方法时-->
                      <!--会在下面几个标签中那个name符合这个方法-->
                      <!-- name指定增删改等等方法,可以使用*当通配符-->
                       <tx:method name="配置的方法名1" isolation="值" propagation="值"/>
                       <tx:method name="配置的方法名2" isolation="值" propagation="值"/>
                 </tx:attributes>
             </tx:advice>

     (3)事务都有什么可以属性??(tx:method标签属性)
          name属性: 属性作用到什么的方法名上(  * 表示全部      find* 查询方法上面(通配分隔))
          isolation属性: 用于指定事务的隔离级别,默认值为DEFAULT(使用数据库的隔离级别),查询方法可以选择SUPPORTS
          propagation属性: 用于指定事务的传播行为,默认值为REQUIRED(一定会有事务)
          read-only属性:用于指定事务是否只读,只有查询方法才能设置为true,默认值是false
          timeout属性:用于指定事务的超时时间,默认值为-1(表示永比超时)(以秒为单位)
          rollback-for属性: 用于指定一个异常,当产生该异常时,事务回滚,产生其他异常时,事务不回滚。没有默认值,表示任何异常都回滚
          no-rollback-for属性: 用于指定一个异常,当产生该异常时,事务不回滚,产生其他异常时,事务回滚。没有默认值,表示任何异常都回滚

  3、配置AOP中的切入点表达式 		把 事务通知(切面) 配置到相应的切点上
		 <!--配置切入点表达式-->
  		 <aop:config>
      		  <!--切入点表达式-->
        	  <aop:pointcut id="pt1" expression="execution(* com.zy.serivce.impl.*.*(..))"/>
       		  <!--配置切点与事务通知(相当于一个切面)的关系-->
      		  <aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"/>
    	 </aop:config>

2、注解

一、自己创建的Bean类

  1、@Component  在Bean类上,把该类放入容器
  			@Controller表现层  
  			@Service业务层  
  			@Repository持久层

  2、@Autowired给属性自动注入容器中的bean(会根据类型和属性名查找)
  		required属性默认为true不允许为空、为false时允许为空

  3、@Autowired + @Qualifier指定id的bean进行注入

  4、@Resourec =@Autowired + @Qualifier
   
  5、@Value(${表达式})注入基本类型数据 
  
  6、@Scope指定bean的作用范围,写在类上

  7、@PreDestroy指定销毁方法,写在方法上
  	
  8、@PostConstruct指定初始化方法,写在方法上

二、主配置文件

  1、@Configuration声明为配置文件(可以不写,直接加载),类上

  2、@ComponentScan创建容器时要扫描的包,类上

  3、@ComponentScans扫描包的集合(就是 @ComponentScan的一个集合)

  4、@Bean 配置类方法上,把该方法返回的对象,注入容器

  5、@Scope方法上,指定bean的作用范围

  6、@PropertySource把.property配置文件读入,可使用 @Value(${})取值

  7、@Import引入子配置类

  8、@Qualifier另一种用法:放在主配置类构造bean的方法的形参上,会自动注入容器中的值

  9、@EnableAspectJAutoProxy 指明配置类开启支持AOP注解配置

  10、@EnableTransactionManagement 开启事务注解的支持

三、junit整合

  	在测试类中:
  		@RunWith(SpringJUnit4ClassRunner.class)测试类上
  		@ContextConfiguration(classes = SpringConfiguration.class)测试类上,指定主配置文件
  					classes指定配置类
  					locations指定配置文件
    在属性上:
  		@Autowired
  		@Qulifier
  		@Resourec
  		@Test
  		.......

四、AOP相关注解

  1、@Aspect  表示当前类是一个切面类(别忘了把切面类放入容器)

  2、@Before 前置  @AfterReturning 后置  @AfterThrowing 异常  @After 最终  @Around 环绕
  		配置在相应方法上

  3、@Pointcut 切入点表达式,配置方法上,当调用该方法使用该表达式

  4、@EnableAspectJAutoProxy 纯注解配置时候,指明配置类开启支持AOP注解配置

五、声明式事务:

  1、需要添加事务的方法和类上使用@Transactional,使用该注解属性设置事务各种属性

  2、别忘记把事务管理器放入容器

  3、@ EnableTransactionManagement 开启注解的支持,在主配置类上添加

3、JdbcTemplate

  1、创建对象:
  			new JdbcTemplate(传入一个DataSource);

  2、查询:
  		jdbcTemplate.query( "sql语句 " , 要封装到哪一个类中 , sql语句的注入(args...));
  		对于传入的类型:
  				方法一:实现一个RowMapper接口,实现里面的mapRow方法
  				方法二:使用spring框架给我们设置好的 BeanPropertyRowMapper类
  3、增删改:
  		jdbcTemplate.update("sql语句");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小镇男孩~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值