spring第五篇

李俊----互联网技术传播者      2022-04-27     265

关键词:

在Spring第四篇中 我们主要介绍了set get的注入方式

在Spring第五篇中 我们主要介绍使用注解配置Spring 主要分为两个步骤

1 导包的同时引入新得约束 导包如下

  1.1 重写注解代理配置文件 代码如下

  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd ">
<context:component-scan base-package="cn.lijun.bean"></context:component-scan>
</beans>

   1.2 在上一篇的基础上 建立bean包 并且建立User和Phoe两个类,并且生成相关的get set 方法

   1.3 将对象注册到容器

   代码如下

@Component("user")    同时为了便于开发  也有@Service("user")   @Controller("user")    @Repository("user")

1.4 Demo测试类

代码如下

package cn.lijun.Demo;

import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.lijun.bean.User;

public class Demo {
@Test
public void fun1(){
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
User u = (User)ac.getBean("user");
User u1 = (User)ac.getBean("user");
System.out.println(u1==u);
}
}

2 值类型注入  

  通过set方法赋值  代码如下

package cn.lijun.bean;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component("user")
@Scope(scopeName="singleton")
public class User {
private String name;
private Integer age;
@Resource(name="phone")
private Phoe phone;
public String getName() {
return name;
}
@Value("lijun")
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Phoe getPhone() {
return phone;
}
public void setPhone(Phoe phone) {
this.phone = phone;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", phone=" + phone + "]";
}

}

 

 

package cn.lijun.bean;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component("phone")
public class Phoe {
private String name;
private String color;
public String getName() {
return name;
}
@Value("小米9")
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
@Value("珀金黑")
public void setColor(String color) {
this.color = color;
}
@Override
public String toString() {
return "Phoe [name=" + name + ", color=" + color + "]";
}

}

 

package cn.lijun.Demo;

import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.lijun.bean.User;

public class Demo {
@Test
public void fun1(){
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
User u = (User)ac.getBean("user");
//User u1 = (User)ac.getBean("user");
System.out.println(u);
//System.out.println(u1==u);
}
}

运行结果如下

User [name=lijun, age=null, phone=Phoe [name=小米9, color=珀金黑]]

 

注意 当给引用类型赋值时 需要先把该引用类型交给spring管理,如上面例子中Phone类 需要先@Component("phone")
然后在User中指定    @Resource(name="phone")   在Phone类中再进行赋值。

第五篇:springboot整合mybatis

前言  前面两篇文章和读者聊了SpringBoot中最简单的数据持久化方案JdbcTemplate,JdbcTemplate虽然简单,但是用的并不多,因为它没有MyBatis方便,在Spring+SpringMVC中整合MyBatis步骤还是有点复杂的,要配置多个Bean,SpringBoot中对此做了... 查看详情

第五篇:springcloudeureka权限认证

...就有风险了如何解决这个问题呢?加用户认证即可,通过spring-security来开始用户认证开启安全认证,并且配置用户信息重新启动注册中心,访问http://localhost:8761/此时浏览器会提示你输入用户名和密码,输入正确后才能继续访问Eu... 查看详情

第五篇:常用模块

第五篇:常用模块   PYTHON-模块time&datetime+目录规范PYTHON-模块-time&datetime-练习+目录规范PYTHON-模块sysosrandomshutilPYTHON-模块sysosrandomshutil-练习PYTHON-模块jsonpickleshelvexmlPYTHON-模块logginghashlibPY 查看详情

关于ajax第五篇

AJAX-服务器 响应如需获得来自服务器的响应,请使用XMLHttpRequest对象的responseText或responseXML属性。AJAX- onreadystatechange 事件当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当readyState改变时,就会触发onr... 查看详情

第五篇uber启动视频播放

importUIKitimportAVFoundationclassGuidePage:FxBasePage{@IBOutletvarbackImageView:UIImageView?varplayer:AVPlayer!varplayerItem:AVPlayerItem!varlocation:FxLocation!overrideinit(nibNamenibNameOrNil:Strin 查看详情

第五篇vggnet——论文翻译

文章目录摘要1引言2ConvNet配置2.1架构2.2配置2.3讨论3分类框架3.1训练3.2测试3.3实现细节 查看详情

第五篇vggnet——论文翻译

文章目录摘要1引言2ConvNet配置2.1架构2.2配置2.3讨论3分类框架3.1训练3.2测试3.3实现细节 查看详情

htmldom第五篇

通过HTMLDOM,JavaScript能够访问HTML文档中的每个元素。HTMLDOM允许您在事件发生时执行代码。当HTML元素"有事情发生"时,浏览器就会生成事件:在元素上点击加载页面改变输入字段添加、删除和替换HTML元素HTMLDOM允许JavaScript对HTML事... 查看详情

第五篇高可用配置中心config-server(svn版)(代码片段)

一新建module引入config-server依赖<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency&g 查看详情

开始写游戏---第五篇

开始写游戏---第五篇  今天写了一个这个组件:        代码:          用的时候这么用:               这是组件的运行效果:      写是写好了。。。但是我发现,之前写... 查看详情

团队第五篇

这一周,我们主要运用本学期所学的数据库知识来完成。用所学的SQL语句来对上周所建立的数据表进行创建。下面是小组成员创建的语句及截图:用户(用户名,电话,会员等级,积分)createtableUsers(U#char(6)notnull,Namechar(8)notnull,Phone... 查看详情

小白入门深度学习|第五篇:数据不均衡的处理方法

前言: 查看详情

第五篇二叉搜索树

 typedefstructnode{intnum;structnode*left;structnode*right;}Node;typedefstruct{Node*root;}Tree;/***@brief建树*/Tree*createTree(){Tree*tree=malloc(sizeof(Tree));tree->root=NULL;returntree;}/***@b 查看详情

第五篇:模块

 定义模块              一、模块基本概念1、模块是从逻辑上组织python代码的形式2、当代码量变得相当大的时候,最好把代码分成一些有3、组织的代码段,前提是保证它们的... 查看详情

第五篇css补充二

h1{background-color:palegreen}一、内容概要1、图标2、目录规划3、a标签中的img标签在浏览器中的适应性4、后台管理系统设置5、边缘提示框6、登录页面图标7、静态对话框8、加减框补充知识:line-height是行高,也可以定义行间距用法:... 查看详情

第五篇:初识jvm,jvm自动内存管理

目录 一、前言1.1计算机==>操作系统==>JVM1.1.1虚拟与实体(对上图的结构层次分析) 查看详情

第五篇:初识jvm,jvm自动内存管理

目录 一、前言1.1计算机==>操作系统==>JVM1.1.1虚拟与实体(对上图的结构层次分析) 查看详情

flask第五篇分页

一、flask实现的分页组件fromurllib.parseimporturlencode,quote,unquoteclassPagination(object):"""自定义分页"""def__init__(self,current_page,total_count,base_url,params,per_page_count=10,max_pager_count=11):try:curren 查看详情