0
点赞
收藏
分享

微信扫一扫

FPGA_AD9361

b91bff6ffdb5 03-26 06:00 阅读 5

1. Spring简介

1.1 Spring 核心设计思想

1.1.1 Spring 是什么?

1.1.1.1 什么是IoC容器?
1.1.1.2 DI 概念说明
1.1.1.3 IoC容器和普通程序开发的区别

1.2 Spring 创建和使用

在这里插入图片描述

1.2.1 创建 Spring 项目

  1. 创建⼀个 Maven 项⽬
    在这里插入图片描述
    然后跳转到了这个页面:
    在这里插入图片描述
  2. 添加 Spring 框架⽀持
    在项⽬的 pom.xml 中添加 Spring 框架的⽀持spring-context(spring 上下⽂)和spring-beans(管理对 象的模块),xml 配置如下:
<dependencies>
   <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-context</artifactId> 
        <version>5.2.3.RELEASE</version> 
    </dependency>

    <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-beans</artifactId> 
        <version>5.2.3.RELEASE</version> 
    </dependency>
</dependencies>
  1. 添加启动类
    最后在创建好的项⽬ java ⽂件夹下创建⼀个启动类,包含 main ⽅法即可:
public class App {
    public static void main(String[] args) {

    }
}

到此为止,一个spring项目就搭建好了。

1.2.2 存储 Bean 对象

  1. 创建 Bean
public class User {
    public String sayHi(String name) { 
        return name + " hello!";
    }
}
  1. 将 Bean 注册到容器
    <<1>>在创建好的项⽬中添加 Spring 配置⽂件 spring-config.xml,将此⽂件放到 resources 的根⽬录下, 如下图所示:
    在这里插入图片描述
    <<2>> spring-config.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" 
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

<<3>> 将 User 对象注册到 Spring 中就可以,在 标签中添加配置 ,格式如下:

<beans>
  <bean id="user" class="com.bit.User"></bean>
</beans>

1.2.3 获取 Bean 对象

  1. 创建 Spring 上下⽂对象
    <<1>>使⽤ ApplicationContext

ApplicationContext context = new ClassPathXmlApplicationContext("spring-con fig.xml");

<<2>>使⽤ BeanFactory


BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));

  1. 获取指定的 Bean 对象
// 1.得到 Spring 上下⽂对象
ApplicationContext context = new ClassPathXmlApplicationContext("spring-con fig.xml");
// 2.加载某个 bean
User user = (User) context.getBean("user");

1.2.4 使用 Bean

public class App {
    public static void main(String[] args) {
        // 1.得到 Spring 上下⽂对象
        ApplicationContext context =
                new ClassPathXmlApplicationContext("spring-config.xml"); 
        // 2.加载某个 bean
        User user = (User) context.getBean("user");
        // 3.调⽤相应的⽅法
        System.out.println(user.sayHi("Java"));
    }
}

1.2.4 使用注解读取和存储对象

  1. 配置扫描路径

在 spring-config.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:content="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 https://www.springframework.org/schema/context/spring-context.xsd">
 
 <content:component-scan base-package="com.bit.service"></content:component-scan>
 
</beans>

在这里插入图片描述

  1. 添加注解存储 Bean 对象
    将对象存储在 Spring 中,有两种注解类型可以实现:
  • 类注解:@Controller(表示业务逻辑层)、@Service(服务层)、@Repository(持久层)、@Component、@Configuration(配置层)。
  • ⽅法注解:@Bean
    类注解是添加到某个类上的,⽅法注解是放到某个⽅法上的。

类注解使用示例:

⽅法注解@Bean 使用示例:

  1. 对象装配

<1> 属性注⼊

示例:

<2>构造⽅法注⼊

示例:

<3> Setter 注⼊

示例:

<4> @Resource注入

<5>使用同⼀类型多个 Bean 报错处理,当出现以下多个 Bean,返回同⼀对象类型时程序会报错。

@Controller
public class UserController5 { 
    // 注⼊
    @Autowired 
    @Qualifier(value = "user2") 
    private User user;

    public User getUser() { 
        return user;
    }
}

2. Bean 详解

2.1 Bean的作用域

2.1.1 singleton

@Component
public class Users {
 	@Bean
 	public User user1() {
 		User user = new User();
 		user.setId(1);
 		user.setName("Java"); // 【重点:名称是 Java】
 		return user;
 	}
}

A ⽤户使⽤时,进⾏了修改操作:

@Controller
public class BeanScopesController {
	 @Autowired
 	 private User user1;
	 public User getUser1() {
		 User user = user1;
		 System.out.println("Bean 原 Name:" + user.getName());
		 user.setName("悟空"); // 【重点:进⾏了修改操作】
		 return user;
	 }
}

B ⽤户再去使⽤公共 Bean :

@Controller
public class BeanScopesController2 {
	 @Autowired
	 private User user1;
	 public User getUser1() {
		 User user = user1;
		 return user;
	 }
}

查看 A ⽤户和 B ⽤户公共 Bean 的值:

public class BeanScopesTest {
 public static void main(String[] args) {
	 ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
 
	 BeanScopesController beanScopesController = context.getBean(BeanScopesController.class);
	 System.out.println("A 对象修改之后 Name:" + beanScopesController.getUser1().toString());
 
	 BeanScopesController2 beanScopesController2 = context.getBean(BeanScopesController2.class);
	 System.out.println("B 对象读取到的 Name:" + beanScopesController2.getUser1().toString());
 }
}

执⾏结果:
在这里插入图片描述

2.1.2 prototype

2.1.3 request

2.1.4 session

2.1.5 application

2.1.6 websocket

2.2 设置Bean的作用域

示例;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
public class Users {
	 @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
	 @Bean(name = "u1")
	 public User user1() {
		 User user = new User();
		 user.setId(1);
		 user.setName("Java"); // 【重点:名称是 Java】
		 return user;
	 }
}

2.2 Bean的生命周期

2.2.1 Spring 执行流程

在这里插入图片描述

2.2.2 Bean 的执行流程

2.2.3 Bean的生命周期

在这里插入图片描述

举报

相关推荐

0 条评论