2020java框架教程之spring的bean作用域
Scope作用域
单例 singleton:
在整个应用程序中,只创建bean的一个实例
原型 prototype:
每次注入或通过spring上下文获取的时候,都会创建一个新的bean实例
会话 session:
在web应用程序中,为每个会话创建一个bean实例
请求request:
在web应用程序中,为每个请求创建一个bean实例
单例和多例
2020java框架教程:spring注解以及整合Junit
1.创建web项目
2.导包
3.导入配置文件log4j.properties
4.添加容器以及配置注解扫描:applicationContext.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--配置注解扫描,指定要扫描的包 --> <context:component-scan base-package="entity"/> </beans>
5.配置注解扫描
<!–配置注解扫描,指定要扫描的包 –>
<context:component-scan base-package=”entity”/>
整合junit测试
1.导入spring-test包
2.创建实体类
在类的上方添加注解
@Component("users") 适用于所有组件 @Repository("users") 适用于持久层 @Service("users") 适用于service层 @Controller("users") 适用于控制层
等同于<bean name=”name” class=”entity.Users” />
3.创建测试类
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") public class RunWithTest { @Resource(name = "users") private Users users; @Test public void test(){ System.out.println(users); } }
4.指定对象的作用域是否是单例还是多例
@Scope(scopeName = "singleton") //二选一 @Scope(scopeName = "prototype")
5.set方式注入value值
a.在私有成员变量中注入
//注入 @Value("1") private int id; @Value("admin") private String name; @Value("5200") private double salary; @Autowired private Car car;
b.在set方法注入
6.自动装配
@AutoWired
使用@AutoWired进行自动装配,按照对象的类型进行自动装配
@Component public class Car { @Value("摩拜单车") private String name; @Value("black") private String color; }
public class Users { @Autowired 自动装配 private Car car; }
自动装配存在的问题:如果一个类型有多个对象,那么可以采用以下的方式
先在配置文件中添加
<bean name="car1" class="entity.Car"> <property name="name" value="保时捷"/> <property name="color" value="red"/> </bean> <bean name="car2" class="entity.Car"> <property name="name" value="捷达"/> <property name="color" value="white"/> </bean>
A.使用@Qualifier指定具体的对象
@Autowired @Qualifier("car1") private Car car;
B.使用 @Resource 指定具体的对象
@Autowired @Resource(name="car2") private Car car;
7.初始化方法和销毁方法
@PostConstruct public void init(){ System.out.println("初始化"); } @PreDestroy public void destroy(){ System.out.println("销毁"); }
2020javaweb框架教程:spring对象创建的细节
单例和多例
1.默认情况下bean是单例的,scope=”singleton’;
2.多例配置:scope=”prototype”;
3.scope=”request”;
4.scope=”session”;
<!-- singleton是单例 获取的对象都是同一个地址 --> <bean name="users2" class="entity.Users" scope="singleton"></bean> <!-- prototype 是 多例 每次构建对象都 new一个新的地址 --> <bean name="users2" class="entity.Users" scope="prototype"></bean>
2020javaweb框架教程之maven生命周期
依赖生命周期
<dependency> <!-- jstl 支持 --> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>compile</scope><!-- 生命周期 --> </dependency>
maven生命周期如下
compile:默认值,适⽤于所有阶段(测试,编译,运⾏,打包),会随着项⽬⼀起发布(被打包)
provided:类似compile,期望JDK、容器或使⽤者会提供这个依赖。如servlet.jar,参与测试,编译,不会被打包
runtime:只在运⾏时使⽤,如 jdbc6.jar,适⽤运⾏和测试阶段,会被⼀起发布
test:只在测试时使⽤,⽤于编译和运⾏测试代码,如 junit.jar,不会随项⽬发布
system:类似provided,但Maven不会在Repository中查找它,要在本地磁盘⽬录中查找,参与编译,测试,打包,运⾏。
2020javaweb框架教程之idea配置maven以及配置Tomcat
idea配置maven
选择骨架
创建maven项目,选择骨架
项目结构
java项目:
1.src/main/java 存放源代码,建包,放项⽬中代码(service,dao,User,….)
2.src/main/resources 书写配置⽂件,项⽬中的配置⽂件(jdbc.properties)
3.src/test/java 书写测试代码,项⽬中测试案例代码
4.src/test/resources 书写测试案例相关配置⽂件
5.项⽬根/pom.xml (project object model) maven项⽬核⼼⽂件,其中定义项⽬构建⽅式,声明依赖等
注意:项⽬中的建包,建类,执⾏,都和普通项⽬⽆差异
导入依赖jar
建好项⽬后,需要导⼊需要的jar,要通过【坐标】
1. 每个构件都有⾃⼰的坐标(标识) = groupId + artifactId + version = 项⽬标识 + 项⽬名 + 版本
2. 在maven项⽬中只需要配置坐标,maven便会⾃动加载对应依赖。删除坐标则会移除依赖
3. jar包并不会导⼊到项⽬⽬录中,只是maven帮助做了关联。但在打包部署项⽬时会携带对应依赖
4. ⽽且,如果导⼊了依赖A,⽽A中⼜依赖了B,则B会被⾃动加载。
查找依赖
依赖查找服务:https://mvnrepository.com/ ,获得依赖的坐标,在maven项⽬中导⼊。
导入依赖
在项目的pom文件中:
<dependency> <!-- jstl 支持 --> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>compile</scope> </dependency><!-- 通过坐标导入依赖 -->
同步依赖
创建javaweb项目导入依赖
<dependency> <!-- jstl 支持 --> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>compile</scope> </dependency> <dependency> <!-- servlet编译环境 --> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <!-- jsp编译环境 --> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency>
配置Tomcat