海口网站建设服务吕梁营销型网站建设费用

当前位置: 首页 > news >正文

海口网站建设服务,吕梁营销型网站建设费用,2023最新15件重大新闻,新手wordpress添加注册表#x1f40c;个人主页#xff1a; #x1f40c; 叶落闲庭 #x1f4a8;我的专栏#xff1a;#x1f4a8; c语言 数据结构 javaweb 石可破也#xff0c;而不可夺坚#xff1b;丹可磨也#xff0c;而不可夺赤。 Spring注解开发 一、注解开发定义Bean二、纯注解开发Bean三… 个人主页 叶落闲庭 我的专栏 c语言 数据结构 javaweb 石可破也而不可夺坚丹可磨也而不可夺赤。 Spring注解开发 一、注解开发定义Bean二、纯注解开发Bean三、bean的管理3.1bean的作用范围3.2bean的生命周期 四、注解开发依赖注入五、bean管理5.1第三方bean管理5.2第三方bean依赖注入5.2.1简单依赖注入5.2.2引用依赖注入 一、注解开发定义Bean 使用Component定义bean: Component(bookDao) public class BookDaoImpl1 implements BookDao {Overridepublic void save() {System.out.println(BookDao save…);} } 核心配置文件中通过组件扫描加载bean: context:component-scan base-packagecom.practice/代码效果 public class App1 {public static void main(String[] args) {ApplicationContext act new ClassPathXmlApplicationContext(applicationContext1.xml);BookDao bookDao (BookDao) act.getBean(bookDao);System.out.println(bookDao);//按类型找BookService bookService act.getBean(BookService.class);System.out.println(bookService);} }Spring提供Component注解的三个衍生注解 Controller用于表现层bean定义Service用于业务层bean定义Repository用于数据层bean定义
二、纯注解开发Bean java类代替了Spring核心配置文件Spring核心配置文件 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:contexthttp://www.springframework.org/schema/contextxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdcontext:component-scan base-packagecom.practice/ /beansjava类 Configuration ComponentScan(com.practice) public class SpringConfig {}Configuration表示配置文件当前类为配置类ComponentScan表示扫描包下的配置信息设定扫描路径此注解只能添加一次多个数据请用数组格式。 ComponentScan({com.practice.dao,com.practice.service})读取Spring核心配置文件初始化容器切换为读取Java配置类初始化容器对象 //读取Spring核心配置文件 ApplicationContext act new ClassPathXmlApplicationContext(applicationContext1.xml);//读取Java配置类 ApplicationContext act new AnnotationConfigApplicationContext(SpringConfig.class);三、bean的管理 3.1bean的作用范围 单例对象 Repository(bookDao1) Scope(singleton) public class BookDaoImpl2 implements BookDao {Overridepublic void save() {System.out.println(BookDao save…);} }Configuration ComponentScan(com.practice) public class SpringConfig {}public class AppForAnnotation1 {public static void main(String[] args) {ApplicationContext act new AnnotationConfigApplicationContext(SpringConfig.class);BookDao bookDao1 (BookDao) act.getBean(bookDao1);BookDao bookDao2 (BookDao) act.getBean(bookDao1);System.out.println(bookDao1);System.out.println(bookDao2);} }非单例 Repository(bookDao1) Scope(singleton) public class BookDaoImpl2 implements BookDao {Overridepublic void save() {System.out.println(BookDao save…);} }Configuration ComponentScan(com.practice) public class SpringConfig {}public class AppForAnnotation1 {public static void main(String[] args) {ApplicationContext act new AnnotationConfigApplicationContext(SpringConfig.class);BookDao bookDao1 (BookDao) act.getBean(bookDao1);BookDao bookDao2 (BookDao) act.getBean(bookDao1);System.out.println(bookDao1);System.out.println(bookDao2);} }使用Scope(singleton)定义bean的作用范围 3.2bean的生命周期 使用PostConstruct、PreDestroy定义bean的生命周期 Repository(bookDao1) Scope(singleton) public class BookDaoImpl2 implements BookDao {Overridepublic void save() {System.out.println(BookDao save…);}PostConstructpublic void init() {System.out.println(BookDao init…);}PreDestroypublic void destroy() {System.out.println(BookDao destroy…);}}四、注解开发依赖注入 使用Autowired注解开启自动装配模式按类型 Service public class BookServiceImpl implements BookService {Autowiredprivate BookDao bookDao;Overridepublic void save() {System.out.println(bookService save…);bookDao.save();} }自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据因此无需提供setter方法自动装配建议使用无参构造方法创建对象默认如果不提供对应构造方法请提供唯一的构造方法使用Qualifier注解开启指定名称装配bean Service public class BookServiceImpl implements BookService {AutowiredQualifier(bookDao2)private BookDao bookDao;Overridepublic void save() {System.out.println(bookService save…);bookDao.save();} }注意Qualifier注解无法单独使用必须配合Autowired注解使用使用Value()实现简单注入 Repository(bookDao)public class BookDaoImpl1 implements BookDao {Value(practice)private String name;Overridepublic void save() {System.out.println(BookDao save… name);} }使用PropertySource注解加载properties文件 Configuration ComponentScan(com.practice) PropertySource({jdbc3.properties}) public class SpringConfig { }注意路径仅支持单一文件配置多文件请使用数组格式配置不能使用通配符* 五、bean管理 5.1第三方bean管理 使用Bean配置第三方bean public class JdbcConfig {//1.定义方法获得要管理的对象//2.添加注解Beanpublic DataSource dataSource(){DruidDataSource ds new DruidDataSource();ds.setDriverClassName(com.mysql.jdbc.Driver);ds.setUrl(jdbc:mysql://localhost:3306/mybatis);ds.setUsername(root);ds.setPassword(123456);return ds;} }将独立的配置类加入核心配置 方式一导入式
public class JdbcConfig {//1.定义方法获得要管理的对象//2.添加注解Beanpublic DataSource dataSource(){DruidDataSource ds new DruidDataSource();ds.setDriverClassName(com.mysql.jdbc.Driver);ds.setUrl(jdbc:mysql://localhost:3306/mybatis);ds.setUsername(root);ds.setPassword(123456);return ds;} } 使用注解手动加入配置类到核心配置此注解只能添加一次多个数据采用数组形式 Import({JdbcConfig.class}) public class SpringConfig { }将独立的配置加入核心配置方式二扫描式 Configuration public class JdbcConfig {//1.定义方法获得要管理的对象//2.添加注解Beanpublic DataSource dataSource(){DruidDataSource ds new DruidDataSource();ds.setDriverClassName(com.mysql.jdbc.Driver);ds.setUrl(jdbc:mysql://localhost:3306/mybatis);ds.setUsername(root);ds.setPassword(123456);return ds;} }使用注解扫描配置类所在的包加载对应的配置类信息 Configuration ComponentScan(com.practice) public class SpringConfig { }5.2第三方bean依赖注入 5.2.1简单依赖注入 public class JdbcConfig {Value(com.mysql.jdbc.Driver)private String driver;Value(jdbc:mysql://localhost:3306/mybatis)private String url;Value(root)private String userName;Value(123456)private String passWord;//1.定义方法获得要管理的对象//2.添加注解Beanpublic DataSource dataSource(){DruidDataSource ds new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(passWord);return ds;} }5.2.2引用依赖注入 引用类型注入只需要为bean定义方法设置形参即可容器会根据类型自动装配对象 Beanpublic DataSource dataSource(BookService bookService){DruidDataSource ds new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(passWord);return ds;}