Spring-Day4

12.HelloSpring

复制代码
<?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:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
<!--使用spring来创建对象,在spring这些都称为bean
    类型 变量名 = new 类型();
    Hello hello = new Hello();
​
    id = 变量名
    class = new 的对象
    property 相当于给对象中是属性设置一个值
​
-->
​
    <bean id="hello" class="com.itheima.App">
        <property name="str" value="Spirng"/>
    </bean>
</beans>

接下来,将对象取出来

复制代码
public class MyTest {
    public static void main(String[] args) {
        //获取Spring的上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //我们的对象都在Spring中管理了,要使用去里面取
        App hello =(App)context.getBean("hello");
        System.out.println(hello.toString());
    }
}

通过spring创建对象

复制代码
<?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:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
​
    <bean id="mysqlImpl" class="com.itheima.dao.UserDaoMysqlImpl"/>
    <bean id="UserServiceImpl" class="com.itheima.service.UserServiceImpl">
<!--
      ref:引用spring容器中创建好的对象
      value:具体的值,基本数据类型
      -->
        <property name="userDao" ref="mysqlImpl"/>
    </bean>
</beans>
          
          
     
//在Mytest中取出
          public class MyTest {
    public static void main(String[] args) {
        //获取ApplicationContext:拿到Spring 的容器
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //容器有了之后,需要什么get什么
        UserServiceImpl userService = (UserServiceImpl) context.getBean("UserServiceImpl");
        UserServiceImpl.getUser();
    }
}

到了现在,我们彻底不用在程序中去改动了,要实现不同的操作,只需要在xml配置文件中修改,所谓的Ioc,一句话就是:对象由Spring来创建,管理,装配!

13.IOC创建对象的方式

  1. 使用无参构造创建对象,默认

  2. 假设要用有参构造创建对象

    复制代码
    //1.下标赋值
    <bean id="user" class="com.itheima.pojo.User">
        <constructor-arg index="0" value="Zkw"/>
    </bean>
        
    ​
    //2.通过类型创建(不建议使用)
    <bean id="user" class="com.itheima.pojo.User">
        <constructor-arg type="java.lang.String" value="Zkw"/>
    </bean>
        
        
    //3.通过参数名
    <bean id="user" class="com.itheima.pojo.User">
        <constructor-arg name="name(参数名)" value="Zkw"/>
    </bean>

总结:在配置文件加载的时候,容器中管理的对象就已经初始化了

13.注解实现自动装配

  1. 导入约束:context约束

  2. 配置注解的支持:context:annotation-config

复制代码
<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd"
    //开启注解支持
    <context:annotation-config>
</beans>
        
        
//具体的修改方法:
  //将xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"修改为
  //xmlns:context="http://www.springframework.org/schema/context"
  //然后复制后两行,把beans改成context即可,aop导入也是如此

@Autowired

直接在属性上使用即可,也可以在set方法上使用

使用Autowired 我们可以不用编写set方法了,前提是自动装配属性在IOC容器中存在,且名字正确

可以配合**@Qualifier(value="")**来指定名字

@Resource也可以,它会先查找名字,没有对应名字再去找对应的类型,也可以加个name属性来指定

相关推荐
利威尔xu16 小时前
Go IM 源码实战(7):断线三天重连,水位算错就漏消息
redis·后端·微服务·面试·golang
我的xiaodoujiao16 小时前
Django 权限系统项目实战详细图文教程 4--系统登录功能实现 2
后端·python·django
范同学~17 小时前
项目添加水印
java·前端·javascript
月夏17 小时前
前端第一次接自己的后端:mock 切真接口踩了 2 个坑,组件只改了一行 import
前端·后端·node.js
快乐的韭菜根根17 小时前
Slurm 指定 GPU 卡:`File=/dev/nvidiaX` 映射的坑与修复
java·服务器·网络
IT_陈寒17 小时前
React实战技巧总结:如何优雅处理复杂列表的渲染卡顿问题?
前端·人工智能·后端
酣大智17 小时前
hibernate学习笔记
java·hibernate·session
careathers18 小时前
【数据结构】基于比较的排序算法 - 插入排序
java·数据结构·排序算法
打工仔折腾 AI18 小时前
后端部署避坑:吃透IPv4地址、网络接口与CIDR前缀的实际应用
arm开发·人工智能·后端·python·性能优化
街头便衣18 小时前
OpenRouter周榜复算:164万亿token,输出2.55%,DeepSeek账单占1.4%
android·java·开发语言·人工智能·语言模型·开源