扩展:Spring系列学习汇总
文章目录
一、如何使用注解进行开发
- 前提开启注解属性支持和指定扫描包的路径!
- 引入context文件头约束!
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--开启属性注解支持-->
<context:annotation-config/>
<!--指定扫描包的路径-->
<context:component-scan base-package="entity"/>
</beans>
1.1、@Component
①实体类:增加 @Component注解
- 代表该类已经被Spring容器来托管了 ,默认是单例的!
@Component
public class Person {
private String name = "大大丁大大";
private int age;
private String like;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", like='" + like + '\'' +
'}';
}
}
②测试类:
public class TestAnonatation {
public static void main(String[] args) {
ApplicationContext Context = new ClassPathXmlApplicationContext("ContextAplication.xml");
Person person = Context.getBean("person",Person.class);
System.out.println(person);
}
}
③执行结果:
④总结:
- 这玩意就相当于xml中的:
<bean id="person" class="dyj.entity.Person">
1.2、@value
-
属性的注入
①实体类: -
@Value 可以用在属性上或者set()方法上!效果一致!
@Component
public class Person {
@Value("大大丁大大")
private String name;
private int age;
private String like;
public void setName(String name) {
this.name = name;
}
@Value("23")
public void setAge(int age) {
this.age = age;
}
public void setLike(String like) {
this.like = like;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", like='" + like + '\'' +
'}';
}
}
②执行结果:
1.3、@Component的衍生注解
①@Controller
- Controller层:@RestController是@Controller+@ResponseBody,这是SpringBoot中常用的注解!
②@Service
- Service层
③@Repository
- dao层:mapper和这个差不多,因为整合了Mybaise!
④总结:
- 这三个注解本质上没啥大的区别,名字不一样只是为了mvc分层而已!
- 都是讲类交给Spring容器来托管!
1.4、@scope的作用域
-
和xml中一致,没啥好细说的
-
singleton:默认的,Spring会采用单例模式创建这个对象。关闭工厂 ,所有的对象都会销毁。
-
prototype:多例模式。关闭工厂 ,所有的对象不会销毁。内部的垃圾回收机制会回收
二、JavaConfig
- 如何完全脱离xml来进行bean的托管和注入呢?
- 在Spring4中JavaConfig正式成为核心功能!
2.1、@Configuration
①无需xml文件了!实体类:
@Component
public class Person {
private String name = "大大丁大大";
private int age = 23;
private String like = "钓鱼";
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getLike() {
return like;
}
}
②新建JavaConfig配置类:
@Configuration//这是一个配置类
public class JavaConfig {
//这个相当于注册一个bean,方法名就是id,返回值就是calss
@Bean
public Person person(){
return new Person();
}
}
③测试类:
public class TestAnonatation {
public static void main(String[] args) {
//这里要传的值是class对象
ApplicationContext context = new AnnotationConfigApplicationContext(Person.class);
Person person = context.getBean("person",Person.class);
System.out.println(person.getAge()+"````"+person.getName()+"`````"+person.getLike());
}
}
④执行结果:
⑤总结:
- 获取对象的方法:new AnnotationConfigApplicationContext(Person.class);
- @Configuration 说明这是一个配置类
- @Bean 这个相当于注册一个bean,方法名就是id,返回值就是calss
2.2、@Import
- 协同开发:多人如何配合?
- @Import(对象class) 导入其他配置类
①新建配置类:
@Configuration
public class JavaConfig2 {
}
②导入其他配置
@Configuration//这是一个配置类
@Import(JavaConfig2.class)
public class JavaConfig {
//这个相当于注册一个bean,方法名就是id,返回值就是calss
@Bean
public Person person(){
return new Person();
}
}
③总结:
- 相当于xml中的 impot 标签
- 可以实现一个主,多个副,协同管理!
路漫漫其修远兮,吾必将上下求索~
如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧**转载请注明出处哦**
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/17094.html