![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring框架
程序彤
无废话,纯干货。
展开
-
基于XML配置声明式事务
基于XML配置声明式事务<?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:context="http://www.springframework.org/schema/context" xmlns:原创 2020-12-13 09:42:51 · 104 阅读 · 0 评论 -
基于xml配置AOP
<?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:context="http://www.springframework.org/schema/context" xmlns:aop="h原创 2020-12-13 09:36:28 · 72 阅读 · 0 评论 -
基于xml的自动装配赋值@Autowired
基于xml的自动装配赋值private List<Book> books; // 一个人拥有多本书public Person(Car car){ this.car = car; System.out.println("可以为car赋值的有参构造器...");}<!-- 这里必须定义为car 方便使用autowire="byName"以属性名作为id去容器中找到这个类组件--><!-- <bean id="car" class="c原创 2020-12-13 09:33:54 · 173 阅读 · 0 评论 -
Spring框架Day09之事务传播行为(详解)
事务的传播行为如果有事务在运行,当前方法就在这个事务内运行,否则,就启动一个新的事务,并在自己的事务内运行事务方法的嵌套,传播行为可由传播属性决定。7个传播属性required和requires_newrequired:先坐老王的车,老王翻车就G了。如果老王没车就自己买一辆车。requires_new:自己买一辆车,只允许存在自己一辆车,如果老王车也在,则暂时挂起老王的车。如果自己的车又出现问题,自己执行失败。多个方法同时使用requires_new:将老王的车挂起后,执行完自己的方法业务后,原创 2020-12-12 23:19:37 · 139 阅读 · 0 评论 -
Spring框架Day09之事务六大属性和事务的隔离级别mysql操作语句和两种途径模拟脏读场景
事务六个属性细节(回滚则相安无事) 1. isolation-Isolation 事务的隔离级别 2. propagation-Propagation 事务的传播行为 3. noRollbackFor-Class[] 指定异常事务不回滚 4. rollbackFor-Class[] 指定异常事务回滚。@Transactional(timeout = 3,rollbackFor = {FileNotFoundException.class})和new FileInputStream("d:\原创 2020-12-12 10:36:22 · 100 阅读 · 0 评论 -
Spring框架之源码分析(一)和BeanFactory与ApplicationContext的区别
断点调试private ApplicationContext ioc = new ClassPathXmlApplicationContext(“spring-config.xml”);ioc容器将所有的person01/02/03/04/05都创建好,只需要简单的获取调用即可。public ClassPathXmlApplicationContext(String configLocation) throws BeansException { this(new String[] {configLo原创 2020-12-11 13:06:47 · 102 阅读 · 0 评论 -
Spring框架之Day08声明式事务简单环境搭建(模拟结账减库存)
TxBookDao@Repositorypublic class TxBookDao { @Autowired JdbcTemplate jdbcTemplate; /** * 更新 减余额 * @param username 某用户 * @param price 图书价格 */ public void updateBalance(String username,int price){ String sql =原创 2020-12-10 22:42:24 · 70 阅读 · 0 评论 -
Spring框架之Day08多切面AOP执行顺序和AOP使用场景
环绕通知@Around执行顺序环绕前置通知-》环绕正常执行通知-》环绕后置通知出现异常后:环绕前置通知-》环绕异常通知-》环绕后置通知如果存在四大通知混合情况,执行顺序为:普通前置-》环绕前置-》环绕正常执行通知-》环绕后置通知-》普通后置-》普通正常执行通知出现异常后:普通前置-》环绕前置-》环绕异常通知-》环绕后置-》普通后置-》!普通正常执行通知(实则异常它仍执行结果为null)多切面执行顺序无环绕根据先进后出的原则(栈)谁最后接触核心目标方法,谁先执行完后置通知方法。举例:存在L原创 2020-12-10 13:37:26 · 336 阅读 · 0 评论 -
Spring框架之Day07四合一环绕通知与四大通知、原始静态方法对比
四大通知方法抽取可重用的切入表达式声明空方法,添加@Pointcut注解。优点:不用每个方法都写execution(public int com.lwt.calculator.impl.MyMathCal.*(int,int))全部写@Before(“myexecution()”)即可@Pointcut(“execution(public int com.lwt.Calculator.impl.MyMathCal.*(int,int))”)public void myexecution(){原创 2020-12-09 18:52:29 · 113 阅读 · 0 评论 -
Spring框架之Day07无接口cglib创建代理和通知方法使用详解
有接口 默认jdk创建代理$Proxy26无接口 cglib创建代理@Test public void test2(){ ApplicationContext ioc = new ClassPathXmlApplicationContext("spring-configAOP1.xml"); // 从ioc容器中拿到目标对象,注意:如果想要用类型,一定用他的接口类型,不用用本类 MyMathCal bean1 = ioc.getBean(MyMa原创 2020-12-09 13:49:09 · 96 阅读 · 0 评论 -
Spring框架之Day06面向切面编程AOP和动态代理实现计算器日志操作
AOPAOP(Aspect Oriented Programming)面向切面编程,基于OOP基础之上。在程序运行期间,将某段代码动态的切入到指定方法的指定位置进行运行的这种编程方式OOP(Object Oriented Programmin)AOP产出的导火索:动态代理场景Calculator计算器的业务±*/逻辑 和 日志记录。日志记录添加在方法内部,耦合。日志记录动态的在目标方法的前后先执行(动态代理)缺点:如果被代理对象(目标对象)未实现接口,则无法为目标对象创建代理对象。至此,spr原创 2020-12-08 15:09:29 · 230 阅读 · 0 评论 -
Spring框架之Day05泛型依赖注入效果与原理
泛型依赖注入 效果public abstract class BaseDao<T> { public abstract void save();}public class BaseService<T> { @Autowired BaseDao<T> baseDao; public void save(){ System.out.println("自动注入的dao"+baseDao); baseDao.原创 2020-12-06 22:46:23 · 217 阅读 · 0 评论 -
spring框架之Day04自动装配注解@Autowired和Spring单元测试
使用注解导入aop包使用注解加入到容器中的组件,和使用配置加入到容器中的组件行为默认都相同组件的id默认是组件的类名首字母小写(可改),组件的作用域默认是单例的(@Scope(value=“prototype”)改变为多实例)通过注解分别创建Dao Service Controller通过给bean上添加注解,快速将bean加入到ioc容器中Spring4个注解@Controller:给控制器层(Servlet包下)的组件加此注解 @Controller(“changeName”)@Serv原创 2020-12-04 20:04:08 · 244 阅读 · 0 评论 -
Spring框架之Day03管理德鲁伊数据库连接池(外部引用)和bean的后置处理器
spring ioc容器管理德鲁伊数据库连接池导入两个jar包 commons-logging-1.2 和 druid-1.1.9dbconfig.propertiesusernamelwt=rootpassword=123456url=jdbc:mysql://192.168.58.129:3306/cabbeenMalldriverClassName=com.mysql.cj.jdbc.Driver为了防止配置文件中的key和spring关键字username冲突,改为usernamel原创 2020-12-04 09:20:40 · 173 阅读 · 0 评论 -
Spring框架之Day02工厂和bean的作用域与生命周期
bean的作用域单实例默认scope=singleton1.在容器启动完成就已经创建好对象保存在容器中多次获取是同一个bean,物理地址相同<bean id="book" class="com.lwt.bean.Book" scope="singleton"></bean>多实例的beanscope=prototype每次获取创建新的实例对象<bean id="book" class="com.lwt.bean.Book" scope="prototype"原创 2020-12-03 22:11:10 · 108 阅读 · 0 评论 -
Spring框架之Day02为各类属性赋值
各类属性赋值通过p名称空间为Bean赋值 <bean id="person05" class="com.lwt.bean.Person" p:age="18" p:lastName="威彤" p:gender="男" p:email="lwt@qq.com"> </bean></beans>@Testpublic void test5() { Person bean = ioc.getBean("person05/04/03/02/01",原创 2020-12-03 10:27:43 · 106 阅读 · 0 评论 -
Spring框架之Day01
SpringIOCInversion Of Control 控制反转控制资源的获取方式,主动式:自己创建对象。 被动式:交给容器去创建和设置容器:管理所有的组件(有功能的类)。容器自动的探查出哪些组件需要用到另一些组件。容器帮我们创建对象。由从前主动的创建到被动的接受资源。举例:婚介所。DI(Dependency Injection)依赖注入容器能知道哪个组件(类)运行的时候,需要另外一个类;容器通过反射的形式,将容器中准备好的对象注入到servlet中。利用反射给属性赋值。注册容器组件原创 2020-12-02 15:05:59 · 76 阅读 · 0 评论 -
Spring新手入门day02(将数据源整合到SpringMVC三层架构)
Spring常用注解@Configuration:声明当前类是一个配置类,等同于spring的核心配置文件@ComponentScan:扫描UserController UserDaoImpl UserServiceImpl(加@Controller)包路径@Component:声明当前类的对象将被spring托管,spring会创建该类的实例并存放在容器中@Controller:声明了该类是一个控制器@Service:声明了该类是一个服务类@Repository:声明了该类是一个持久层,是Co原创 2020-08-15 16:52:58 · 122 阅读 · 0 评论 -
Spring新手入门day01(2种方法实现SpringMVC三层架构)
SpringSpring Core实现了反向控制IOC 和 依赖注入DIApplicationContext 在工程启动时读取配置文件bean.xml文件,获取需要管理的bean实例。通过工厂模式创建对象,创建需要管理的bean的实例。业务调用时通过getBean的方法从工厂中获取实例调用目标方法。放入Ioc容器中容器中管理的bean默认的是 单例Spring小白入门创建maven工程添加依赖在resources创建核心配置文件bean.xml(模板来自于官网)配置管理的bean原创 2020-08-14 19:59:04 · 182 阅读 · 0 评论