spring boot基础知识和ssm搭建

spring aop 通过切点指定在哪些类哪些方法进行织入横切逻辑,通过增强描述横切逻辑的具体实现,通过切面把切点和增强
链接到一起
spring aop 默认用的事jdk 动态代理,如果代理类没有实现接口,则用cglib,如果代理类实现接口则用的事jdk动态代理
cglib 采用asm 技术操作字节码 使用cglib 需要注意的是代理的方法不能加上final 修饰,jdk动态代理 需要把java 编译成 class 文件然后再操作字节码


aop 应用场景 spring 事物的管理
项目中的应用,比如日志表。用来显示流程图的流转
在spring xml 中  添加 aop 的标签  
<!-- 定义aspectj -->
    <aop:aspectj-autoproxy proxy-target-class="true" />
定义一个类,这个类必须定义到spring 能扫描的包下面
在类上加上注解
@Aspect 
定义一个方法 加上切点的注解 @Pointcut("execution(* com.techstar.service.OrderService.update*(..))")  

定一个方法 加上增强的注解 
@AfterReturning(value="updateServiceCall()", argNames="rtv", returning="rtv") 
在方法中进行具体的代码实现

spring ioc 话术 
bean 的创建和维护交给spring ioc 来管理,底层用的是反射机制,项目在启动的时候spring 扫描 bean 所在的包,采用反射机制class.forname().newInstence();实例化对象
存储到内部的concurrenthashmap 中。获取对象从concurrenthashmap 获取,依赖注入有三种方式  接口注入、构造器注入、属性注入

 

 

ssm 搭建话术
首先把spring、mybatis、数据库连接池、mysql驱动等jar 配置到pom文件中,然后在web.xml 配置contextConfigLocation 扫描spring的配置文件,
配置 ContextLoaderListener 监听,配置 DispatcherServlet

其次配置spring mvc文件 <context:component-scan> 扫描controller,配置JSP文件的位置,配置图片上传CommonsMultipartResolver
最后配置spring 文件 扫描service 路径,配置数据源,配置 SqlSessionFactoryBean,扫描mybatis配置文件,配置 MapperScannerConfigurer 扫描 dao
配置事务
<bean id="transactionMybatisManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <aop:config>
        <aop:advisor pointcut="execution(* com.hy.gcar.service..*(..))" advice-ref="txAdvice" />
    </aop:config>

    <tx:advice id="txAdvice" transaction-manager="transactionMybatisManager">
        <tx:attributes>
            <tx:method name="get*" read-only="true" />
            <tx:method name="query*" read-only="true" />
            <tx:method name="find*" read-only="true" />
            <tx:method name="load*" read-only="true" />
            <tx:method name="select*" read-only="true" />
            <tx:method name="*" propagation="REQUIRED" rollback-for="Exception" />
        </tx:attributes>
    </tx:advice>
    
BeanFactory和ApplicationContext有什么区别?
BeanFactory 可以理解为含有bean集合的工厂类。BeanFactory 包含了种bean的定义,以便在接收到客户端请求时将对应的bean实例化。

BeanFactory还能在实例化对象的时生成协作类之间的关系。此举将bean自身与bean客户端的配置中解放出来。BeanFactory还包含了bean生命周期的控制,调用客户端的初始化方法(initialization methods)和销毁方法(destruction methods)。

从表面上看,application context如同bean factory一样具有bean定义、bean关联关系的设置,根据请求分发bean的功能。但application context在此基础上还提供了其他的功能。

提供了支持国际化的文本消息
统一的资源文件读取方式
已在监听器中注册的bean的事件
以下是三种较常见的 ApplicationContext 实现方式:

1、ClassPathXmlApplicationContext:从classpath的XML配置文件中读取上下文,并生成上下文定义。应用程序上下文从程序环境变量中取得。
1
ApplicationContext context = new ClassPathXmlApplicationContext(“bean.xml”);
2、FileSystemXmlApplicationContext :由文件系统中的XML配置文件读取上下文。
1
ApplicationContext context = new FileSystemXmlApplicationContext(“bean.xml”);
3、XmlWebApplicationContext:由Web应用的XML文件读取上下文。

 

 

请解释Spring Bean的生命周期?
Bean的建立, 由BeanFactory读取Bean定义文件,并生成各个实例;
Setter注入,执行Bean的属性依赖注入;
BeanNameAware的setBeanName(), 如果实现该接口,则执行其setBeanName方法;
BeanFactoryAware的setBeanFactory(),如果实现该接口,则执行其setBeanFactory方法;
BeanPostProcessor的processBeforeInitialization(),如果有关联的processor,则在Bean初始化之前都会执行这个实例的processBeforeInitialization()方法;
InitializingBean的afterPropertiesSet(),如果实现了该接口,则执行其afterPropertiesSet()方法;
Bean定义文件中定义init-method;
BeanPostProcessors的processAfterInitialization(),如果有关联的processor,则在Bean初始化之前都会执行这个实例的processAfterInitialization()方法;
DisposableBean的destroy(),在容器关闭时,如果Bean类实现了该接口,则执行它的destroy()方法;
Bean定义文件中定义destroy-method,在容器关闭时,可以在Bean定义文件中使用“destory-method”定义的方法;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值