公司网站建设公司,php做网站需要注意什么,网站收费标准,青海省建设监理协会网站作者#xff1a;狮子也疯狂 专栏#xff1a;《spring开发》 坚持做好每一步#xff0c;幸运之神自然会驾凌在你的身上 专栏推荐#xff1a;写文章刚刚起步#xff0c;各个专栏的知识点后续会补充完善#xff0c;不断更新好文#xff0c;希望大 家支持一下。 专栏名字El… 作者狮子也疯狂 专栏《spring开发》 坚持做好每一步幸运之神自然会驾凌在你的身上 专栏推荐写文章刚刚起步各个专栏的知识点后续会补充完善不断更新好文希望大 家支持一下。 专栏名字Elasticsearch专栏esspring专栏spring开发redis专栏redis学习笔记项目专栏项目集锦修bug专栏bug修理厂目录一. 前言二. 注解实现配置Ⅰ. 准备工作Ⅱ. 注解实现IOC2.1 Component2.1.1 作用2.1.2 对比与使用2.2 Repository、Service、Controller2.2.1 作用2.2.2 使用2.3 Scope2.3.1 作用2.3.2 使用2.4 Autowired2.4.1 作用2.4.2 使用2.5 Value2.5.1 作用2.5.2 用法2.6 Configuration2.6.1 作用2.6.2 用法2.7 PropertySource2.7.1 作用2.7.2 用法2.8 Bean2.8.1 作用2.8.2 用法三. 总结一. 前言
前面讲解了IOC的基本概念以及操作演示但是spring配置文件较多操作起来相对麻烦。今天我们使用注解来操作实现IOC的功能。
二. 注解实现配置
注解配置和xml配置对于Spring的IOC要实现的功能都是一样的只是配置的形式不一样。
Ⅰ. 准备工作 创建一个新的Spring项目。编写pojodaoservice类。编写空的配置文件 需要用到的连接数据库等配置都已经配置完成。 如果想让该文件支持注解需要添加新的约束头如下
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beans
xmlns:contexthttp://www.springframework.org/schema/context
xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://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
/beansⅡ. 注解实现IOC
2.1 Component 2.1.1 作用
作用用于创建对象放入Spring容器相当于 bean id class 位置类上方 tips 1.要在配置文件中配置扫描的包扫描到该注解才能生效。 context:component-scan base-packagecom.jackie /context:component-scan 2.Component 注解配置bean的默认id是首字母小写的类名。也可以手动设置bean的id值。 2.1.2 对比与使用
eg1 Component
public class StudentDaoImpl implements StudentDao{public Student findById(int id) {// 模拟根据id查询学生return new Student(1,Jackie,茂名);}
}eg2
Component(studentDao)
public class StudentDaoImpl implements StudentDao{public Student findById(int id) {// 模拟根据id查询学生return new Student(1,java,茂名);}
}此时eg1 bean的id为studentDaoImpl 此时eg2 bean的id为studentDao 2.2 Repository、Service、Controller 2.2.1 作用
作用这三个注解和Component的作用一样使用它们是为了区分该类属于什么层。 位置 Repository用于Dao层Service用于Service层Controller用于Controller层 2.2.2 使用
Repository
public class StudentDaoImpl implements StudentDao{}
Service
public class StudentService {}2.3 Scope
2.3.1 作用
作用指定bean的创建策略 位置类上方 取值singleton prototype request session globalsession
2.3.2 使用
Service
Scope(singleton)
public class StudentService {}2.4 Autowired
2.4.1 作用
作用从容器中查找符合属性类型的对象自动注入属性中。用于代替 bean 中的依赖注入配置。
位置属性上方、setter方法上方、构造方法上方。
2.4.2 使用
eg1 Autowired 写在属性上方进行依赖注入时可以省略setter方法。
Component
public class StudentService {Autowiredprivate StudentDao studentDao;public Student findStudentById(int id){return studentDao.findById(id);}
}
Test
public void t2(){ApplicationContext ac new ClassPathXmlApplicationContext(bean.xml);StudentService studentService (StudentService) ac.getBean(studentService);System.out.println(studentService.findStudentById(1));
}eg2容器中没有对应类型的对象会报错
// 如果StudentDaoImpl没有放到容器中会报错
//Component(studentDao)
public class StudentDaoImpl implements StudentDao{public Student findById(int id) {// 模拟根据id查询学生return new Student(1,Jackie,茂名);}
}eg3容器中有多个对象匹配类型时会找beanId等于属性名的对象找不 到会报错。
// 如果容器中都多个同类型对象会根据id值等于属性名找对象
Component(studentDao)
public class StudentDaoImpl implements StudentDao{public Student findById(int id) {// 模拟根据id查询学生return new Student(1,Jackie,茂名);}
}Component
public class StudentDaoImpl implements StudentDao{public Student findById(int id) {// 模拟根据id查询学生return new Student(1,Jackie,茂名);}
}2.5 Value
2.5.1 作用
作用注入String类型和基本数据类型的属性值。 位置属性上方
2.5.2 用法
eg1直接设置固定的属性值
Service
public class StudentService {Value(1)private int count;Value(hello)private String str;
}eg2获取配置文件中的属性值
编写配置文件db.properties
jdbc.usernameroot
jdbc.password123456spring核心配置文件扫描配置文件
context:property-placeholder locationdb.properties
/context:property-placeholder注入配置文件中的属性值
Value(${jdbc.username})
private String username;Value(${jdbc.password})
private String password;2.6 Configuration
2.6.1 作用
作用纯注解实现IOC需要一个Java类代替xml文件。这个Java类上方需要添 加Configuration表示该类是一个配置类作用是代替配置文件。 位置配置类上方 tips Configuration 一般配合ComponentScan指定spring在初始化容器时扫描的包使用。 2.6.2 用法
eg1
Configuration
ComponentScan(com.jackie)
public class SpringConfig {
}2.7 PropertySource
2.7.1 作用
作用代替配置文件中的 context:property-placeholder 扫描配置文件 位置配置类上方 注意配置文件位置前要加关键字 classpath
2.7.2 用法
Configuration
PropertySource(classpath:db.properties)
public class JdbcConfig {Value(${jdbc.username})private String username;Value(${jdbc.password})private String password;
}2.8 Bean
2.8.1 作用
作用将方法的返回值对象放入Spring容器中。如果想将第三方类的对象放入容器可以 使用Bean 位置配置类的方法上方。 属性name给bean对象设置id tipsBean修饰的方法如果有参数spring会根据参数类型从容器中查找可用对象。
2.8.2 用法
eg1 如果想将jdbc连接对象放入Spring容器因为我们无法修改Connection源码所以无法添加Component将其放到spring容器中此时就需要使用将Bean该对象放入Spring容器 将Connection对象放入Spring容器:
Bean(name connection)
public Connection getConnection(){try {Class.forName(com.mysql.cj.jdbc.Driver);return DriverManager.getConnection(jdbc:mysql:///mysql, root, root);}catch (Exception e) {return null;}
}三. 总结
基于注解式开发spring相对来说比较少但是理解这些注解的作用会对后面学习spring boot产生比较大的影响。所以还是应该重视一下多用多做就能掌握啦。今天的分享到此结束我是狮子希望可以帮到您。