当前位置: 首页 > news >正文

团购产品 网站建设编辑制作网页的基础是

团购产品 网站建设,编辑制作网页的基础是,wordpress 插件路由,详情页设计费Spring Framework Spring的两个核心IOC控制反转IOC容器依赖注入DIIOC容器实现注解管理BeanBean对象定义Bean对象获取 AOP面向切面编程 添加依赖入门案例注解通过Spring创建Java bean对象 xml管理Bean案例main下创建bean.XMl文件 DI依赖注入案例创建Spring配置文件 bean-di.xml …

Spring Framework

  • Spring的两个核心
    • IOC控制反转
      • IOC容器
      • 依赖注入DI
      • IOC容器实现
      • 注解管理Bean
        • Bean对象定义
        • Bean对象获取
    • AOP面向切面编程
  • 添加依赖
  • 入门案例
    • 注解
    • 通过Spring创建Java bean对象
  • xml管理Bean案例
    • main下创建bean.XMl文件
  • DI依赖注入案例
    • 创建Spring配置文件 bean-di.xml
  • 注解管理Bean案例

Spring的两个核心

IOC控制反转

  • Inverse of Control的简写,为 控制反转,指是将对象的创建和管理交由Spring框架来完成,而不是由开发人员手动创建和管理

  • 即:反转资源获取方向,把自己创建资源、向环境索取资源的方式变为环境自动将资源准备好,我们享受资源注入

IOC容器

  • IoC容器是用来实现IoC思想的一个工具或者说技术手段

  • 它能够自动扫描应用程序中的对象,将它们实例化,并自动注入它们所需要的依赖对象,使应用程序的开发人员能够更加专注于业务逻辑的实现,而不用关心对象的创建和管理。Spring通过IoC容器来管理所有的Java对象的实例化和初始化,控制着对象与对象之间的依赖关系

依赖注入DI

  • DI (Dependency Injection):依赖注入,依赖注入实现了控制反转的思想,是指Spring创建对象的过程中,将对象依赖属性通过配置进行注入
  • 所以 IoC 是一种控制反转的思想,而依赖注入 DI 是对 IoC 的一种具体实现
  • Bean管理:指Bean对象的创建,以及Bean对象中属性的赋值

IOC容器实现

Spring中的IoC容器就是IoC思想的一个落地产品实现。IoC容器中管理的组件也叫做bean。在创建bean之前,首先需要创建IoC容器,Spring提供了IoC容器的两种实现方式

  • BeanFactory
    这是IoC容器的基本实现,是Spring内部使用的接口,面向Spring本身,不提供给开发人员使用。

  • ApplicationContext
    BeanFactory的子接口,提供了更多高级特性,面向Spring的使用者,几乎所有场合都使用 ApplicationContext,而不使用底层的BeanFactory。

ApplicationContext的主要实现类

类型说明
AnnotationConfigApplicationContext使用注解方式构建IoC容器
ClassPathXmlApplicationContext使用XML配置文件方式构建Spring IoC容器

注解管理Bean

Bean对象定义

在Spring框架规范中,所有由spring管理的对象都称之为Bean对象。
Spring提供了以下多个注解,这些注解可以直接标注在java类上,将它们定义成Spring Bean。

注解说明
@Component该注解用于描述Spring中的Bean,它是一个泛化的概念,仅仅标识容器中的一个组件(Bean),并且可以作用在任何层次,例如Service层、Dao层等,使用时只需将该注解标注在相应的类上即可。
@Repository该注解用于数据访问层(Dao层)的类标识为Spring中的Bean,功能与@Component相同。
@Service该注解通常作用在业务层(Service层),用于将业务层的类标识为Spring中的Bean,其功能与@Component相同。
@Controller该注解通常作用在控制层(如SpringMVC的Controller),用于将控制层的类标识为Spring中的Bean,其功能与@Component相同。
Bean对象获取
ApplicationContext context = new AnnotationConfigApplicationContext("包扫描路径");
User user = context.getBean(类名.class);

请添加图片描述

AOP面向切面编程

Aspect Oriented Programming 的简写,为 面向切面编程。AOP用来封装多个类的公共行为,将那些与业务无关,却为业务模块共同调用的逻辑封装起来,减少系统的重复代码。
请添加图片描述

添加依赖

<dependencies><!-- Maven坐标:https://mvnrepository.com/artifact/org.springframework/spring-context --><!-- 引入spring context依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.24</version></dependency>
</dependencies>

入门案例

注解

  • @Component
    注解描述的类,表示此类交给Spring框架管理
package cn.tedu.spring.example;
import org.springframework.stereotype.Component;@Component
public class User {public void userRun(){System.out.println("User is do something~~");}
}

通过Spring创建Java bean对象

  • AnnotationConfigApplicationContext扫描这个包中所有带有@Component注解的类,并根据这些类创建相应的Spring组件
package cn.tedu.spring.example;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class TestUser {public static void main(String[] args) {ApplicationContext context = new AnnotationConfigApplicationContext("cn.tedu.spring.example");User user1 = context.getBean(User.class);System.out.println("user1 = " + user1);user1.userRun();}
}

请添加图片描述

xml管理Bean案例

  • 在Spring框架中,Bean的配置可以通过 XML 文件来完成。这个文件通常被称为 Spring 配置文件或 Spring XML 文件。
package cn.tedu.spring.example;public class UserXml {private String username;private String password;public void run(){System.out.println("今天天气不错挺风和日丽的~");}
}

main下创建bean.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"><bean id="userXml" class="cn.tedu.spring.example.UserXml"></bean>
</beans>
package cn.tedu.spring.example;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestUserXml {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");UserXml userXml = (UserXml)context.getBean("userXml");userXml.run();}
}

请添加图片描述

DI依赖注入案例

package cn.tedu.spring.dibase;public class Book {private String bookName;private String bookAuthor;public void setBookName(String bookName) {this.bookName = bookName;}public void setBookAuthor(String bookAuthor) {this.bookAuthor = bookAuthor;}@Overridepublic String toString() {return "Book{" +"bookName='" + bookName + '\'' +", bookAuthor='" + bookAuthor + '\'' +'}';}
}

创建Spring配置文件 bean-di.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"><bean id="book" class="cn.tedu.spring.dibase.Book"><property name="bookName" value="倚天屠龙记" /><property name="bookAuthor" value="金庸"/></bean>
</beans>
package cn.tedu.spring.dibase;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("bean-di.xml");Book book = context.getBean(Book.class);System.out.println("book = " +book);}
}

请添加图片描述

注解管理Bean案例

  • @Value
    ​ @Value注入是将属性值直接注入到bean中,主要用于注入一些简单类型的属性(如字符串、基本类型等);
    使用时需要注意属性的类型和格式,否则会导致注入失败。
  • @Autowired
    @Autowired注入是将对象注入到bean中,并且在注入对象时会根据依赖注入容器中 bean的类型 进行匹配。
    如果容器中有多个类型匹配的bean存在,则会抛出异常。因此,@Autowired注入常用于注入复杂对象、接口类型的属性或其他bean实例。
package cn.tedu.spring.bean;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;@Repository
public class UserDao {@Value("jdbc:mysql://localhost:3306/tedu")private String dbUrl;@Value("root")private String username;private String password;@Value("qwertyuiop")public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "UserDao{" +"dbUrl='" + dbUrl + '\'' +", username='" + username + '\'' +", password='" + password + '\'' +'}';}
}
package cn.tedu.spring.bean;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;@Service
public class UserService {@Value("注册业务")private String serveName;@Autowiredprivate UserDao userDao;@Overridepublic String toString() {return "UserService{" +"serveName='" + serveName + '\'' +", userDao=" + userDao +'}';}
}
package cn.tedu.spring.bean;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class TestUserDao {@Testpublic void testBean(){ApplicationContext context = new AnnotationConfigApplicationContext("cn.tedu.spring.bean");UserDao userDao = context.getBean(UserDao.class);System.out.println("userDao = " + userDao);}public static void main(String[] args) {ApplicationContext context = new AnnotationConfigApplicationContext("cn.tedu.spring.bean");UserService userService = context.getBean(UserService.class);System.out.println("userService:"+ userService);}
}
http://www.yayakq.cn/news/729989/

相关文章:

  • 外贸联系网站镇江哪里做网站
  • 外包做的网站怎么维护织梦批量修改网站源代码
  • 如何注册域名?成本多少百度关键词seo排名软件
  • python做的网站如何部署网页图片保存
  • 做简单网站需要学什么软件有哪些做网站的公司吉林
  • 企业网站手机端跳转设置wordpress怎么给网站设置几种语言
  • 建网站 企汇网最低多少钱可以注册公司
  • 建站 手机网站北京app开发定制公司
  • 彩妆网站建设简述网站开发步骤
  • 网站建设属于前端还是后台waP六感程序建设网站
  • 个人网站的设计与实现摘要沈阳建设工程许可公示版
  • 学校网站建设主体备案用什么网站名称好
  • 网站控制板面多语种网站怎么做搜索引擎排名
  • 网站内容和功能清单卫生计生加强门户网站建设
  • 郴州企业网站建设制作天河做网站设计
  • 汕头网站建设推广建设教育协会培训网站
  • 广州网站seo营销模板上线了做的网站怎么办
  • 如何线下宣传网站铁岭 开原网站建设
  • 需要企业网站开发事业单位网站开发工作规程
  • 织梦的手机端网站建站快车代理商
  • 合肥 网站平台建设公司品牌网站首页设计
  • 子网站如何做徐州网站建设网站制作
  • 可做实名认证的网站电子商务网站规划开发实训教程
  • 社交网站做强王烨身世
  • 做二手电脑的网站网站开发需要哪些部门
  • 中国有兼职网站开发网站吗学校网站asp
  • 哪家公司建5g基站wordpress html音乐播放器
  • 好的网站建设技术2022千锋教育培训收费一览表
  • 吉林网站优化施工企业会计实务
  • 做网站用是内网穿透好wordpress封装小程序