Maven创建webapp骨架无法使用@WebServlet来实现注解配置解决方案
利用maven创建web项目,默认不支持@WebServlet注解配置,甚至不支持El表达式(在web 3.0版本之后才支持),所以在写servlet 时想使用@WebServlet进行url-pattern配置是不能够完成的。
解决方案:
1.改变web.xml文件头来更改web工程版本
在本地仓库找到org\apache\maven\archetypes\maven-archetype-webapp\1.4
(更多…)
2020java框架教程之spring的bean作用域
Scope作用域
单例 singleton:
在整个应用程序中,只创建bean的一个实例
原型 prototype:
每次注入或通过spring上下文获取的时候,都会创建一个新的bean实例
会话 session:
在web应用程序中,为每个会话创建一个bean实例
请求request:
在web应用程序中,为每个请求创建一个bean实例
单例和多例
2020javaweb框架教程:spring的set依赖注入
set方式注入
value表示值类型的注入,ref表示对象类型的注入
创建两个对象,Users和Car
public class Users { private int id; private String name; private double salary; private Car car; }
public class Car { private String name; private String color; }
配置文件:
(更多…)
2020java框架教程之配置bean对象
通过JavaConfig配置Bean对象
private UsersDao ud;
@Bean//通过JavaConfig配置Bean对象 public UsersDao getUsersDao(){ System.out.println("创建UsersDao对象"); return new UsersDaoImpl(); }
通过构造方法配置Bean对象
//通过构造方法创建 public UsersServiceImpl() {} public UsersServiceImpl(UsersDao ud) { this.ud = ud; }
2020java框架教程之spring第二章总结
定义配置:
@Configuration
@ComponentScan(注解扫描)
定义组件:
@Component
@Autowired(自动装配)
@Autowired(required=false)
自动装配歧义性
@Primary
@Qualifier
@Resource
分层架构中定义组件
2020java框架教程之spring通过XML启用组件扫描
applicationContext.xml
<!-- 配置组件扫描 --> <!-- base-package : 包路径 --> <context:component-scan base-package="demo"/>
AppConfig.java
@Configuration //引入配置文件 @ContextConfiguration("classpath:applicationContext.xml") public class AppConfig { }
Test.java
(更多…)
2020java框架教程之spring注解扫描设置基础包
//设置扫描组件的基础包 //@ComponentScan("包名") //@ComponentScan(basePackages = {"包名","包名1"}) //@ComponentScan(basePackages = {"包名","包名1"}) //@ComponentScan(basePackageClasses = {类名.class,类名1.class})
2020java框架教程之spring的自动装配的歧义性
两个类都实现了同一个接口,那么自动装配就会受到冲突,解决方案如下:
1.首选bean
在声明类的时候使用@Primary,只能定义一个注解
2.使用限定符
在声明的时候和装配的时候分别使用@Qualifier (更多…)
2020java框架教程之spring使用接口
1.创建web项目
2.导入jar包以及日志文件
3.创建接口与实现类
//接口 public interface UsersService { void add(); }
@Component //@Component 要写在实现类上,应用程序启动的时候 //就会自动扫描实现类,来将这个类的对象创建在spring的容器当中 public class UsersServiceImpl implements UsersService { @Override public void add() { System.out.println("添加用户"); } }
2020java框架教程之spring整合Junit4单元测试
1.创建web项目
2.导入jar包
3.创建类对象
4.创建test包以及test类
5.引入spring单元测试类
6.加载配置类
(更多…)
2020Java框架教程之spring自动装配
装配bean的三种方式
1.隐式的bean发现机制和自动装配
2.在java中进行显示的配置
3.在XML中进行显示的配置
创建一个CD类
@Component public class CompactDisc { public CompactDisc(){ System.out.println("CompactDisc无参构造函数"); } public void play(){ System.out.println("正在播放音乐....."); } }
创建一个CD播放类
2020java框架教程之spring概述以及入门helloworld
什么是spring?
Spring是一个非常活跃的开源框架,由Rod Johnson开发,帮助分离项目组件之间的依赖关系,它的主要目的是简化企业开发
核心概念
IOC:Inversion Of Control控制反转
DI:Dependency Injection 依赖注入
AOP:Aspect Oriented Programming 面向切面编程
Spring的组成
2020java框架教程:springAOP的注解方式开发
1.创建web项目
2.引入jar包:
aopalliance.jar、aspectjweaver.jar
3.日志
log4j.properties
4.准备目标对象
先创建类的接口,然后创建类的实现类
5.编写通知
前置通知:在目标方法之前调用
后置通知(如果出现异常就不调用):在目标方法之后调用
后置通知:(无论是否出现异常都会调用):在目标方法之后调用
环绕通知:在目标方法之前、后调用
异常通知:出现异常则调用
(更多…)
2020java框架教程:spring的aop编程
1.创建web项目
2.引入jar包:
aopalliance.jar、aspectjweaver.jar
3.日志
log4j.properties
4.准备目标对象
先创建类的接口,然后创建类的实现类
5.编写通知
前置通知:在目标方法之前调用
后置通知(如果出现异常就不调用):在目标方法之后调用
后置通知:(无论是否出现异常都会调用):在目标方法之后调用
环绕通知:在目标方法之前、后调用
异常通知:出现异常则调用
(更多…)
2020java框架教程:spring的aop相关概念
1.AOP思想:横向重复,纵向抽取
2.底层实现:
Spring的AOP的底层用到两种代理机制:
JDK的动态代理:针对实现了接口的类产生代理。
Cglib 的动态代理:针对没有实现接口的类产生代理,应用的是底层的字节码增强的技术生成当前类的子类对象。
3.AOP的开发中相关术语:
(更多…)
2020javaweb框架教程之spring的IOC与DI以及注入
IOC
Inverse Of Controll:控制反转
反转了依赖关系的满⾜⽅式,由之前的⾃⼰创建依赖对象,变为由⼯⼚推送。(变主动为被动,即反转)。
解决了具有依赖关系的组件之间的强耦合,使得项⽬形态更加稳健
DI
Dependency Injection :依赖注⼊
全新的依赖满⾜⽅式,体现在编码中就是全新的赋值⽅式 ==> 在⼯⼚中为属性推送值
如: <property name=”userDAO” ref=”userDAO”></property>
IOC与DI
在spring中关于IOC和DI的描述是这样的: IOC(DI) ,即,是⼀码事
IOC 是思想 :指导我们在满⾜依赖时,应该有反转的设计。
DI 是⼿段 :实际操作时,就是在⼀次次的 注⼊
(更多…)