首页
友链
Search
1
01-快捷命令
133 阅读
2
寒假计划
128 阅读
3
浏览器规范(ES module)和 node.js 规范(Common JS)
120 阅读
4
03-概念解析
119 阅读
5
学期计划(大三下学期)
102 阅读
计划
算法
面试题
运维
Ansible
Linux
数据库
neo4j
共用
web 前端
CSS
JavaScript
Vue
Node.js
英语单词
工程化
JAVA
mysql
收获
面试
mybatis
Spring
基础
spring-mvc
问题
项目
宠物乐园
速查
问题集
git
学习
sql
二阶段
登录
Search
标签搜索
spring
mysql
vue
ansible
CSS
面试
计划
收获
JAVA面试题
spring-mvc
Starrylsi
累计撰写
106
篇文章
累计收到
37
条评论
首页
栏目
计划
算法
面试题
运维
Ansible
Linux
数据库
neo4j
共用
web 前端
CSS
JavaScript
Vue
Node.js
英语单词
工程化
JAVA
mysql
收获
面试
mybatis
Spring
基础
spring-mvc
问题
项目
宠物乐园
速查
问题集
git
学习
sql
二阶段
页面
友链
搜索到
17
篇与
的结果
2024-09-11
07-Spring管理数据库连接池
目标: 一切都是为了spring整合mybatis关键: Spring配置管理数据库连接池对象1. 搭建Spring的开发环境创建java工程导入Spring需要的jar包commons-logging-1.1.3.jarspring-beans-3.0.0.RELEASE.jarspring-context-3.0.0.RELEASE.jarspring-core-3.0.0.RELEASE.jarspring-expression-3.0.0.RELEASE.jar日记包log4j-1.2.17.jarlog4j.properties属性配置文件# Global logging configuration log4j.rootLogger=INFO, stdout # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n 还需要导入数据库驱动包以及数据库连接池druid-1.1.10.jarmysql-connector-java-4.1.37-bin.jar创建Spring的配置文件application.xml2. 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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置一个数据库连接池对象 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url" value="jdbc:mysql://localhost:3306/zhuama" /> <property name="username" value="root" /> <property name="password" value="root" /> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> </bean> </beans>public class ApplicationTest { @Test public void test1() throws Exception { ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "application.xml"); DataSource dataSource = (DataSource) applicationContext.getBean("dataSource"); System.out.println(dataSource.getConnection()); } } 2. Spring引入单独的jdbc.properties配置文件2.1 抽取四个jdbc连接属性到jdbc.properties属性配置文件中jdbc.username=root jdbc.password=root jdbc.url=jdbc:mysql://localhost:3306/mybatis jdbc.driverClassName=com.mysql.jdbc.Driver2.2 使用PropertyPlaceholderConfigurer 来加载jdbc.properties属性配置文件<!-- 它可以加载jdbc.properties属性配置文件 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <!-- location 属性是你要加载的jdbc.properties属性配置文件的路径 --> <property name="location" value="classpath:jdbc.properties" /> </bean>2.3 使用加载后的jdbc.properties属性配置文件中的连接属性。<!-- 配置一个数据库连接池对象 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url " value="${jdbc.url}" /> <property name="username" value="${jdbc.user}" /> <property name="password" value="${jdbc.password}" /> <property name="driverClassName" value="${jdbc.driverClass}" /> </bean>3. 使用context名称空间加载jdbc.properties配置文件<!-- 使用context命名空间加载配置文件 需要给配置文件中的key添加前缀 否则会自动使用当前电脑的username --> <context:property-placeholder location="classpath:jdbc.properties"/>db.jdbc.username=root db.jdbc.password=root db.jdbc.url=jdbc:mysql://localhost:3306/mybatis db.jdbc.driverClassName=com.mysql.jdbc.Driver<!-- 配置一个数据库连接池对象 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url " value="${db.url}" /> <property name="username" value="${db.user}" /> <property name="password" value="${db.password}" /> <property name="driverClassName" value="${db.driverClass}" /> </bean>
2024年09月11日
9 阅读
0 评论
0 点赞
2024-09-11
06-Spring-IOC-后置处理器
理论:Spring Bean后处理器是Spring框架提供的一种扩展机制,划重点:扩展机制。用于在Spring容器实例化、配置和初始化Bean的过程中,添加自定义逻辑。(大白话:后处理器是可以在Bean的生命周期的不同阶段 进行干预,可以对Bean进行修改、增强或者执行其他操作。开发者只要去实现,Spring当中的BeanPostProcessor接口,那么就能插手SpringBean实例化的一个过程)后置处理器:原文链接//创建一个AI接口 public interface AI { public void show(); }//修改A类实现AI接口 public class A implements AI { public A() { System.out.println("这是A对象被创建了"); } public void initA() { System.out.println("这里是初始化A的方法"); } public void destroyA() { System.out.println("这里是销毁A的方法"); } @Override public void show() { System.out.println("--这是目标A对象的show方法--"); } }1、创建一个类去实现后置处理器的接口(top.starrylsi.handler)public class MyBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("这是初始化之前: bean->[" + bean + "] , beanName ->[" + beanName + "]"); return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("这是初始化之后: bean->[" + bean + "] , beanName ->[" + beanName + "]"); if ("a".equals(beanName)) { // 创建一个jdk动态代理 AI proxyAi = (AI) Proxy.newProxyInstance(bean.getClass() .getClassLoader(), bean.getClass().getInterfaces(), new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("这是前置增强代码"); Object result = method.invoke(bean, args); System.out.println("这是后置增强代码"); return result; } }); return proxyAi; } else { return bean; } // return bean; } 2、到Spring的配置文件中去配置后置处理器 <!-- init-method="initA" 设置初始化方法 destroy-method="destroyA" 设置销毁的方法 --> <bean id="a" class="com.zhuama.pojo.A" init-method="initA" destroy-method="destroyA"></bean> <!-- 配置Bean的后配置处理器。 --> <bean class="com.zhuama.util.MyBeanPostProcessor" />测试的代码: @Test public void test24() { @SuppressWarnings("resource") ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext( "application2.xml"); AI ai = (AI) applicationContext.getBean("a"); ai.show(); }
2024年09月11日
20 阅读
0 评论
0 点赞
2024-09-11
05-Spring-IOC之Bean的生命周期
目标: 创建带有生命周期方法的bean关键: 给bean标签中 添加属性 init-method="initA" destroy-method="destroyA"public class A { public A() { System.out.println("这是A对象被创建了"); } public void initA() { System.out.println("这里是初始化A的方法"); } public void destroyA() { System.out.println("这里是销毁A的方法"); } } <!-- init-method="initA" 设置初始化方法 destroy-method="destroyA" 设置销毁的方法 --> <bean id="a" class="com.zhuama.pojo.A" init-method="initA" destroy-method="destroyA"></bean>@Test public void test23() { ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application2.xml"); applicationContext.close(); }
2024年09月11日
12 阅读
0 评论
0 点赞
2024-09-11
04-Spring-IOC-基于xml配置文件的自动注入
关键: 在bean标签中的 autowire属性中设置四种装配方式的一种值掌握: 了解每一个装配方式是什么意思public class Car { private int id; private String name; public class Person { private Car car; public Person(Car car) { this.car = car; }<bean id="car" class="top.starrylsi.pojo.Car"> <property name="id" value="1" /> <property name="name" value="宝马1" /> </bean> <bean id="car1" class="top.starrylsi.pojo.Car"> <property name="id" value="2" /> <property name="name" value="宝马2" /> </bean><!-- autowire 设置自动装配的方式 default 和 no 一样,都表示不装配, 如果对象不你手动设置,就没有值。 byName 表示Spring容器会自动按照子对象的属性名,当成是id来查找对象。 找到就注入,找不到就为null 举例:private Car car; 就会以car做为id去spring容器中去查找对象。找到就把值注入给属性car。 byType 表示Spring容器会自动的按照子对象的类型去查找bean对象注入。 举例:private Car car; Spring容器就会自动的按照Car.class类型去Spring容器中查找。 如果说,找到一个,就注入 如果没有找到,值就为null 如果说,找到多个,就报错。 constructor 表示Spring容器会按照子对象的类型去查找构造方法,中参数需要的类型去注入。 先按照类型查询,如果找到一个就注入。 如果找到多个,再按照构造方法中参数的变量名做为id来查找,如果找到就注入。如果没有找到,就为null 如果没有找到,值也为null --> <bean id="p22" class="top.starrylsi.pojo.Person" autowire="constructor"> <property name="id" value="1"/> <property name="name" value="华仔"/> <property name="age" value="18"/> <property name="phone" value="18699998888"/> </bean>
2024年09月11日
11 阅读
0 评论
0 点赞
2024-09-11
03-Spring-IOC-Bean的四种模式
目标: 四种模式只需要了解单例模式即可,其他的都是不常用<!-- scope 属性设置范围 singleton 默认情况 是singleton,表示Spring容器中只有一个单例 单例是在Spring容器创建的时候。初始化所有单例Bean对象 并且每次调用Bean对象的时候,原来原来Spring容器中的对象 prototype prototype是表示当前配置的Bean对象是多例。 在Spring容器被创建的时候,bean不会被创建出来。 并且每次调用getBean方法都会创建一个对象实例 request 表示一次请求内,不管调用几次getBean方法,返回的都是同一个bean对象 Object bean = request.getAttribute(xxx); if (bean == null) { bean = 创建一个 request.setAttribute(xxx,bean); } session 表示一个Session对象内,不管调用几次getBean方法,返回的都同一个Bean对象 Object bean = session.getAttribute(xxx); if (bean == null) { bean = 创建一个 session.setAttribute(xxx,bean); } --> <bean id="p21" class="com.zhuama.pojo.Person" scope="prototype"> <property name="id" value="1"/> <property name="name" value="华仔"/> <property name="age" value="18"/> <property name="phone" value="18699998888"/> </bean>
2024年09月11日
11 阅读
0 评论
0 点赞
1
2
3
4