您的位置:首页 > 汽车 > 时评 > 潍坊建站程序_今日最近的新闻大事10条_北京百度关键词推广_网络广告设计

潍坊建站程序_今日最近的新闻大事10条_北京百度关键词推广_网络广告设计

2025/8/12 19:33:12 来源:https://blog.csdn.net/m0_62194704/article/details/146423643  浏览:    关键词:潍坊建站程序_今日最近的新闻大事10条_北京百度关键词推广_网络广告设计
潍坊建站程序_今日最近的新闻大事10条_北京百度关键词推广_网络广告设计

1、声明bean的注解

@Component

@Controller

@Service

@Repository

@Controller@Service@Repository这三个注解都是@Component理论来说这几个注解随便用哪一个都可以,但是为了开发方便我们一般在控制器上会使用@Controller

service类上会用@Service

dao类会用@Repository

他们都可以通过value来指定id及对应xml文件里面bean里面的id

注意

我们在使用上面注解的时候要在pom里面引入依赖

    <dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>6.0.0</version></dependency><!--spring context依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.14</version></dependency>

 再spring.xml里面配置context命名空间

<context:component-scan base-package="com.bac.jing"/>

让它扫描这个包下所有的bean注解

测试

package com.bac.jing;import org.springframework.stereotype.Service;@Service
public class B{public B() {System.out.println("b的构造方法执行");}public void bca(){System.out.println("b的bca执行了");}
}
    @Testpublic void test4(){ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");B b = context.getBean("b", B.class);System.out.println(b);}

可以看到我们这样就不用写xml配置文件了。

2、负责注入的注解

@Value

Value注解可以初始化我们的属性值如

package com.bac.jing;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class User {@Value("雷谋")private String name;@Value("20")private int age;@Value("女")private String address;public User(String address, int age, String name) {this.address = address;this.age = age;this.name = name;}public User() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}
    @Testpublic void test5(){ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");User user = context.getBean("user", User.class);System.out.println(user);}

 可以看到我们的Value里面的值被注入了

  

选择我们试一下把set方法和构造方法删了看一下测试可不可以运行 

好了我们发现这样也可以把值注入 

@Autowired

可以出现在

构造方法上形参上

set方法上

属性上

注解上

我们先来测试属性上

创建一个接口一个实现类

package com.bac.jing;public interface User2 {void say();
}
package com.bac.jing;import org.springframework.stereotype.Service;@Service
public class User2iml implements User2{@Overridepublic void say() {System.out.println("User2iml正在执行");}
}

我们再写一个类然后看一下能不能把User2注入

package com.bac.jing;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class User2s {@Autowiredprivate User2 user2;public User2s(User2 user2) {this.user2 = user2;}public User2s() {}public User2 getUser2() {return user2;}public void setUser2(User2 user2) {this.user2 = user2;}
}

 测试

    @Testpublic void test6(){ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");User2s user2s = context.getBean("user2s", User2s.class);user2s.getUser2().say();}

可以看到我们的User2已经被注入了

那我们试一下没有构造方法和set方法看一下可不可以被注入

 可以看到我们把set和构造方法去掉也可以注入

 构造方法上

可以看到构造方法上也可以运行 

我们也可以这样写

哦豁报错了,那么我们把无参构造方法去掉 

好这下可以了

他还有一个写法当只有一个构造方法的时候可以直接不写注解

set方法上

@Qualifier

我们直接写@Autowired注解是直接通过类型赋值,当有User2有两个实现类的时候就要通过这个来写id

@Resource

这个注解就是在只有一个类型的时候就根据类型注入,没有就根据名字注入

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com