首页
友链
Search
1
01-快捷命令
134 阅读
2
寒假计划
129 阅读
3
浏览器规范(ES module)和 node.js 规范(Common JS)
121 阅读
4
03-概念解析
120 阅读
5
学期计划(大三下学期)
103 阅读
计划
算法
面试题
运维
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
二阶段
页面
友链
搜索到
51
篇与
的结果
2024-09-11
10-Spring-注解的包含和排除
问题: 为什么将spring和spring mvc的注解分开扫描问题解决<!-- 使用注解需要让spring解析xml时 知道注解属于哪个包 在spring中排除掉spring-mvc的注解 use-default-filters="true" 在spring-mvc中 只包含spring-mvc的注解 use-default-filters="false" --> <context:component-scan base-package="top.starrylsi" use-default-filters="true"> <!-- 包含spring自身的注解 --> <!-- <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/> --> <!-- 排除spring-mvc的注解 --> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
2024年09月11日
15 阅读
0 评论
0 点赞
2024-09-11
09-Spring-注解
目标: 通过注解创建Dao,Service,Controller关键: 当我们使用Spring的注解功能的时候。需要把aop的jar包导入注: 注解功能极其重要pojo中的component注解把xml写bean的操作节省了题外一般mybatis使用xml配置文件而不用注解,使用xml可以把java代码拆开了spring使用注解,认为spring是java代码的一部分耦合性低,方便改代码,方便分配任务使用注解: 不用配置bean了Spring配置bean的常用注解有@Controller 专门标注给web层的组件 @Service 专门给Service层的组件注解 @Repository 给Dao层组件标注 @Component 给Dao、Service、控制器Web层之外的组件进行标注。 @Scope 可以修改bean的Scope属性,默认不标注此注解表示单例。 也可以通过注解修改为多例@Scope(value="prototype")在类上使用注解注解在类上使用/** * @Repository注解的功能相当于在Spring配置文件中做了如下的配置: * <bean id="bookDao" class="top.starrylsi.dao.BookDao" scope="singleton"></bean> */ @Scope(value="prototype") @Repository(value="bookDao") public class BookDao { public BookDao() { System.out.println("BookDao也被初始化了"); } }当我们在类上使用了注解之后。一定要在Spring配置文件中加上包扫描的配置才能生效<!-- context:component-scan 表示包扫描 base-package 指定要扫描哪些包下的类(并且包含子包) --> <context:component-scan base-package="top.starrylsi"></context:component-scan> 测试@Test public void test1() throws Exception { @SuppressWarnings("resource") ApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml"); System.out.println( applicationContext.getBean("bookDao") ); System.out.println( applicationContext.getBean("bookDao") ); System.out.println( applicationContext.getBean("bookDao") ); System.out.println( applicationContext.getBean("bookService") ); System.out.println( applicationContext.getBean("bookServlet") ); System.out.println( applicationContext.getBean("person") ); }
2024年09月11日
17 阅读
0 评论
0 点赞
2024-09-11
08-Spring-EL表达式
EL表达式
2024年09月11日
16 阅读
0 评论
0 点赞
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 点赞
1
...
4
5
6
...
11