Spring-freamwork知识梳理

1.IOC,控制反转

本质上提供一个类的全限类名,由Spring通过反射创建对象
Spring-bean,调用的是本身的空参构造器
bean标签的相关使用,属性有id,class,name,scope
1.1 DI,依赖注入
set方法注入
property标签
构造器方法注入
constructor-arg标签
根据参数名字
根据参数位置,索引
根据参数类型,类型相同的按照顺序注入
命名空间注入:实际就是Set方法和构造器方法的简写,需要引用命名空间
p:
c:
工厂方法是注入:核心是工厂的产品,而不是本身的工厂对象
静态工厂:
工厂类中有一个静态方法返回产品对象,获得产品对象时不需要工厂对象。只需要配置factory-method
实例工厂:
工厂类中有一个实例对象返回产品对象,获得产品对象时需要工厂对象,所以配置的时候要先配置工厂bean在配置产品bean,提供factory-method

集合属性的注入
array
list
set
map
properties
tips:在spring的配置文件xml中,引用值用value,引用bean对象用rtef标签或者属性

2.AOP,面向切面编程

2.1代理模式
目标对象负责执行核心功能(target)
代理对象负责对原有的目标对象的核心功能进行补充和增强(proxy)
静态代理:在程序编译之前写好对应的目标类的代理类,产生代理对象
动态代理:程序运行阶段,利用字节码技术动态产生代理类对象。
JDK动态代理:proxy的newInstance,三个参数分别为目标类的类加载器,目标类的接口和匿名内部类实现的InvocationHandler(主要使用于用接口实现的目标类)
CGILI动态代理:Enhancer,代理类主要产生于目标类的子类对象,直接使用子类中重写并增强的方法

2.2Spring的aop就实现了动态代理
切面:公共的代码块
连接点:需要放入的方法
切入点:一组连接点的结合
织入;将切面放入的过程
通知:前置,后置,环绕,异常,最终

2.3aop的配置
xml配置
引入aop的命名空间和xsd
配置切面类的bean
aop:aspect
aop:config
aop:pointcut
aop:advice
aop:before
aop:after-ruturning
aop:after
aop:thorwable
aop:around
注解配置
@Aspect
@Component
@pointcut
@before()

2.4aop对于事务的配置
事务的属性
传播行为
隔离级别
是否可读
超时时间
回滚规则
xml配置
引入spring-tx的命名空间和xsd
tx:transaction-manager
tx:advisor
一般配置完事务管理器后,需要织入到指定方法,和aop连用
注解配置
在service层上添加@Transactional

3.sprig和jdbc的结合使用(java项目)

jdbcTemplate
核心思路
配置数据源的bean
配置jdbctemplate的bean
配置事务管理器的bean

4spring和mybatis的结合使用(java项目)

SqlSessionFactoryBean的配置
核心思路
配置数据源的bean
配置SqlSessionFactory的bean
配置事务管理器的bean

// 配置datasource
	@Bean
	public DataSource dataSource() {
		DruidAbstractDataSource dataSource = new DruidDataSource();
		dataSource.setDriverClassName(driverName);
		dataSource.setUrl(url);
		dataSource.setUsername(username);
		dataSource.setPassword(password);
		dataSource.setInitialSize(Integer.parseInt(initialSize));
		dataSource.setMaxActive(Integer.parseInt(maxActive));
		
		return dataSource;
	}
	// 配置sqlsessionfactorybean
	@Bean
	public SqlSessionFactoryBean sqlSessionFactoryBean(){
		// 定义一个资源解析器,主要为了解析xml文件
		ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
		
		SqlSessionFactoryBean s = new SqlSessionFactoryBean();
		s.setDataSource(dataSource());
		s.setTypeAliasesPackage("com.briup.myabtisAnnotation.bean");
		try {
			s.setMapperLocations(resolver.getResources("classpath:com/briup/myabtisAnnotation/mapper/*Mapper.xml"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return s;
	}
	
	// 配置platformtransactionmanager
	@Bean
	public PlatformTransactionManager transactionManager() {
		DataSourceTransactionManager tx = 
				new DataSourceTransactionManager();
		// 把数据源注入到事务管理器里
		tx.setDataSource(dataSource());
		return tx;
	}

5.spring和web(servlet)的结合使用(web项目)

架构 spring+mybatis+servlet
核心配置思路,spring和mybatis的配置和上面一样
主要注意web.xml的配置,需要在web.xml中声明一个监听器,用来加载文件和配置类,第二个注意的点,要从spring容器中取出servlet对象
webApplicationContext
xml配置
注解配置

6.三层架构中的配置

bean包下的注解@Data
dao包下的注解,如果使用的是mybatis,dao包是由框架管理的不需要添加任何注解,如果不使用mybatis需要在dao层实现类上添加@Repository
service包下的注解,要在impl的类上添加@Service,同时在类的内部,@Autowired dao层对象
web包下的注解,servlet一般没有,如果使用的是mvc@Controller,在类的内部添加@Autowired service对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值