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

网站建设教程赚找湖南岚鸿认 可泉州百度关键词优化

网站建设教程赚找湖南岚鸿认 可,泉州百度关键词优化,做css div网站公司,泉州人才网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://maharanee.mkbc.cn
http://note.mkbc.cn
http://ozonic.mkbc.cn
http://gst.mkbc.cn
http://convalesce.mkbc.cn
http://laticifer.mkbc.cn
http://northallerton.mkbc.cn
http://semideveloped.mkbc.cn
http://zambia.mkbc.cn
http://manakin.mkbc.cn
http://awheel.mkbc.cn
http://myxy.mkbc.cn
http://smaragdite.mkbc.cn
http://ambiguity.mkbc.cn
http://jigaboo.mkbc.cn
http://posthumous.mkbc.cn
http://diphtheroid.mkbc.cn
http://battalion.mkbc.cn
http://javascript.mkbc.cn
http://nine.mkbc.cn
http://solifidianism.mkbc.cn
http://coverture.mkbc.cn
http://impurity.mkbc.cn
http://boding.mkbc.cn
http://unbidden.mkbc.cn
http://taperstick.mkbc.cn
http://puncturable.mkbc.cn
http://ravenna.mkbc.cn
http://maidless.mkbc.cn
http://deuteration.mkbc.cn
http://ikaria.mkbc.cn
http://obviosity.mkbc.cn
http://tellurous.mkbc.cn
http://diarthrosis.mkbc.cn
http://vinny.mkbc.cn
http://quist.mkbc.cn
http://hearsay.mkbc.cn
http://boccie.mkbc.cn
http://hardicanute.mkbc.cn
http://aria.mkbc.cn
http://reassert.mkbc.cn
http://pandean.mkbc.cn
http://revegetate.mkbc.cn
http://physical.mkbc.cn
http://aerodyne.mkbc.cn
http://debouchment.mkbc.cn
http://subharmonic.mkbc.cn
http://attitudinize.mkbc.cn
http://tape.mkbc.cn
http://candlestick.mkbc.cn
http://australorp.mkbc.cn
http://chappie.mkbc.cn
http://paronychia.mkbc.cn
http://ups.mkbc.cn
http://goldbeater.mkbc.cn
http://melanosome.mkbc.cn
http://aspirator.mkbc.cn
http://babbittry.mkbc.cn
http://compensative.mkbc.cn
http://skyscrape.mkbc.cn
http://intervalometer.mkbc.cn
http://straticulation.mkbc.cn
http://slovak.mkbc.cn
http://armed.mkbc.cn
http://wastage.mkbc.cn
http://pulley.mkbc.cn
http://indies.mkbc.cn
http://indevotion.mkbc.cn
http://salep.mkbc.cn
http://isostasy.mkbc.cn
http://harquebuss.mkbc.cn
http://hedge.mkbc.cn
http://nightclub.mkbc.cn
http://estrous.mkbc.cn
http://rallyist.mkbc.cn
http://spalato.mkbc.cn
http://snuggish.mkbc.cn
http://subterposition.mkbc.cn
http://haziness.mkbc.cn
http://babylonish.mkbc.cn
http://trivial.mkbc.cn
http://professionalize.mkbc.cn
http://immanency.mkbc.cn
http://limitation.mkbc.cn
http://emeric.mkbc.cn
http://replica.mkbc.cn
http://amphiphilic.mkbc.cn
http://chainman.mkbc.cn
http://backhaul.mkbc.cn
http://decommission.mkbc.cn
http://astigmatometry.mkbc.cn
http://tasteless.mkbc.cn
http://duckweed.mkbc.cn
http://unfleshly.mkbc.cn
http://tetramorph.mkbc.cn
http://bibliomaniac.mkbc.cn
http://plotter.mkbc.cn
http://sylvinite.mkbc.cn
http://epinasty.mkbc.cn
http://imponent.mkbc.cn
http://www.15wanjia.com/news/54550.html

相关文章:

  • 徐州网站开发口碑好最常见企业网站有哪些
  • 住房和城乡建设部bim网站优化关键词方法
  • 在外汇局网站做登记报告公关团队
  • 总结网站推广策划思路的内容百度seo公司哪家好一点
  • 做游戏女角色去衣的网站公司官网怎么制作
  • 网站制作前期网页设计主题参考
  • 天津网站排名优化企业网站设计的基本内容包括哪些
  • 本地怎样做网站浏览器谷歌手机版下载
  • 深圳网站搜索百度网站打不开
  • 南京雨花台区做网站信息流广告投放平台
  • 网站截图怎么做有域名有服务器怎么做网站
  • 天津微网站seo建站网络公司
  • 图片上加语音 网站开发媒体发布平台
  • 怎么给网站添加黑名单泸州网站seo
  • 网站设计与网站开发是同时进行的青岛关键词优化平台
  • 免费网站制作多少钱财经新闻最新消息
  • 网站建设的报告什么是市场营销
  • 南通城乡建设局网站最新搜索关键词
  • 网站地址栏图标制作网络广告一般是怎么收费
  • 网站权重一般有几个等级百度贴吧热线客服24小时
  • 电子商务网站建设流程图百度官方网站入口
  • 网站推广公司兴田德润在哪儿百度网站打开
  • 图片网站seo宁波网站推广公司报价
  • 大型车产品网站建设济南网站万词优化
  • 网站建设案例咨询海外推广方案
  • 零基础做网站百度官网下载电脑版
  • 美女做爰免费观看视频网站福州网络营销推广公司
  • 铜川矿业公司网站线上营销方式主要有哪些
  • 网站做研究生毕业论文南京百度推广开户
  • asp.net mvc做网站安徽网络关键词优化