更多Spring开发在框架开发
Spring是开源的轻量级框架,也是一站式框架,即在javaEE三层结构中,每一层都提供了不同的解决技术:层-SpringMVC ; 业务层-ioc ; 持久层-jdbcTemplate 。
Spring技术的两大核心:
本文案例先讲述IOC的具体应用
关于IOC: ioc是spring的两大核心之一,目的是避免new的方式创建类对象,而类创建过程中对类中属性的赋值则是注入属性 ,IOC有两种方式:
而一般情况下,我们习惯用配置文件+注解的方式
案例目标: User类和Work类,Test类不再使用new的方式创建对象,而是使用IOC的方式进行创建User类,并且实现注入属性的演示
项目环境: 导入jar包
本文使用Spring4.x版本,导入Spring基本包和日志相关jar包:
在测试2.2 注解的方式时,还需要提供spring-aop-4.2.4.RELEASE.jar
User类,属性注入需要提供set方法,User类提供字符串属性和对象属性
package edu.kmust.entity;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
/** * 实体类 * @author zhaoyuqiang * */
public class User {
private String username ; //字符串类型
private Work work ; //对象类型
public String getUsername() {
return username;
}
//必须提供set方法
public void setUsername(String username) {
this.username = username;
}
public Work getWork() {
return work;
}
public void setWork(Work work) {
this.work = work;
}
}
Work类
package edu.kmust.entity;
import org.springframework.stereotype.Service;
public class Work {
/** * 添加用户 */
public void add() {
System.out.println("添加用户的操作......");
}
}
Spring核心配置文件,名称建议用applicationContext.xml,位置建议src下。
<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="work" class="edu.kmust.entity.Work" >bean>
<bean id="user" class="edu.kmust.entity.User" scope="singleton">
<property name="username" value="黄思">property>
<property name="work" ref="work">property>
bean>
beans>
测试类,User类通过ioc创建,并且测试了属性有没有注入
@Test
public void test01() {
/* * 1.加载spring配置文件,根据配置文件创建 * org.springframework.context.ApplicationContext对象 * 2. 用IOC的方式获取对象 */
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User) context.getBean("user");
System.out.println(user.getUsername());
user.getWork().add(); //不用new的方式就能调用其他类的方法,通常用在service调用dao中
}
User,使用注解方法创建对象,注入属性,不需要提供set方法
package edu.kmust.entity;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
/** * 实体类 * @author zhaoyuqiang * */
/* * 1.创建对象的注解Component/Controller/Service/Repository四个都可以 * 类似于配置文件方式中的 * value=“user”可以写成"user" * Scope配置单/多例 */
@Component(value="user")
@Scope(value="prototype")
public class User {
/* * 2. 属性注入的注解 * @Autowired * @Resource(name="注入对象的注解value值(另一个对象的Service注解的value值)") */
@Value("黄思")
private String username ; //字符串类型
@Resource(name="work")
private Work work ; //对象类型
public String getUsername() {
return username;
}
public Work getWork() {
return work;
}
}
Work
package edu.kmust.entity;
import org.springframework.stereotype.Service;
/** * 注入对象 * @author zhaoyuqiang * */
@Service(value="work")
public class Work {
/** * 添加用户 */
public void add() {
System.out.println("添加用户的操作......");
}
}
配置文件applicationContext.xml
<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="edu.kmust.entity">context:component-scan>
beans>
配置文件用来创建对象,注解方法用来注入属性
User
package edu.kmust.entity;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
/** * 实体类 * @author zhaoyuqiang * */
public class User {
@Value("黄思")
private String username ; //字符串类型
@Resource(name="work")
private Work work ; //对象类型
public String getUsername() {
return username;
}
public Work getWork() {
return work;
}
}
Work
package edu.kmust.entity;
import org.springframework.stereotype.Service;
/** * 注入对象 * @author zhaoyuqiang * */
public class Work {
/** * 添加用户 */
public void add() {
System.out.println("添加用户的操作......");
}
}
配置文件applicationContext.xml
<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">
<bean id="work" class="edu.kmust.entity.Work" scope="singleton">bean>
<bean id="user" class="edu.kmust.entity.User">bean>
<context:component-scan base-package="edu.kmust.entity">context:component-scan>
beans>
https://download.csdn.net/download/g425680992/10651876